新增 Messenger 擴充功能 SDK

Messenger 擴充功能 SDK 將重要的 Messenger 專屬功能帶到任何在 Messenger 網頁檢視中開啟的網站或網頁版應用程式。有了 SDK,您就可以擷取開啟網頁檢視的用戶的資訊、分享內容至 Messenger 對話,以及與 Messenger 用戶介面深入整合。

可用功能

納入 Messenger 擴充功能 SDK 後,下列功能將可用於 Messenger 網頁檢視。請注意,這些功能的實際可用情況或會根據 Messenger 與裝置的版本而有所差異。

函數說明

getContext()

擷取對話背景資料,例如開啟網頁檢視的用戶的 PSID。

requestCloseBrowser()

關閉網頁檢視並返回 Messenger 對話。

askPermission()

索取權限以執行擷取用戶個人檔案資訊等操作。

getGrantedPermissions()

檢查目前獲授予的權限。

getSupportedFeatures

查看當前裝置網頁檢視中所支援的功能,例如分享。

如需完整的功能使用詳情,請參閱 Messenger 擴充功能 SDK 參考資料

安裝 SDK

1. 將網域加入允許清單

若要在 BOT(機械人程式)中使用 Messenger 擴充功能,您必須先將提供網頁的網域加入允許清單;基於安全理由,您網頁上的所有網域都必須加至已列入允許清單的網域。請參閱允許清單參考文件以了解詳情。

運用下列 API,您便可輕鬆以編程方式將網域加入允許清單:

 
curl -X POST -H "Content-Type: application/json" -d '{
  "whitelisted_domains":[
    "https://petersfancyapparel.com"
  ]
}' "https://graph.facebook.com/v21.0/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN"

成功的話,Messenger 個人檔案 API 就會回應:

{"result":"success"}

2. 納入 Messenger 擴充功能 JS SDK

將 Messenger 擴充功能 Javascript SDK 連同下列程式碼,一起加入要在網頁檢視中載入的頁面。在您想載入的每個頁面上,您應該於開首的 body 標籤後直接插入程式碼:

(function(d, s, id){
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/messenger.Extensions.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));

3. 等待 SDK 載入事件

Messenger 擴充功能 JS SDK 完成載入後, 系統就會呼叫 window.extAsyncInit()。您可以使用此方法來觸發系統呼叫 SDK 中的其他可用函數。

window.extAsyncInit = function() {
  // the Messenger Extensions JS SDK is done loading 
};

使用 Messenger 網站用戶端的 SDK

Messenger 擴充功能 SDK 支援流動版與桌面版 Messenger 用戶端。不過,若要擴充功能正常運作,建議您採取下列動作。

您也可以從用戶端的程式碼使用 window.name 屬性來檢查 iframe 的位置。

如果系統在 Messenger 網頁觸發 iframe,我們會將 window.name 設為 「messenger_ref」。否則,如果是在 Facebook 聊天室分頁中載入, window.name 就會是 「facebook_ref」

不支援的功能

下列設定或功能在 Messenger 網絡用戶端上不受支援,但在 Messenger 流動用戶端上仍可正常運作。

解決疑難

如果您無法從網頁呼叫 Messenger 擴充功能 SDK,請考慮下列要點:

  • 如果您是從常駐選單按鈕開啟網頁檢視,請確保 messenger_extensions 參數設定為 true。若用戶已透過分享訊息開啟網頁檢視,即使他們未曾與您的 BOT(機械人程式)聊過,也不會影響 Messenger 擴充功能正常運作。
  • 檢查您是否已將託管網頁的網域列入允許清單

  • 檢查使用擴充功能的所有網頁是否都已納入 JS SDK。

  • 確保您不會在 SDK 完成載入前嘗試呼叫任何函數。使用 window.extAsyncInit在此查看描述)判斷載入程序是否完成。

  • 確保網頁是透過 https 提供,且不含任何非標準的連接埠。