查詢Facebook 企業戶的單一顧客所有ID
根據 Messenger API 2.1 公開說明
Messenger 平台交接通訊協定可以讓兩或多個應用程式在粉絲專頁的 Messenger 平台上共同作業。 粉絲專頁管理員可以針對粉絲專頁的訂閱應用程式設定角色,就可啟用這個功能,將訊息對話串的控制權在應用程式之間傳遞。 系統會根據應用程式當時是否擁有訊息對話串控制權,而將訊息傳遞到不同管道。
實作流程
- 粉絲頁面 GodzillaAlert
- MessengerBot — Aha_DEV_Messenger
- PageBot — Aha_Robot_Page
- 連結所有開發程式都到相同企業帳號底下
- 測試Messenger 可以運作, 首先啟用webhook, 先讓Page -> Edit Subscription
- 現在驗證webhook變得比較複雜一點, 可以參考此連結,主要是增加sha1的檢查。然後到Messenger 底下設定Webhook需要的權限messages, messaging_postbacks, messaging_optins, message_reads, standby, messaging_handovers
- 後續可以再查這些權限各自是為了什麼功能而需要
- 接著註冊 這個App到 Page上面
curl -X POST "https://graph.facebook.com/v2.10/me/subscribed_apps?access_token=PAGE_ACCESS_TOKEN"
6. 理論上應該可以看見Messenger -> Webhooks已經有註冊好一個Page, 同時粉絲專頁設定 -> Messenger 後面也應該可以看見Aha_DEV_Messenger的出現。
7. 對話測試https://m.me/GodzillaAlert 看看是否可以看見一樣的內容
8. 接下來也同樣設定一樣的功能給Aha_Robot_Page掛上去, 但是主要是掛上Page -> Feed 的changes webhook
9. 其實好像可以直接用 不用另外多掛一個app
透過此網頁拿到 app scope 的 access_token, 然後使用以下API 就能查到相對應的所有ID_for_Apps 與 ID_for_Pages
其中 IDs_for_pages 裡的id 主要是提供給我們後續透過Messenger 發送回給使用者的recipient id。至於 IDs_for_apps 則是使用者透過粉絲團發送訊息給我們的senderID。
因此整個流程應該就是:
- 顧客fb原始id 發送訊息給Page
- Page 根據顧客fbid 轉換後,再根據顧客在不同App上的ID 當作訊息發送ID,送到我們設定的webhook server上,然後當處理完成後,我們透過Messenger將訊息送到Page上,此時我們需要顧客在Page上的ID,因此就需要透過相同企業戶的內部ID轉換機制,得到這個ID,後續就透過這個ID進行相關訊息的處理與發送。
後記
Facebook Graph API最關鍵的核心,請愛用Facebook 提供的工具 存取權杖工具,這樣可以拿到App Token,此外搭配 圖型API測試工具,協助你不需要寫程式就能從User 拿到足夠的權限給 App,這樣App Token就能打通所有Graph API 的功能。