聊天擴充套件


聊天擴充套件可讓 Bot 提供互動社交功能,以供用戶直接在對話中叫用。
主題內容

總覽

互動模式

當用戶與聊天擴充套件相關聯的 Bot 發生互動後,這些聊天擴充套件就會顯示在 Messenger 的撰寫工具抽屜中。

用戶點按聊天擴充套件圖示時,便會開啟開發人員指定的 WebView 式 UI。然後,用戶就可建立或選擇內容以便在對話串中分享。在對話串中分享的訊息可包含圖像、連結和其他項目。

當群組中的用戶與以這種方式分享的任何訊息發生互動時,開發人員就可存取該對話串的內容資訊、能夠要求權限,以及 Messenger 擴充套件 JavaScript SDK 提供的其他所有功能。

可能的使用案例

  • 傳達心情:直接在 Messenger 內建立貼圖或惡搞圖。分享歌曲、影片或其他內容。
  • 媒體:將您追蹤的主題動態即時發送到群組。
  • 商務:群組下單和規劃
  • 生產力:從工作追蹤器傳送最新狀況、協同編輯文件。
  • 娛樂:建立遊戲或群組對戰。

專案範例

我們提供 TaskBot 這個開放原始碼 Bot,以展示上述所有功能。


在 Messenger 中試用 →

設定抽屜進入點

當用戶加入 Bot 時,若要讓您的 Bot 可顯示在抽屜中,您必須設定其首頁網址。

若要在 Messenger WebView 中顯示已啟用 Messenger 擴充功能 SDK 的網頁,您必須將網域(包括子網域)加入 Bot 的 Messenger 個人檔案 whitelisted_domains 屬性中,以列入允許清單。這樣可確保只有信賴的網域才可透過 SDK 函式存取用戶資訊。

如需深入瞭解如何將網域列入允許清單,請參閱 whitelisted_domains 參考資料

如果您的聊天擴充套件尚未準備推出,請務必將 in_test 設為 true,以避免非開發人員可看見該聊天擴充套件。

瞭解詳情 →

分享

Messenger 平台支援自訂從 WebView 的分享方式,可讓開發人員針對從 Bot 分享的訊息,提供自訂訊息和目標網頁。

這些功能已大幅強化,以便與聊天擴充套件搭配使用。以下是您應該瞭解的增強功能:

分享到目前的對話串

beginShareFlow() 函式mode 參數現在支援 current_thread 模式。這個模式可讓用戶分享到原先叫用聊天擴充套件的對話串,而不必選擇其他對話串。大部分的開發人員對於在擴充套件本身內部都應該選擇 current_thread 模式。

在某些情況下,建議您檢查用戶的 Messenger 版本是否支援這個模式。請使用 getSupportedFeatures() 方法,然後檢查索引鍵 "sharing_direct" 來確定支援與否。

對分享的反應

無論用戶確認或取消分享,只要未發生錯誤,系統就會呼叫 beginShareFlow()success 回呼。

Messenger 現在會在回應 success 回呼時傳遞 is_sent 欄位,告知是否確實傳送訊息。

用戶分享後,建議您關閉視窗(如果已完成所有步驟),或將用戶導向流程的下一個部分。

<script> 
    var messageToShare = { ... };
      
    MessengerExtensions.beginShareFlow(function success(response) {
      if(response.is_sent === true){ 
      	// User shared. We're done here!
      	MessengerExtensions.requestCloseBrowser();
      }
      else{
      	// User canceled their share! 
      
      }
    }, 
    function error(errorCode, errorMessage) {      
  	// An error occurred trying to share!
    },
    messageToShare,
    "current_thread");   
</script>

如需詳細資料,請參閱 beginShareFlow() 相關文件

瞭解詳情 →

取得用戶編號和對話串內容

呼叫 getContext() 函式可取得以下資訊:

  • 用戶編號(PSID)
  • 對話串編號
  • 對話串類型

這個函式適用於所有會遇到 WebView 的用戶,不論用戶是否與 Bot 開啟對話串。

您可以透過這項資料,使用網頁檢視功能來建立社交、協作功能(如上方的 Todo 範例所示)。

請注意,如果以這種方式取得用戶編號,並不表示能夠取得用戶個人檔案。如需取得用戶個人檔案,您仍需要個人檔案權限。


瞭解詳情 →

權限管理

當用戶與您的 Bot 開始對話串時,您會自動獲得向該用戶發送訊息以及取得個人檔案的權限。用戶封鎖 Bot 或刪除對話串時,這些權限也會隨之撤銷。

如果用戶透過 Webview 遇到 Bot,但尚未開始對話串,您可能會想要要求這些權限。如需要求這些權限,您可使用 Messenger 擴充套件 JavaScript SDK 中的權限函式。

瞭解詳情 →

在撰寫工具抽屜中顯示 Bot 的情況

  1. 當用戶點擊「開始使用」按鈕或開啟 WebView(在 1 對 1 對話串或群組對話串中),而且 WebView 已啟用 Messenger 擴充套件並將 home_url 設為您的 Bot 時,該 Bot 將會顯示在抽屜中。

  2. 如果用戶刪除或封鎖某個 Bot,則該 Bot 就會退出抽屜。

  3. 當 Bot 顯示在抽屜時,用戶會看到紅點(靠近撰寫工具 + 圖示的標章)。

  4. 我們已將高品質的聊天擴充套件 Bot 移到精選名單中,並且會顯示在用戶的抽屜中(即使用戶從未與該 Bot 互動過)。 我們會定期更新這個名單,您無需費心。

要訣和最佳作法

對於如何打造絕佳的聊天擴充套件,Messenger 平台建議以下最佳作法:

  • 一般作法
  • 如何使用不同的分享模式
  • 如何控制 WebView Chrome 以發揮最大效果
  • 如何確保與舊版的相容性
瞭解詳情 →

Design Kit

準備開始設計您自己的聊天擴充套件?看看我們實用的 Sketch 檔案,其中包含您需要的所有元件!

取得 Kit →

常見問題和疑難排解

問題:我是否必須打造 Bot 才能開發聊天擴充套件?

回答:是的,聊天擴充套件是 Bot 的擴充功能。

問題:聊天擴充套件如何才會顯示在撰寫工具抽屜中?

回答:用戶與聊天擴充套件相關聯的 Bot 發生互動後,該聊天擴充套件就會顯示在撰寫工具抽屜中。

問題:是否必須有聊天擴充套件才能讓用戶在我的 Bot 使用分享功能?

回答:不是!Messenger 平台提供許多其他方式,讓用戶從 Bot 進行分享

問題:我是否必須有聊天擴充套件才能使用 Bot 中的 WebView 和 Messenger 擴充套件 Javascript SDK?其中有什麼關聯嗎?

回答:不是!我們只是喜歡這個詞,其實除了聊天擴充套件,您還可以透過許多方式叫用 WebView,且這些方式都能讓您使用 Messenger 擴充套件。

問題:當聊天擴充套件的接收者點按連結,Messenger 擴充套件 Javascript SDK 可以提供哪些功能?

回答:傳送者能使用的所有功能,開啟分享內容的用戶也一樣能使用。您可以取得用戶編號、對話串內容、起始自己的分享等。請注意,在這些情況下,除非您要求必要權限,否則您無法存取用戶的個人檔案,或是傳送訊息給他們。

問題:聊天擴充套件可以在 Messenger.com 和 Facebook.com 上執行嗎?

回答:此功能目前僅支援 iOS 和 Android 裝置。 網頁版的用戶端可能可以透過所提供的聊天擴充套件來點擊連結分享,但無法使用 JavaScript SDK 提供的功能。如需更多資訊,請參閱聊天擴充套件最佳作法指南中的「回溯相容性」一節。

問題:分享到目前的對話串和群發分享有何分別?

回答:聊天擴充套件是以先前推出的 WebView 分享功能為基礎,加入稱為 "current_thread" 的流程。

如果用戶已在對話串內使用撰寫工具叫用您的 Bot,合理推論用戶會要在該對話串分享,而非分享給其他人。所以,透過「current_thread」流程,用戶可確認是要傳送內容到目前的對話串,而非群發給多個對話串。

問題:我使用最新版本的 Messenger,但 SDK 無法在 WebView 中運作。是哪裡發生問題?

回答:請檢查以下項目:

  • 未發佈的粉絲專頁:如果附加 Bot 的粉絲專頁尚未發佈,對於在該粉絲專頁上未具任何角色(如開發人員、管理員)的用戶,SDK 不會載入。請將用戶加入該粉絲專頁,或發佈該粉絲專頁。

  • 未設定 messenger_extension 屬性:請務必在會開啟 WebView 的所有位置,將 messenger_extensions 設為 true。這些項目包括:


問題:我已建立聊天擴充套件,但撰寫工具抽屜中並沒有顯示,我該如何修正?

請檢查以下項目:

  1. 確認您已經為要顯示的特定專頁設定 home_url,且是使用該專頁適用的粉絲專頁存取權杖。將 Bot 從某個 Facebook 專頁轉移至另個專頁時,首頁網址並不會一起轉移。

  2. 如果您已在開發模式下將 in_test 屬性設定為「true」,請確認查看抽屜的用戶是否為問題 Bot 的開發人員或測試人員,或是該 Facebook 專頁的管理人員。如果您已開放 Bot 功能,請確認您已提交 Bot 進行審核且獲得 pages_messaging 權限。如果您的擴充套件處於 in_test 模式,就不會顯示在非開發人員或非測試人員帳號中。

  3. 確認 Bot 連結的 Facebook 粉絲專頁是否為已發佈的狀態。

  4. 確認 Bot 本身的狀態是公開模式

  5. 確認您先前曾與 Bot 對話。

  6. 系統會快取撰寫工具抽屜顯示的聊天擴充套件。您可能需要稍待片刻,等待擴充套件顯示。