Facebook Messenger平台-Webhook订阅

Facebook Messenger平台-Webhook订阅,facebook,facebook-graph-api,Facebook,Facebook Graph Api,我已经按照步骤设置了Facebook Messenger平台。验证GET web钩子请求工作得很好,订阅也是如此,但当我提交聊天时,我会不断收到以下开发者警报: 嗨,诺拉, 我们注意到,您对回调URL https://{domain}/v1/webhook的webhook订阅至少有16分钟没有接受更新。请验证您的回调服务器是否正常工作,以便您可以继续接收更新。如果需要更新回调URL,请参阅 如果您的回调URL连续8小时无法接受更新,我们将禁用您的订阅。若要重新激活订阅,请使用相同的参数发出POS

我已经按照步骤设置了Facebook Messenger平台。验证GET web钩子请求工作得很好,订阅也是如此,但当我提交聊天时,我会不断收到以下开发者警报:

嗨,诺拉, 我们注意到,您对回调URL https://{domain}/v1/webhook的webhook订阅至少有16分钟没有接受更新。请验证您的回调服务器是否正常工作,以便您可以继续接收更新。如果需要更新回调URL,请参阅

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

我的邮件请求通过邮递员完成


有人能帮帮我吗!这简直快把我逼疯了

您的服务器上是否有该post请求的日志?

Facebook要求您为post请求返回状态代码200,以便他们知道您已成功接收该请求。当他们没有这样做时,他们会再试一次,如果在几次之后仍然失败,他们会向您发出此警报。 可能facebook使用了另一种内容类型或消息内容,而不是您与postman一起使用的内容类型或消息内容。


您的服务器日志应该能让您更深入地了解这一点。

您的服务器上是否有该post请求的日志?

Facebook要求您为post请求返回状态代码200,以便他们知道您已成功接收该请求。当他们没有这样做时,他们会再试一次,如果在几次之后仍然失败,他们会向您发出此警报。 可能facebook使用了另一种内容类型或消息内容,而不是您与postman一起使用的内容类型或消息内容。

您的服务器日志应该会让您对此有更多的了解。

根据您订阅的页面内容,这些事件以及您在Web挂钩设置中指定的url上的更多内容都会被回调

如果您订阅了
message\u deliveries
事件,则每次发送消息时,无论是从用户发送到您的页面还是从您的页面发送到用户,都会有一个可能更多的带有
message deliveried
json对象的callback。有一个
消息传递
json对象的示例,但没有说明或解释字段的含义

有时,我发现会收到未记录的
读取
回调。未记录的json数据如下所示:

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

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

根据您订阅的页面,这些事件以及您在Web挂接设置中指定的url上会有回调

如果您订阅了
message\u deliveries
事件,则每次发送消息时,无论是从用户发送到您的页面还是从您的页面发送到用户,都会有一个可能更多的带有
message deliveried
json对象的callback。有一个
消息传递
json对象的示例,但没有说明或解释字段的含义

有时,我发现会收到未记录的
读取
回调。未记录的json数据如下所示:

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


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

这篇帖子是何时或如何发布的?它们是否是实际订阅的事件(如收到的消息)?还是Facebook定期执行计划任务来检查我的回调是否处于活动状态?只有一个初始get用于验证您的服务器是否处于活动状态。在这之后,它将为订阅页面上接收到的每一条消息返回一个回调事件。如果他们没有成功,facebook会受到警告(他们会重试几次)…但是没有额外的活动检查post请求。post何时或如何发生?它们是否是实际订阅的事件(如收到的消息)?还是Facebook定期执行计划任务来检查我的回调是否处于活动状态?只有一个初始get用于验证您的服务器是否处于活动状态。在这之后,它将为订阅页面上接收到的每一条消息返回一个回调事件。如果他们没有成功,facebook会受到警告(他们会重试几次)…但是没有额外的活动检查post请求。