我已按照步骤设置Facebook Messenger平台。验证GET Web挂钩请求工作完美,订阅也是如此,但当我提交聊天时,我一直得到关注开发人员警报:
嗨诺拉, 我们注意到您的回调网址https:// {domain} / v1 / webhook的Webhooks订阅尚未接受至少16分钟的更新。请验证您的回调服务器是否正常运行,以便您可以继续接收更新。如果您需要更新回调网址,请参阅https://developers.facebook.com/docs/messenger-platform/webhook-reference#webhook_setup如果您的回调网址仍然无法连续8小时接受更新,我们将停用您的订阅。要重新激活订阅,请使用相同的参数发出POST请求,然后重新激活它。
我的帖子请求通过POSTMAN工作。
请有人帮助我!这让我疯了!
答案 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在您的问题中提出投诉。