PHP как обработать кнопку начала работы Messenger Postback с чат-ботом - PullRequest
0 голосов
/ 18 февраля 2019

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

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

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

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

$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']; 

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

1 Ответ

0 голосов
/ 18 февраля 2019

Способ получения значения кнопки 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 отправляет обратную передачу в webhook, поэтому первый скрипт не был 't инициирование cUrl, потому что в переменной $ input не было 'message', а было свойство 'postback'

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

...