常駐功能表

本文件說明如何以程式設計的方式將常駐功能表新增至發送訊息體驗。

巢狀常駐功能表

Messenger from Meta 應用程式 Android(276 以上版本)將不再支援常駐功能表。包含巢狀功能表項目的粉絲專頁將在所有平台(網頁、iOS 和 Android(276 以上版本))上以一般清單的方式呈現。我們相信,此舉將為用戶創造更好的 Messenger 使用體驗。圖形 API 8.0 版將同時移除 Messenger 個人檔案 API 和自訂用戶設定 API 對巢狀功能表的支援,此外,所有版本亦將進行 2 年一次的重大變更。

運作方式

常駐功能表支援建立和傳送貴公司主要特色的功能表,例如營業時間、分店地點以及產品,用戶與貴公司進行 Messenger 對話時,一律會顯示這個功能表。

用戶點擊功能表中的項目時,系統就會傳送一則 postback Webhook 通知到您的伺服器,Webhook 通知中包含哪個用戶選擇了哪個項目。此項目選擇動作會開啟標準的傳訊視窗。您可以在 24 小時內回覆對方。

若已設定指令,則指令優先於常駐功能表。

必備條件

若要顯示常駐功能表,下列條件必須成立:

  • 用戶必須在 iOS 或 Android 上執行 Messenger 106 版或以上版本。
  • Messenger Bot 必須訂閱已發佈的 Facebook 粉絲專頁。
  • Messenger Bot 在應用程式設定中必須設定為「公開」。
  • Messenger Bot 必須具備 pages_messaging 權限。
  • Messenger Bot 必須設定開始使用按鈕

支援的按鈕

常駐功能表是由按鈕陣列所組成。常駐功能表支援下列按鈕類型:

設定常駐功能表

若要設定常駐功能表,請傳送 POST 要求至 Messenger 個人檔案 API,為 Bot 的 Messenger 個人檔案設定 persistent_menu 屬性。

我們允許在圖形 API 8.0 以上版本的 call_to_actions 陣列中最多使用 20 個按鈕,以取代已停用的巢狀層級功能表。

{
    "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}

巢狀常駐功能表

此功能在 8.0 以上版本中已停用。

停用撰寫工具

您可停用撰寫工具,使得常駐功能表成為用戶與 Messenger Bot 互動的唯一方式。這種方式適用於有特定用途或選項組合的 Bot。

若要停用撰寫工具,請在建立常駐功能表時設定 "composer_input_disabled":true

本地化

您可為常駐功能表提供預設和本地化的按鈕文字,以根據用戶的地區設定顯示適當文字。

若要如此做,請在 persistent_menu 陣列中為每個地區設定指定個別物件。若要為每個物件指定地區設定,請將 locale 屬性設定為支援的地區設定

{
  "locale":"default",
  "call_to_actions":[...]
},
{
  "locale: "zh_CN",
  "call_to_actions":[...]
}

用戶層級功能表

新功能

2019 年 12 月 4 日,我們改善了常駐功能表來支援動態變更,以進一步個人化對話體驗。

您可以透過用戶層級設定來覆寫粉絲專頁層級常駐功能表。如此可讓您的應用程式動態控制:

  • 用戶功能表上的操縱按鈕點擊。
  • 是否對用戶顯示撰寫工具。

若要啟用或停用用戶層級設定,請使用名為 custom_user_settings 的不同端點。此端點支援 POST、GET 和 DELETE 呼叫。

適用於粉絲專頁層級常駐功能表的相同設定,也適用於用戶層級。主要區別在於,需要 psid 參數來指示此覆寫所適用的用戶。

注意:用戶層級常駐功能表的更新會即時發生,而粉絲專頁層級常駐功能表的更新可能需要長達 24 小時才會發生。

用戶層級設定的速率限制為每 10 分鐘每個用戶 10 次呼叫。

POST 要求的範例

此範例將覆寫此用戶目前的粉絲專頁層級設定。

curl -X POST -H "Content-Type: application/json" -d '{
  "psid": "<PSID>",
  "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}' "https://graph.facebook.com/v21.0/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"

GET 要求的範例

此範例將擷取目前的用戶和粉絲專頁層級設定。如果沒有用戶層級設定,系統將只傳回粉絲專頁層級設定。

curl -X GET "https://graph.facebook.com/v21.0/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"

結果

{
    "data": [
      {
        "user_level_persistent_menu": [
            {
              "locale": "default",
              "composer_input_disabled": false,
              "call_to_actions": [
                  {
                      "type": "postback",
                      "title": "Talk to an agent",
                      "payload": "CARE_HELP"
                  },
                  {
                      "type": "postback",
                      "title": "Outfit suggestions",
                      "payload": "CURATION"
                  },
                  {
                      "type": "web_url",
                      "title": "Shop now",
                      "url": "https://www.originalcoastclothing.com/",
                      "webview_height_ratio": "full"
                  }
              ]
            }
        ],
        "page_level_persistent_menu": [
          Original Page Menu...
        ]  
      }
  ]
}

DELETE 要求的範例

此範例將移除用戶層級設定,並保留粉絲專頁層級功能表(如有設定)。

curl -X DELETE 'https://graph.facebook.com/v21.0/me/custom_user_settings?psid=<PSID>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

停用常駐功能表

在某些情況下,我們會建議您停用洽談外掛程式中 Bot(機器人程式)的常駐功能表。若要這麼做,請在設定常駐功能表時,新增 "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"]

範例:Messenger 個人檔案 API 承載

{
  "persistent_menu":[
    {
      "locale":"default",
      "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
      "composer_input_disabled": false,      
      "call_to_actions":[
        {
          "title":"My Account",
          "type":"postback",
          "payload":"PAYBILL_PAYLOAD"
        }
      ]
    }
  ]
}

最佳作法

就像按鈕一樣,功能表項目可產生網頁檢視或回傳。請注意,系統不支援第二層功能表。

將功能表用於 Bot 功能的進入點。

力求清楚描述:功能表可讓用戶瞭解 Bot 的功能,並讓用戶立即知道以後可以用 Bot 來達成哪些事項。

將 Bot 的核心功能以選擇性的方式表示,並嘗試將功能表項目限制為 5 個,以獲得最佳的用戶體驗。

請勿期望功能表可包含用戶特定資料:對使用 Bot 的所有用戶而言,功能表都是一樣的,但可本地化。

請勿在功能表中放入「功能表」按鈕,而向用戶傳送內含功能表的訊息。只需將內容直接放入功能表即可,這就是功能表的用途!

請勿將「重新開啟」等一般動作放入功能表。

請勿將功能表的主要版面用於如「關於」、「服務條款」、「隱私政策」或「技術提供」等次要、「版權頁」般的資訊,而忽略公開 Bot 的主要功能。

開發人員支援