Бот Facebook messenger - получает одно и самое первое сообщение

Бот мессенджера Facebook - получает одно и самое первое сообщение непрерывно каждые 2 минуты.

Я создал бота на PHP и установил webhook. Но я получаю триггер webhook каждые две минуты, независимо от того, добавил/получил ли я новое сообщение или нет.

Еще одна вещь заключается в том, что мы получаем только самые первые сообщения. После этого сообщения так много новых сообщений, но мы получаем только одно сообщение.

Где я не прав? Я следил за этой статьей: http://blog.adnansiddiqi.me/develop-your-first-facebook-messenger-bot-in-php/


person Mr. HK    schedule 16.01.2018    source источник
comment
Убедитесь, что ваша конечная точка веб-перехватчика отвечает 200 OK достаточно быстро (я думаю, максимально допустимое значение составляет шесть секунд), иначе Facebook сочтет это ошибкой и попытается отправить то же обновление еще раз.   -  person CBroe    schedule 16.01.2018
comment
Пожалуйста, прочитайте При каких обстоятельствах я могу добавить «срочно» или другие подобные фразы к моему вопросу, чтобы получить более быстрые ответы? - Подводя итог, можно сказать, что это не идеальный способ обращения к волонтерам и, вероятно, контрпродуктивно для получения ответов. Пожалуйста, воздержитесь от добавления этого к своим вопросам.   -  person halfer    schedule 16.01.2018


Ответы (1)


Мы получили решение:

$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
$message = isset($input['entry'][0]['messaging'][0]['message']['text']) ? $input['entry'][0]['messaging'][0]['message']['text'] : '';
if (!empty($input['entry'][0]['messaging'])) {

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

        $command = "";

        // When bot receive message from user
        if (!empty($message['message'])) {
            $command = $message['message']['text'];
        }
        // When bot receive button click from user
        else if (!empty($message['postback'])) {
            $command = $message['postback']['payload'];
        }
    }
}



$pagetoken = "PAGE TOKEN"; // Facebook TOKEN
if ($command) {

    if ($command == "hii") {
        $message_to_reply = "test_response";
    } else if ($command == "need more info") {
        $message_to_reply = "Please fill form at link ";
    } else if ($command == "\ud83d\ude00") {
        $message_to_reply = "smiley";
    }

    if ($message_to_reply != "") {
        $url = "https://graph.facebook.com/v2.6/me/messages?access_token=$pagetoken";
//Initiate cURL.
        $ch = curl_init($url);
//The JSON data.
        $jsonData = '{
        "recipient":{
        "id":"' . $sender . '"
        }, 
         "message":{
            "text":"' . $message_to_reply . '"
         }
       }';
        $jsonDataEncoded = $jsonData;
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        if (!empty($input['entry'][0]['messaging'][0]['message'])) {
            $result = curl_exec($ch);
        }
        curl_close($ch);
    }
}

header('HTTP/1.1 200 OK');  //  This line needs to be added

die;
person Mr. HK    schedule 17.01.2018