2016-06-27 30 views
0

我已經成功創建了一個facebook messenger bot。我已經在我的應用程序中實現了消息回發功能,並且它似乎在我的Android設備(Messenger V 68.0.0.22.67)中正常工作。Facebook Messenger Postback被叫三次

但是,當我用三星Galaxy S5與信使V 76.0.0.13.70,所有的事件postback被稱爲三次。我甚至試着用一些其他現有的Facebook機器人來測試同一設備中的回發事件,這也是同樣的情況。每回發一次,我都會收到三次回覆。

它可能是與Messenger版本的一些問題?到目前爲止,我找不到與此相關的任何問題日誌。

任何幫助將不勝感激。

+0

Facebook將重發信息,如果你的機器人不返回的時間框架內得到響應。您是否嘗試過在應用程序的入口處使用200進行響應,然後繼續處理您的應用程序代碼? – Datise

回答

1

發生這種情況時,Facebook中發回的簽名與您爲有效負載計算的簽名不匹配。這將返回500到Facebook並且Facebook重試此請求兩次(總共三個請求)。

問題

的問題是某些字符必須編碼UNICODE。

例如:

@字符具有與計算的散列之前 「\ u0040」 來代替。

SOLUTION

我只是在Facebook的Messenger的模塊

let hash = crypto.createHmac('sha1',this.APP_SECRET).update(JSON.stringify(req.body).replace(/@/g,"\\u0040").replace(/\//g, '\\/')).digest('hex');

本文深入研究深入到解決方案做到了這一點在verifySignature

https://hackernoon.com/regenerating-a-raw-request-payload-an-impossible-task-e4133fb2571