概覽
互動模式
當用戶與相關的 Bot 開始互動後,聊天擴充功能就會出現在 Messenger 撰寫工具導覽列中。
當用戶點按聊天擴充功能的圖示,即可開啟開發人員指定的 webview 用戶介面。接著用戶就能建立或選擇要分享到對話串中的內容。分享到對話串中的訊息可包含圖像、連結等等項目。
若群組中的用戶透過這種方式與分享訊息互動,開發人員就能存取對話串中的內容資訊、詢問權限,以及其他 Messenger 擴充功能 JavaScript SDK內提供的資訊。
可套用的使用案例
- 表達: 直接在 Messenger 中打造貼紙或惡搞圖片。分享歌曲、影片或其他內容。
- 媒體: 即時傳送追蹤主題的動態至群組。
- 商業: 團購與規劃
- 生產力: 任務負責人可傳送更新資訊,共同編輯文件。
- 娛樂: 建立遊戲或團體競賽。
配置導覽列入口點
若要讓新增 Bot 的用戶可以在導覽列中看到 Bot ,您就必須設定其主頁網址。
如果您尚無法推出聊天擴充功能,請將 in_test 設為 true,避免於推出之前被非開發人員看到。
分享
Messenger Platform 支援自訂從 webview 分享的體驗,讓開發人員可提供自訂訊息,及其 Bot 分享訊息的目的地。
我們在這些功能中加入了許多強化項目,以便配搭聊天擴充功能使用。請參考下列內容:
分享至目前的對話串
beginShareFlow() 函數中的 mode 參數目前已能夠支援 current_thread 模式。這樣用戶就可以分享內容至他們以聊天擴充功能觸發的對話串中,而不用選擇另一個對話串。大部分的開發人員都應該在擴充功能中選擇 current_thread 模式。
有時候您可能需要確認用戶的 Messenger 版本是否支援此模式。使用 getSupportedFeatures() 方法並檢查密鑰 "sharing_direct" 以進行確認。
回應分享
無論用戶是確認或取消分享,只要沒有發生錯誤,系統就會調用 beginShareFlow() 的 success 回調。
Messenger 會在回應中傳送 is_sent 欄位至 success 回調,讓您知道訊息是否已確實送出。
在用戶分享過後,如果您無須執行其他動作,建議關閉視窗或將用戶導向流程中的其他部分。
<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 展開對話。
請注意,透過這種方式取得用戶編號不代表就能取得用戶的個人檔案。若要取得檔案,您必須有個人檔案權限。
瞭解詳情 →
權限管理
當用戶與 Bot 展開對話,您就會自動獲得權限,可傳送訊息給該用戶並取得他們的個人檔案。針對封鎖 Bot 對話中的用戶,權限就會被撤銷。
針對透過 webview 接觸到 Bot 且尚未展開對話的用戶,您可能會需要要求這些權限。您可以使用 Messenger 擴充功能 JavaScript SDK 中的權限函數來操作。
瞭解詳情 →提示與最佳操作實例
Messenger Platform 有推薦最佳操作實例,說明如何打造一流的聊天擴充功能,包含:
- 一般做法
- 如何使用不同分享模式
- 如何控制 webview chrome 至最大成效
- 如何確保後台相容性
常見問題和解決疑難
問題: 一定要有 Bot 才能開發聊天擴充功能嗎?
回答: 是的! 聊天擴充功能是 Bot 的擴充功能。
問題: 怎樣做才能讓聊天擴充功能顯示在撰寫工具導覽列?
回答: 當用戶與相關的 Bot 開始互動後,聊天擴充功能就會出現在撰寫工具導覽列中。
問題: 一定要有聊天擴充功能才能讓用戶從我的 Bot 分享內容嗎?
回答: 不用! Messenger Platform 提供多種方式讓用戶從您的 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。包括:- 在 Bot 的選單中。
- 在 Bot 傳送的訊息的按鈕中
- 透過
beginShareFlow()和分享按鈕分享的任何訊息中。
網域不在允許清單中: 將專頁代管的網域加入 Bot 的網域允許清單中。
查看更多webview 解決疑難提示。
問題: 我建立了聊天擴充功能,但無法使其顯示在撰寫工具導覽列中。該如何解決這個問題?
請見下列說明:
確定您已為要顯示的特定專頁設定
home_url,並使用該專頁所適用的專頁存取憑證。在兩個 Facebook 專頁之間轉移 Bot 時,首頁網址並不會跟著轉移。如果您已在開發模式下將
in_test屬性設為 true,請確定導覽列檢查者是相關 Bot 的開發人員/測試人員,或是該 Bot Facebook 專頁的管理員。如果您已公開發佈該 Bot,請確定您已提交該 Bot 並為其取得pages_messaging權限。確定加上了 Bot 的 Facebook 專頁已經發佈。
確定 Bot 本身處於公開模式。
確定您先前已與 Bot 交談。
撰寫工具導覽列中顯示的聊天擴充功能已快取。這些聊天擴充功能可能要過一下子才會顯示。