2016-04-25 18 views
7

Facebook Send API menziona un tipo di "payload" che è possibile impostare per i pulsanti sul modello di risposta generico. Tuttavia, essi non dicono come funziona, diverso:Opzione "Payload" sui pulsanti Facebook Bot

Per i pulsanti di postback, questi dati verranno inviati di nuovo voi via webhook

ma come è inviato indietro? Non ricevo alcun messaggio quando faccio clic sul pulsante del payload. Qualcuno l'ha usato con successo?

+2

hai sottoscritto messaging_postbacks opzione durante l'installazione web-gancio per messenger bot ..? https://developers.facebook.com/docs/messenger-platform/webhook-reference – piyushmandovra

risposta

5

L'ho provato e funziona per me. Il carico utile di un pulsante si comporta come il valore di un pulsante html. Ciò significa che non è visibile all'utente, ma è il valore che ti viene restituito.

Se si crea un pulsante mi piace che:

'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' 
      } 
     ] 
} 

Un callback tra cui un carico utile che assomiglia:

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

come catturare il suo valore in php? – runningmark

+1

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

+0

Hai provato queste righe? Ho provato non funziona –

3

Quando si fa clic sul pulsante di un messaggio POST viene inviato al tuo /webhook.

si deve gestire il carico utile in questo modo:

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); 
}); 

Questo frammento di codice è dalla Guida introduttiva da Facebook ad eccezione del else if in cui si può reagire sul carico utile.

+0

ciao, come possiamo implementare con php, incapace di trovare il modo perfetto per ottenere il valore del carico utile – runningmark

0

Questo è il modo di leggere di nuovo il carico utile:

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