web-dev-qa-db-ja.com

Facebookボットボタンの「ペイロード」オプション

Facebook Send API Generic ResponseTemplateのボタンに設定できる「ペイロード」タイプについて言及しています。ただし、次の場合を除いて、どのように機能するかについては述べていません。

ポストバックボタンの場合、このデータはWebhook経由で返送されます

しかし、それはどのように返送されますか?ペイロードボタンをクリックしてもメッセージが表示されません。誰かがそれをうまく使用しましたか?

7
Matheus208

私はそれをテストしました、そしてそれは私のために働きます。ボタンのペイロードは、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}}
6
Juergen

ボタンをクリックすると、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);
});

このコードスニペットは、ペイロードに反応できるelse ifを除いて、Facebookのスタートガイドからのものです。

5
ush189

これは、ペイロードを読み戻す方法です。

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