Facebook Messenger Postback被称为三次

时间:2016-06-27 06:00:45

标签: facebook postback bots messenger

我已经成功创建了一个facebook messenger bot。我已经在我的应用程序中实现了消息回发,它似乎在我的Android设备(Messenger V 68.0.0.22.67)中正常工作。

但是当我尝试使用带有信使V 76.0.0.13.70的三星Galaxy S5时,所有事件postback都被称为三次。我甚至尝试使用其他一些现有的facebook机器人来测试同一设备中的回发事件,这也是同样的情况。每次回发我都会得到三倍的响应。

信使版可能有问题吗?到目前为止,我无法找到与此相关的任何问题日志。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

当Facebook在标题中发回的签名与您为有效负载计算的签名不匹配时,会发生这种情况。这将返回500到Facebook和Facebook重试此请求两次(总共三个请求)。

<强>问题

问题是某些字符必须以UNICODE编码。

例如:

  在计算哈希值之前,

@ character必须替换为“\ u0040”。

<强>解

我只是在Facebook Messenger模块的 verifySignature

中完成此操作

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

本文深入探讨了解决方案。

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