---
# System prepended metadata

title: Facebook Messenger
tags: [GSS, LDL]

---

Facebook Messenger
===
###### tags: `GSS` `LDL`
## 1.使用Facebook Messenger

(1) 需要建立一個 Facebook Messenger 的粉絲專頁 

* [Fecebook 粉絲專頁註冊頁面](https://www.facebook.com/pages/creation/)

(2) 需要在 [Facebook Developer](https://developers.facebook.com/apps) 頁面申請 Facebook App

* 取得以下東西

    * 粉絲專頁權杖 產品->messenger->設定->存取權杖->產生權杖
    * 驗證權杖(自行設定或亂數產生) 產品->messenger->設定->webhook->編輯回呼網址
    * 應用程式密鑰 設定->基本資料->應用程式密鑰

(3) 透過後台管理介面 或 Bot 管理 API 新增一個 Bot Channel

(4) 註冊 Facebook Channel 所需要的設定

* pageAccessToken - `步驟2` 取得的粉絲專頁權杖
* facebookVerifyToken - `步驟2` 取得的驗證權杖
* facebookAppSecret - `步驟2` 取得的應用程式密鑰

```jsonld=
{
    ...,
    "channelHook": {
        "facebook": {
            "pageAccessToken": "",
            "facebookVerifyToken": "",
            "facebookAppSecret": ""
        }
    }
}
```

(5) 在 [Facebook Developer](https://developers.facebook.com/apps) 頁面調整以下設定

* 在基本資料頁面將應用程式網域設定為 LDL 的 Domain
![](https://i.imgur.com/VA3TZMF.png)

* 在 Messenger 頁面編輯粉絲專頁 WebHooks 訂閱項目 訂閱以下四個欄位
![](https://i.imgur.com/lv5xHsC.png)


* WebHook 的回呼網址是 [LDLdomain]/facebook/[botId]
![](https://i.imgur.com/dyw2eyU.png)



## 2.Facebook Messenger 的使用限制
#### (1) 訊息格式的轉換

| Bot Framework Message | Facebook Messenger                        |
| --------------------- | ----------------------------------------- |
| Text                  | Text                                      |
| Suggested Action      | Quick Reply Message                       |
| Image                 | Image                                     |
| Audio                 | Audio   (尚未支援)                                  |
| Video                 | Video   (尚未支援)                                  |
| Hero Card             | Template Message                          |
| Thumbnail Card        | Template Message                          |
| SignIn Card           | Template Message                          |
| Receipt Card          | Template Message                          |
| Animation Card        | N/A                                       |
| Audio Card            | N/A                                       |
| Video Card            | N/A                                       |
| Adaptive Card         | N/A                                       |
註：Template Message 需要放在 channel data 中

#### (2) 一般訊息的限制 (文字、圖片、聲音、影像)

* **文字** (Text Message)
    * text 最多 **320** 個字
* **圖片**  (Image Message，包含 Animation Card 的 Image)
    * 圖片連結必須是有效的
    * 支援的圖片格式是 **jpg**、**png**
    * Url 字數沒有限定，支援的協定：HTTP、HTTPS
    * 最大支援 25MB 的照片

#### (3) 卡片格式的限制 (使用 Template Message)


* 可以在桌機版和手機版上看到卡片內容
* 格式限制比Template Message 寬鬆許多
* **文字**
    * title 和 subtitle 最多 **80** 個字
    * text 最多 **320** 個字
* **圖片**
    * 支援的圖片格式是 **jpg**、**png**
    * Url 字數沒有限定，支援的協定：HTTP、HTTPS
    * 最大支援 25MB 的照片
* **按鈕數量**
    * 一張卡片按鈕數量最多3個
* **按鈕 Action**
    * Postback Action (Postback)
        * Button Label 最多 **640** 個字
        * payload 最多 **1000** 個字
    * URL Action (OpenUrl)
        * Button Label 最多 **20** 個字
        * Url 字數沒有限定，支援的協定：HTTP、HTTPS
* **Gallery** (多個卡片橫向擺置)
    * 最多可以容納10張卡片

* 詳細可以查看[Facebook Messenger官方文件](https://developers.facebook.com/docs/messenger-platform/reference)

註：由於 facebook 一張卡片最多只能放一張照片和三個按鈕，若是傳送過來的卡片超過一張照片或三張按鈕，會把卡片向右延伸，如果照片不夠使用，會使用最後一張的照片，若按鈕不夠，會使用最後一張卡片的按鈕


#### (4) Quick Reply Message

* 支援以下按鈕 Action，最多13個按鈕
    * Postback Action (Postback)
    * URL Action (OpenUrl)



#### (5) 其他限制

* Facebook Messenger 不支援 `Adaptive Card`
* 如果想要自定 Template Message 內容，請參考 [官方文件](https://developers.facebook.com/docs/messenger-platform/send-messages/templates)

