我继承了一个用Node编写的Facebook webhook应用程序,用于跟踪与我们组织相关的几个Facebook页面的帖子。在2017-07-02(大约3周前),似乎Facebook停止推动webhook更新到这个应用程序。在此之前的几年里,该应用程序已成功运行。
这是我在应用程序访问日志中看到的最后一个条目:
724661:173.252.105.118 - - [02/Jul/2017:16:40:23 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"
724662:66.220.145.151 - - [02/Jul/2017:16:55:29 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"
724663:31.13.114.11 - - [02/Jul/2017:16:55:30 -0700] "POST /callback/facebook HTTP/1.1" 200 5 "-" "Webhooks/1.0"
我已经确认我们的应用程序仍在运行,方法是使用curl发送一个成功处理的手动请求。
我在这里看到Facebook标志着他们的API v2.3的可用性将于7月8日结束:
在upgrade guide for v2.3 to v2.4中,它注意到:
您的应用需要考虑的v2.3和v2.4之间有许多页面权限更改。值得注意的是,现在需要页面访问令牌与/v2.4/{page_id}/promotable_posts,/v2.4/{page_id}/offers和/v2.4/{page_id}/milestones连接。
这就是Facebook停止推送我们的webhook端点更新的原因吗?如果是这样,我在哪里可以找到有关使用带有webhooks的页面访问令牌的更多信息?
答案 0 :(得分:2)
这有点 - 记录在案 https://developers.facebook.com/docs/messenger-platform/webhook-reference#response,
当您通过Facebook调用时,您的webhook回调应始终返回200 OK HTTP响应。如果不这样做,可能会导致您的webhook被Messenger平台取消订阅。
尽快返回200 OK HTTP非常重要。在向您发送下一条消息之前,Facebook将等待200。在大批量机器人中,延迟返回200会导致Facebook向您的webhook发送消息的显着延迟。
这里没有明确提到这一点,但我很确定在一定时间内没有用200 回复也被视为失败。
更少的实时相关工具,例如Facebook Scraper(从用户共享的链接中获取Open Graph元数据)的超时时间为10秒;所以Facebook对webhooks的耐心不会再长,特别是对于与Messenger平台相关的webhook而言可能更短(更多) - 这些响应时间毕竟会直接影响用户体验。
编辑:您意识到您实际上询问的是Graph API webhooks,而不是Messenger平台。但对于那些 - https://developers.facebook.com/docs/graph-api/webhooks#callback
,它们是相似的如果发送到您服务器的任何更新失败,我们将立即重试,然后在接下来的24小时内以更低的频率再尝试几次。在这些情况下,您的服务器应处理重复数据删除。 24小时未被接受的更新将被删除。
响应
您的端点应为所有更新通知返回200 OK HTTPS响应。
根据FB开发者小组的讨论,我知道在这种情况下,重复的超时也会导致从webhook中取消订阅。