常駐選單

本文件將為您展示如何透過程式輔助的方式將常駐選單加入訊息傳送體驗。

巢狀常駐選單

Android Messenger from Meta(v276 版及以上)將不再支援巢狀常駐選單。包含巢狀選單項目的專頁將在網頁、iOS 和 Android(v276 版及以上)等所有平台上以平面清單的形式呈現。我們認為這樣可為用戶帶來更出色的 Messenger 體驗。在 Graph API 的 v8.0 版本中,Messenger 個人檔案 API 和自訂用戶設定 API 都將不再支援巢狀選單,並且所有版本都進行了兩年的重大變更。

運作方式

透過常駐選單,您可以建立和傳送選單來展示企業的主要特點,例如列出營業時間、商店地點和產品。此選單會一直顯示在用戶與您企業的 Messenger 對話中。

當用戶點擊選單中的項目時,系統會向您的伺服器傳送 postback Webhook 通知,其中包含所選項目及選取項目的用戶之資訊,然後系統便會開始計算標準訊息往來時限。您有 24 小時回覆用戶。

如果設定了指令,這些指令的優先次序會高於常駐選單。

必要條件

如要顯示常駐選單,必須符合以下條件:

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

支援的按鈕

常駐選單由一組按鈕陣列組成。常駐選單支援以下按鈕類型:

設定常駐選單

如要設定常駐選單,請向 Messenger 個人檔案 API 傳送 POST 要求,以設定 Bot Messenger 個人檔案的 persistent_menu 屬性。

為取代已停用的巢狀層級選單,我們在 Graph API v8.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"
                }
            ]
        }
    ]
}

巢狀常駐選單

此功能已在 v8.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/v19.0/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"

GET 要求範例

此要求將檢索目前的用戶和專頁層級設定。如果沒有用戶層級的設定,系統便只會傳回專頁層級的設定。

curl -X GET "https://graph.facebook.com/v19.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/v19.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 的主要功能即可。

開發人員支援