1

我想基於這個腳本寫信使BOT:Facebook的PHP使者博特 - 收到兩條消息

<?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. 發送「你好」;
  2. $ message =「Hello」;
  3. 接收消息:「Hi」;
  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頁面的頁認購部分複選框設置/網絡掛接。