Facebook PHP Messenger Bot — получить два сообщения

Я хотел бы написать мессенджер-бот на основе этого скрипта:

<?php
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

// Set this Verify Token Value on your Facebook App
if ($verify_token === 'testtoken') {
echo $challenge;
}

$input = json_decode(file_get_contents('php://input'), true);

// Get the Senders Graph ID
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];

// Get the returned message
$message = $input['entry'][0]['messaging'][0]['message']['text'];

//API Url and Access Token, generate this token value on your Facebook App Page
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=<ACCESS-TOKEN-VALUE>';

//Initiate cURL.
$ch = curl_init($url);

//The JSON data.
$jsonData = '{
"recipient":{
"id":"' . $sender . '"},
"message":{
"text":"The message you want to return"}
}';

//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);

//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

//Execute the request but first check if the message is not empty.
if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);
}
?>

Все работает правильно, но я получаю два ответа на переменную $ message, например:

  1. Отправить «Привет»;
  2. $ message = «Hello»;
  3. Получите сообщение: «Привет»;
  4. $ message = «Привет»;

Я хотел бы пропустить 3 и 4 балла и получить только сообщение «Hello», потому что я должен проверить, является ли $ message моим вопросом или ответом. Является ли это возможным?
Привет

1

Решение

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

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 / Webhooks.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]