1

Я хотел бы написать посыльный бот на основе этого сценария:Facebook PHP Посланник 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); 
} 
?> 

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

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

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

ответ

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.

Смежные вопросы