加入 Messenger 擴充套件 SDK

Messenger 擴充套件 SDK 可將 Messenger 特定的實用功能帶入任何在 Messenger WebView 中開啟的網站或網路應用程式。透過此 SDK,您可以擷取已開啟 WebView 的用戶資訊、將內容分享至 Messenger 中的對話,以及與 Messenger 用戶介面高度整合。

可用的功能

將 Messenger 擴充套件 SDK 包括在內後,Messenger WebView 將可提供以下功能。請注意,視 Messenger 版本和裝置而定,實際可用功能可能有所差異。

函式說明

getContext()

擷取對話背景資料,例如已開啟 WebView 的用戶 PSID。

requestCloseBrowser()

關閉 WebView 並返回 Messenger 對話。

askPermission()

要求執行權限,例如擷取用戶個人檔案資訊。

getGrantedPermissions()

查看目前已授予的權限。

getSupportedFeatures

查看目前裝置上 WebView 支援的功能,例如分享。

如需有關使用這些功能的完整詳細資料,請參閱 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 加入 WebView 要載入的頁面。您應該在每一個要載入 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 載入事件

window.extAsyncInit() 會被系統呼叫,當 Messenger 擴充套件 JS SDK 載入完成後。您可利用這個事件來觸發呼叫 SDK 提供的其他函式。

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

在 Messenger 網頁用戶端使用 SDK

行動版和桌面版 Messenger 用戶端都支援使用 Messenger 擴充套件 SDK。不過,您可能必須考慮下列事項,才能使其正常運作。

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

觸發 Messenger 網頁中的 iframe 時,我們會將 window.name 設為 "messenger_ref"。如果是在 Facebook 聊天頁籤載入,則會將 window.name 設為 "facebook_ref"

不支援的功能

Messenger 網頁用戶端不支援下列設定或功能,但這些設定或功能仍可在 Messenger 行動用戶端上正常運作。

疑難排解

如果無法從網頁呼叫 Messenger 擴充套件 SDK,請考慮下列事項:

  • 常駐功能表按鈕開啟 WebView 時,請務必將 messenger_extensions 參數設為 true。如果用戶已透過分享訊息開啟 WebView,則需要先與 Bot 展開對話,Messenger 擴充套件就可運作。
  • 檢查是否已將代管網頁的網域列入許可清單

  • 檢查使用擴充套件的每個網頁是否都將 JS SDK 包括在內

  • 確認未在 SDK 載入完成前嘗試呼叫任何函數。請使用 window.extAsyncInit此處所述)判斷載入是否完成。

  • 確認網頁是否透過 https 提供,且未包含任何非標準的連接埠。