聊天擴充功能


聊天擴充功能讓 Bot 能夠提供互動式的社交功能,並且用戶可直接在對話中觸發這些功能。
內容
  1. 概覽
  2. 配置導覽列入口點
  3. 分享
  4. 取得用戶編號與對話串內容
  5. 權限管理
  6. 提示與最佳操作實例
  7. 常見問題和解決疑難

概覽

互動模式

當用戶與相關的 Bot 開始互動後,聊天擴充功能就會出現在 Messenger 撰寫工具導覽列中。

當用戶點按聊天擴充功能的圖示,即可開啟開發人員指定的 webview 用戶介面。接著用戶就能建立或選擇要分享到對話串中的內容。分享到對話串中的訊息可包含圖像、連結等等項目。

若群組中的用戶透過這種方式與分享訊息互動,開發人員就能存取對話串中的內容資訊、詢問權限,以及其他 Messenger 擴充功能 JavaScript SDK內提供的資訊。

可套用的使用案例

  • 表達: 直接在 Messenger 中打造貼紙或惡搞圖片。分享歌曲、影片或其他內容。
  • 媒體: 即時傳送追蹤主題的動態至群組。
  • 商業: 團購與規劃
  • 生產力: 任務負責人可傳送更新資訊,共同編輯文件。
  • 娛樂: 建立遊戲或團體競賽。

專案範例

我們開放了 TaskBot 的來源,這個 Bot 可展示所有在此描述的功能。


在 Messenger 中試用 →Github Repo →

配置導覽列入口點

若要讓新增 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 至最大成效
  • 如何確保後台相容性
瞭解詳情 →

設計套件

準備好設計您的聊天擴充功能了嗎? 看看我們實用的 Sketch 檔案,內含所有您要用到的元件!

取得套件 →

常見問題和解決疑難

問題: 一定要有 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。包括:


問題: 我建立了聊天擴充功能,但無法使其顯示在撰寫工具導覽列中。該如何解決這個問題?

請見下列說明:

  1. 確定您已為要顯示的特定專頁設定 home_url,並使用該專頁所適用的專頁存取憑證。在兩個 Facebook 專頁之間轉移 Bot 時,首頁網址並不會跟著轉移。

  2. 如果您已在開發模式下將 in_test 屬性設為 true,請確定導覽列檢查者是相關 Bot 的開發人員/測試人員,或是該 Bot Facebook 專頁的管理員。如果您已公開發佈該 Bot,請確定您已提交該 Bot 並為其取得 pages_messaging 權限。

  3. 確定加上了 Bot 的 Facebook 專頁已經發佈

  4. 確定 Bot 本身處於公開模式

  5. 確定您先前已與 Bot 交談。

  6. 撰寫工具導覽列中顯示的聊天擴充功能已快取。這些聊天擴充功能可能要過一下子才會顯示。