Facebook Bots 按钮上的“有效负载”选项
Posted
技术标签:
【中文标题】Facebook Bots 按钮上的“有效负载”选项【英文标题】:"Payload" option on Facebook Bots buttons 【发布时间】:2016-08-19 11:08:31 【问题描述】:Facebook Send API 提到您可以为通用响应模板上的按钮设置的“有效负载”类型。但是,他们没有说明它是如何工作的,除了:
对于回发按钮,此数据将通过 webhook 发回给您
但是它是如何被送回的呢?单击有效负载按钮时,我没有收到任何消息。有人成功用过吗?
【问题讨论】:
您是否在为 messenger bot 设置 web-hook 时订阅了 messing_postbacks 选项..? developers.facebook.com/docs/messenger-platform/… 【参考方案1】:这是您读回有效负载的方式:
$payload = $input['entry'][0]['messaging'][0]['postback']['payload'];
【讨论】:
【参考方案2】:当您单击按钮时,一条 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);
);
此代码 sn-p 来自 Facebook 的入门指南,但 else if
除外,您可以在其中对有效负载做出反应。
【讨论】:
嗨,我们如何用php实现,找不到完美的方法来获取payload的值【参考方案3】:我测试了它,它对我有用。按钮的有效负载类似于 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
【讨论】:
如何在 php 中获取它的值? @runningmarkif(isset($input['entry'][0]['messaging'][0]['message']['quick_reply'])) $payload_txt = $input['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];
你测试过这些行吗?我试过了,还是不行
在调试期间,我将收到的所有请求记录到一个文本文件中:file_put_contents("testfile.txt", json_encode( $input ) . PHP_EOL, FILE_APPEND | LOCK_EX);
适合查看请求结构以上是关于Facebook Bots 按钮上的“有效负载”选项的主要内容,如果未能解决你的问题,请参考以下文章