Facebook PHP Messenger Bot -接收两条消息


Facebook PHP Messenger Bot - receive two messages

我想根据这个脚本编写信使机器人:

<?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. 接收信息:"Hi";
  4. $message = "Hi";

我想跳过3和4点,只接收"Hello"消息,因为我必须检查$message是否是我的问题或答案。这可能吗?问候

您应该跳过任何阅读传递消息,如下所示:

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_delivery 复选框在您的Facebook页面设置/Webhooks页面订阅部分