WebHook中的无限循环

Mat*_*nna 6 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

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

Anc*_*cle 3

根据你的代码,我认为你无法设置你的网络钩子,所以从文档

在您的 webhook URL 中,添加验证代码。您的代码应该需要您之前定义的验证令牌,并使用验证请求中发回的质询进行响应。单击新页面订阅中的“验证并保存”按钮,通过 GET 请求调用您的 webhook。

因此,要使 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;
}
Run Code Online (Sandbox Code Playgroud)

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

或者,如果您的 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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