Facebook Bots按钮上的"Payload"选项

Mat*_*208 7 facebook bots facebook-messenger

Facebook Send API提到了可以为通用响应模板上的按钮设置的"有效负载"类型.但是,他们没有说它是如何工作的,除了:

对于回发按钮,此数据将通过webhook发回给您

但它是如何送回的?单击有效负载按钮时,我没有收到任何消息.有没有人成功使用它?

Jue*_*gen 6

我测试了它,它对我有用.按钮的有效负载与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'
             }
        ]
 }
Run Code Online (Sandbox Code Playgroud)

包含有效负载的回调类似于:

{'timestamp': 1461697120850, 'postback': {'payload': 'this is the value you get back'}, 'recipient': {'id': xxxxxxxx}, 'sender': {'id': xxxxxxxx}}
Run Code Online (Sandbox Code Playgroud)

  • 在调试期间,我将收到的所有请求记录到文本文件中:file_put_contents("testfile.txt",json_encode($ input).PHP_EOL,FILE_APPEND | LOCK_EX); (2认同)

ush*_*189 5

当您单击按钮时,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);
});
Run Code Online (Sandbox Code Playgroud)

此代码段来自Facebook的"入门指南",除了else if您可以对有效负载做出反应的位置.