【问题标题】:Facebook Messenger Postback Called thriceFacebook Messenger 回传被调用三次
【发布时间】:2016-06-27 06:00:44
【问题描述】:

我已经成功创建了一个 facebook messenger 机器人。我还在我的应用程序中实现了消息回发,它似乎在我的 android 设备(Messenger V 68.0.0.22.67) 中运行良好。

但是当我尝试使用带有信使 V 76.0.0.13.70 的三星 Galaxy S5 时,所有事件 postback 都会被调用三次。我什至尝试使用其他一些现有的 facebook 机器人在同一设备上测试回发事件,那里的情况也一样。每次回发我都会收到三次回复。

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

任何帮助将不胜感激。

【问题讨论】:

  • 如果您的机器人未在一段时间内返回响应,Facebook 将重试发送消息。您是否尝试过在应用程序的入口点响应 200,然后继续使用您的应用程序代码?

标签: facebook postback bots messenger


【解决方案1】:

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

问题

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

例如:

@ 字符必须在计算哈希之前替换为“\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

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多