бесконечный цикл в WebHook

Я делаю бота для обмена сообщениями в Facebook. После запуска он вызывает WebHook. К сожалению после первого запуска не перестанет кидать один и тот же вызов с теми же параметрами. Настройки следующие:

  • сообщения_доставки;
  • сообщение_прочитано;
  • Сообщения;
  • сообщения_optins;
  • сообщения_постбэки.

Исходный код: https://github.com/Ellusu/nuraghebot-facebookmessenger/blob/master/index.php

Где я не прав? Почему звонит только один?


person Matteo Enna    schedule 07.09.2016    source источник


Ответы (1)


По вашему коду я решил, что вы не можете настроить свой веб-хук, поэтому из документация

В URL-адрес веб-перехватчика добавьте код для проверки. Ваш код должен ожидать токен проверки, который вы определили ранее, и отвечать вызовом, отправленным обратно в запросе проверки. Нажмите кнопку «Проверить и сохранить» в подписке на новую страницу, чтобы вызвать веб-перехватчик с запросом GET.

Таким образом, чтобы PHP смог успешно настроить веб-перехватчик, вы должны вернуть параметр 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;
}

После успешной настройки вы можете удалить этот код из своего скрипта.

Или, если ваш вебхук уже подключился:

Вы должны пропустить любые сообщения прочитано и доставки, например:

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 и message_deliveries в разделе «Подписка на страницу» в настройках вашей страницы Facebook/веб-перехватчиков.

person Ancle    schedule 08.09.2016
comment
эта задача уже была сделана во время создания и уже отменена. Без этой операции было невозможно совершать звонки. - person Matteo Enna; 09.09.2016
comment
У вас есть журналы? Какое именно сообщение вы получаете? - person Ancle; 12.09.2016
comment
Кроме того, я проверил ваш код на своем боте, и он работает правильно. - person Ancle; 12.09.2016
comment
Нет ошибок. Я отправил сообщение, а он бесконечно запускает код в вебхуках - person Matteo Enna; 12.09.2016
comment
Хорошо, я думаю, что вы получаете доставку или читаете сообщение, и это приводит к бесконечному циклу. Вы должны пропустить эти сообщения как описано здесь - person Ancle; 12.09.2016