Facebook Messenger 平台 ngrok

Posted

技术标签:

【中文标题】Facebook Messenger 平台 ngrok【英文标题】:Facebook Messenger Platform ngrok 【发布时间】:2016-08-09 09:03:33 【问题描述】:

我尝试为 facebook messenger api 设置一个 webhook,并尝试通过 ngrok 转发到我的 localhost node.js 服务器。来自 facebook 的用于检查服务器的 GET 请求运行良好。但是,当我通过 Messenger 向我的网站发送消息时,我的 webhook 没有得到任何响应。当我卷曲 ngrok 地址时它工作正常。有什么建议吗?

谢谢

【问题讨论】:

首先要确保您遵循指南的Subscribe the App to a Page 部分。 我做到了,正如我所说,从 Facebook 发送 GET 调用以验证钩子是否有效.. 无需完成“订阅应用程序”部分即可设置和验证 webhook,这就是我提到它的原因。如果您已经完成了该部分,则需要共享代码,以便我们了解发生了什么。 有解决办法吗?我想我有类似的问题。我也在使用 ngrok,所以我不确定 ngrok 是否相关? 【参考方案1】:

我遇到了类似的问题 -

我当前(半工作)的解决方法是从 Facebook 应用程序配置页面(在应用程序设置页面 -> 左侧面板中的 Messenger -> Webhooks 部分中)取消订阅我的测试页面,然后重新订阅我的测试 Facebook页。当我在 Messenger 的测试页面中输入内容后,我会立即收到 Http POST 消息。

当然,这只能帮助测试。它在生产环境中没有帮助。

【讨论】:

【参考方案2】:

只要您用于 Messenger 集成的 Facebook 应用处于未发布状态,即未经过审核流程,只有管理员、开发人员和测试人员的消息会通过 webhook 中继。 检查您使用的用户是否对应用拥有正确的权限。

在某些情况下,Facebook 也会停止转发消息,例如,如果您的 webhook 端点反复返回错误。在developers.facebook.com 平台中检查您的警报仪表板。 解决方法是取消订阅,然后重新订阅一个页面。

更多提示: 根据您在接收端使用的框架,它可能会拒绝请求中带有 x-forwarded-for 标头的消息(在我的例子中是 Symfony 2)。 如果遇到此类问题,请使用 -host-header=rewrite 选项和 ngrok 重写请求标头。

【讨论】:

以上是关于Facebook Messenger 平台 ngrok的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Messenger 平台/机器人欢迎配置的奇怪错误

如果 Facebook Messenger 平台上发生 EAI_AGAIN 错误,我该如何解决?

是否有事件或其他方式来处理用户在 Facebook Messenger 平台上向机器人发送的第一条消息?

如何访问 Messenger 平台应用仪表板?

来自 Facebook Messenger 机器人对话的 API 身份验证

Facebook Messenger Bot 使用回发按钮共享结构化消息