Общий шаблон PHP-мессенджера click

Я разрабатываю бот-мессенджер с использованием PHP и curl. В настоящее время я отправляю JSON с общим шаблоном, но не знаю, как получить выбор пользователя. Я хочу получить информацию о том, какая кнопка была нажата для последующего использования. Я попытался проверить весь ответ, но это тоже не удалось. Я не вижу никаких ошибок в консоли. Я не использую никаких фреймворков.

    $input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
$message = $input['entry'][0]['messaging'][0]['message']['text'];
$message_to_reply = '';

if($message=="tshirt")
{

     $jsonData = '{
        "recipient":{
            "id":"'.$sender.'"
        },
"message":{
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"generic",
        "elements":[
           {
            "title":"Object1",

            "subtitle":"Description",

            "buttons":[
              {
                "type":"postback",
                "title":"L",
                "payload":"L_1"
              },{
                "type":"postback",
                "title":"XL",
                "payload":"XL_1"
              }              
            ]      
          }
        ]
      }
    }
  }
}';
}
if($message=="XL_1")
{
    $jsonData = '{
    "recipient":{
        "id":"'.$sender.'"
    },
    "message":{
        "text":"Added to basket"
    }
}';
}
if($message=="L_1")
{
    $jsonData = '{
    "recipient":{
        "id":"'.$sender.'"
    },
    "message":{
        "text":"Added to basket"
    }
}';
}

$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='.$access_token;
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
if(!empty($input['entry'][0]['messaging'][0]['message'])){
    $result = curl_exec($ch);
}

person michalmaniak    schedule 22.07.2018    source источник


Ответы (1)


Я нашел, как это исправить. Запрос общего шаблона JSON немного отличается от обычного сообщения. Шаги, которые я сделал:

  1. Добавить переменную постбэка

    $postback = $input['entry'][0]['messaging'][0]['postback']['payload'];

  2. Изменить оператор if для ответа сервера

    if(!empty($input['entry'][0]['message'][0]['message']) | !empty($input['entry'][0]['messaging'][0 ]['обратная передача']['полезная нагрузка'])){

person michalmaniak    schedule 23.07.2018