PHP, как обрабатывать кнопку «Начать работу» Постбэк Messenger с чат-ботом

Я работаю над чат-ботом Messenger в режиме разработки и добился определенного прогресса в работе с сообщениями и быстрыми ответами, но не могу найти способ обнаружить событие полезной нагрузки Postback, отправленное Facebook после того, как пользователь нажмет кнопку «Начать».

Я установил обратную передачу кнопки «Начать» и поместил строку полезной нагрузки, отправив запрос POST в API профиля Messenger, который вернул «успех», а также установил событие «messaging_postbacks» для моего веб-перехватчика.

Однако при нажатии кнопки веб-перехватчик не обнаруживает событие.

Это часть моего кода:

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

//this handles the message text properly
$message = $input['entry'][0]['messaging'][0]['message']['text'];

//this deals correctly with quick reply payload
$quickreply = $input['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];

Я пробовал отдельно и безуспешно каждую из этих строк кода, чтобы получить ввод обратной передачи, запускаемый кнопкой «Начать»:

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

Буду признателен за любые предложения :)


person max13    schedule 18.02.2019    source источник


Ответы (1)


Способ получить значение кнопки get_started был среди тех, которые я пробовал, в частности:

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

Проблема была связана с отдельной частью моего кода в cURL, которая отправляет запрос POST.

Он сказал:

if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);

И нужно было сказать:

if(!empty($input['entry'][0]['messaging'][0]['postback'])){
$result = curl_exec($ch);

Кнопка get_started отправляет обратную передачу в веб-перехватчик, поэтому первый скрипт не инициировал cUrl, потому что в переменной $input не было «сообщения», но было свойство «обратная передача».

Хороший видеоресурс по той же проблеме: https://www.youtube.com/watch?v=JQkmznEfVDo

person max13    schedule 18.02.2019