Facebook Messenger Chatbot — я не могу ответить на постбек

Я пишу бота для Facebook на PHP. Я могу отправить текст и отправить и ответить на быстрые ответы. Однако мне невозможно ответить на постбэк. Я использую ngrok для тестирования на локальном хосте, но я знаю, что проблема не в этом, поскольку 1. он не работает ни на моем vps, ни 2. все остальные функции работают должным образом.

Мой код для отправки постбэка:

$jsonData = '{
"recipient":{
"id":"'.$sender.'"},
"message":{
"attachment":{
"type":"template",
"payload":{
"template_type":"button",
"text":"What do you want to do next?",
"buttons":[
{
"type":"postback",
"title":"Start Chatting",
"payload":"USER_DEFINED_PAYLOAD"}
]
}
}
}
}';
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token;
$ch = curl_init($url);

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

if(!empty($message_body['message'])){
$result = curl_exec($ch);
}

Затем, когда я получаю постбэк, я получаю это от мессенджера FB:

{
"object": "page",
"entry": [
{
"id": "590445400970275",
"time": 1494251031827,
"messaging": [
{
"recipient": {
"id": "590445400970275"},
"timestamp": 1494251031827,
"sender": {
"id": "1075794782546272"},
"postback": {
"payload": "USER_DEFINED_PAYLOAD"}
}
]
}
]
}

и мой код для его анализа:

$input = json_decode(file_get_contents('php://input'), true);
$message_body = $input['entry'][0]['messaging'][0];
$sender = $message_body['sender']['id'];
if (isset($message_body['postback'])){
//Reception d'un postback
$postback = $message_body['postback']['payload'];
if ($postback == "USER_DEFINED_PAYLOAD"){
// The JSON data.
$jsonData = '{
"recipient":{
"id":"'.$sender.'"},
"message":{
"text":"messagetoreply"}
}';
}
}

Это отправляется функцией curl как сообщение ранее.

Однако посланник никогда не получает ответ:
введите описание изображения здесь

Может ли кто-нибудь помочь мне выяснить, в чем проблема?

большое спасибо

0

Решение

В моем коде была ошибка в этой части:

if(!empty($message_body['message'])){
$result = curl_exec($ch);
}

поскольку переменная $ message_body не является «сообщением», а «обратной передачей», curl не отправлял ответ.

0

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

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

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