Facebook Messenger平台 - Webhook订阅

时间:2016-04-27 09:34:52

标签: facebook facebook-graph-api

我已按照步骤设置Facebook Messenger平台。验证GET Web挂钩请求工作完美,订阅也是如此,但当我提交聊天时,我一直得到关注开发人员警报:

嗨诺拉, 我们注意到您的回调网址https:// {domain} / v1 / webhook的Webhooks订阅尚未接受至少16分钟的更新。请验证您的回调服务器是否正常运行,以便您可以继续接收更新。如果您需要更新回调网址,请参阅https://developers.facebook.com/docs/messenger-platform/webhook-reference#webhook_setup

如果您的回调网址仍然无法连续8小时接受更新,我们将停用您的订阅。要重新激活订阅,请使用相同的参数发出POST请求,然后重新激活它。

我的帖子请求通过POSTMAN工作。

请有人帮助我!这让我疯了!

2 个答案:

答案 0 :(得分:1)

您的服务器上是否有针对该帖子请求的日志?

Facebook要求您为发布请求返回状态代码200,以便他们知道您已成功收到它。当他们没有时,他们再次尝试,如果多次仍然失败,他们会给你这个警报。 也许facebook会使用与邮递员使用的其他内容类型或消息内容。

您的服务器日志应该为您提供更多的见解。

答案 1 :(得分:1)

根据您为页面订阅的Webhook events,将在Web挂钩设置中指定的网址上为这些事件提供回调等等。

如果您订阅了message_deliveries活动,则每次发送消息时,无论是从用户到您的网页,还是从您的网页发送给用户,都会有一个(或许更多)带有{{{{{{ 1}} json对象。 Webhook Reference有一个Message Delivered json对象的示例,但没有关于字段含义的说明或解释。

有时我会发现收到了无证件的Message Delivered回调。未记录的json数据就像:

Read

基本上,您必须编写回调代码以正常处理所有类型的json数据 ,包括未知数,即使您可能还没准备好进一步处理它们。对于那些你还没有准备好处理或不感兴趣的人,请不要使用Http状态代码204返回任何内容(事实上,每个回调应该返回204,类型为{"object":"page", "entry":[ { "id":"1722858134648129", "time":1465407550812, "messaging":[ { "sender":{"id":"1131485883560113"}, "recipient":{"id":"1722858134642218"}, "timestamp":1465407550868, "read": { "watermark":1465407548057, "seq":428 }}]}]} )。

如果您只处理您感兴趣的那些类型的json数据,任何意外的json数据很可能会以您的Web回调代码编写的任何语言引发异常,并导致500服务器错误返回到Facebook。正是这500错误导致Facebook在您的问题中提出投诉。