2016-04-25 4 views
7

Facebook Send API упоминает тип «полезной нагрузки», который вы можете установить для кнопок на шаблоне общего ответа. Тем не менее, они не говорят, как это работает, кроме:Опция «Полезная нагрузка» на Facebook Боты кнопки

Для кнопок обратной передачи, эти данные будут отправлены обратно к вам через webhook

Но как он отправляется обратно? Я не получаю никаких сообщений, когда я нажимаю кнопку полезной нагрузки. Кто-нибудь успешно использовал его?

+2

сделал вы подписались на messaging_postbacks опции при настройке веб-крюк для мессенджера бот ..? https://developers.facebook.com/docs/messenger-platform/webhook-reference – piyushmandovra

ответ

5

Я тестировал его, и он работает для меня. Полезная нагрузка кнопки действует как значение на кнопке html. Это означает, что он не отображается пользователю, но это значение, которое возвращается вам.

При создании кнопки так:

'attachment': { 
    'type': 'template', 
    'payload': { 
     'template_type': 'button', 
     'text': 'This is the description', 
     'buttons': [ 
      { 
       'type': 'postback', 
       'title': 'This is the visible text', 
       'payload': 'This is the value you get back' 
      } 
     ] 
} 

обратного вызова, включая полезную нагрузку выглядит следующим образом:

{'timestamp': 1461697120850, 'postback': {'payload': 'this is the value you get back'}, 'recipient': {'id': xxxxxxxx}, 'sender': {'id': xxxxxxxx}} 
+0

как захватить его значение в php? – runningmark

+1

@runningmark 'if (isset ($ input ['entry'] [0] ['messaging'] [0] ['message'] ['quick_reply'])) { \t $ payload_txt = $ input ['entry' ] [0] ['messaging'] [0] ['message'] ['quick_reply'] ['payload']; ' – Abhishek

+0

Вы проверили эти строки? Я попробовал это не работает –

3

При нажатии на кнопку сообщение POST отправляется на ваш /webhook.

Вы должны обрабатывать полезную нагрузку, как это:

app.post('/webhook/', function (req, res) { 
    messaging_events = req.body.entry[0].messaging; 
    for (i = 0; i < messaging_events.length; i++) { 
    event = req.body.entry[0].messaging[i]; 
    sender = event.sender.id; 
    if (event.message && event.message.text) { 
     text = event.message.text; 
     // Handle a text message from this sender 
    } else if (event.postback && event.postback.payload) { 
     payload = event.postback.payload; 
     // Handle a payload from this sender 
    } 
    } 
    res.sendStatus(200); 
}); 

Этот фрагмент кода из Руководство по началу работы с Facebook для else if, где вы можете реагировать на полезную нагрузку, за исключением.

+0

привет, как мы можем реализовать с php, не в состоянии найти идеальный способ получить значение полезной нагрузки – runningmark

0

Это, как вы считаны полезная нагрузка:

$payload = $input['entry'][0]['messaging'][0]['postback']['payload']; 
Смежные вопросы