WebHook中的无限循环

时间:2016-09-07 19:16:04

标签: php webhooks facebook-messenger

我正在做一个facebook messenger机器人。启动后,它会调用WebHook。 不幸的是,第一次启动后不会停止使用相同的参数抛出相同的调用。 设置为:

  • message_deliveries;
  • message_reads;
  • 消息;
  • messaging_optins;
  • messaging_postbacks。

源代码是:https://github.com/Ellusu/nuraghebot-facebookmessenger/blob/master/index.php

我哪里错了? 为什么只有一个电话?

1 个答案:

答案 0 :(得分:2)

根据您的代码,我决定您无法设置您的webhook,因此请documentation

  

在您的webhook网址中,添加验证码。你的代码应该   期待您之前定义的验证令牌,并回复   在验证请求中发回的质询。单击“验证和   保存新页面订阅中的“按钮”以使用a调用您的webhook   GET请求。

因此,要使PHP在webhook设置中取得成功,您必须返回 hub_challenge 参数。

使用您的令牌定义$ verify_token并添加如下内容:

if (!empty($_REQUEST['hub_mode']) && $_REQUEST['hub_mode'] == 'subscribe' && $_REQUEST['hub_verify_token'] == $verify_token) {

    // Webhook setup request
    echo $_REQUEST['hub_challenge']; exit;
}

成功设置后,您可以从脚本中删除此代码。

或者,如果您的webhook已经挂钩:

您应该跳过任何读取传递消息,如下所示:

if (!empty($input['entry'][0]['messaging'])) {
    foreach ($input['entry'][0]['messaging'] as $message) {

        // Skipping delivery messages
        if (!empty($message['delivery'])) {
            continue;
        }

        // Skipping read messages
        if (!empty($message['read'])) {
            continue;
        }
    }
}

或者,您可以取消选择 message_reads & Facebook页面设置/ Webhooks页面订阅部分中的 message_deliveries 复选框。