2016-04-27 109 views
0

我已按照步驟設置Facebook Messenger平臺。驗證GET網頁掛鉤請求與訂閱一樣完美,但是當我提交聊天時,我繼續收到以下開發者提醒:Facebook Messenger平臺 - Webhook訂閱

嗨,諾拉, 我們注意到您的Webhooks訂閱了回調URL https:// {domain}/v1/webhook尚未接受至少16分鐘的更新。請確認您的回撥服務器正在運行,以便您可以繼續收到更新。如果您需要更新回撥網址,請參閱https://developers.facebook.com/docs/messenger-platform/webhook-reference#webhook_setup

如果您的回叫網址仍然無法接受連續8小時的更新,我們將停用您的訂閱。要重新激活訂閱,請使用相同參數進行POST請求,並重新激活它。

我的帖子請求通過郵遞員工作。

請有人可以幫助我!這讓我瘋狂!

回答

1

您的服務器上是否有該日誌請求的日誌?

Facebook要求您爲發佈請求返回狀態碼200,以便他們知道您已成功收到它。當他們沒有時,他們再試一次,如果多次後仍然失敗,他們會給你這個警報。 也許facebook使用了另一種內容類型或消息內容,而不是您使用郵遞員的內容。

你的服務器日誌應該會給你更多的見解。

+0

該帖子何時或如何發生?他們是否是實際訂閱的事件,例如收到的消息?或者他們是否定期執行由Facebook完成的計劃任務來檢查我的回調是否還活着? –

+0

只有一個初始獲取驗證來檢查您的服務器是否還活着。之後,它將爲訂閱頁面上收到的每條消息提供一個回調事件。如果他們沒有成功,Facebook會感到震驚(他們會重試幾次),但沒有額外的活着檢查後的請求。 –

1

根據您訂閱頁面的Webhook events,這些事件以及您在設置的Web Hook中指定的URL上會有回調。

如果你訂閱的message_deliveries事件,每次發送的消息,無論是從用戶到您的網頁或從你的頁面給用戶,還有一個,也許更多,calllback與Message Delivered JSON對象。 Webhook Reference有一個json對象的示例,但沒有關於這些字段的含義的規範或解釋。

有時我發現有時會收到一個無證的Read回調。造成這種情況的無證JSON數據是這樣的:

{"object":"page", 
"entry":[ 
    { 
    "id":"1722858134648129", 
    "time":1465407550812, 
    "messaging":[ 
    { 
     "sender":{"id":"1131485883560113"}, 
     "recipient":{"id":"1722858134642218"}, 
     "timestamp":1465407550868, 
     "read": 
     { 
     "watermark":1465407548057, 
     "seq":428 
     }}]}]} 

本質上講,你必須編寫你的回調來處理所有類型的JSON數據優雅,包括未知數的,即使你可能還沒有準備好進一步處理它們。對於那些你還沒準備好處理或不感興趣的人,不要返回任何包含Http狀態碼204(實際上每個回調應該返回204,因爲類型爲void)。

如果您僅處理您感興趣的那些類型的json數據,那麼任何意外的json數據都將極有可能引發異常,無論您的web回調代碼被寫入哪種語言,並導致500服務器錯誤返回到Facebook。正是這個500錯誤導致Facebook在你的問題中提出這種抱怨。

相關問題