"Payload" Facebook 机器人按钮上的选项
"Payload" option on Facebook Bots buttons
Facebook Send API 提到了可以为通用响应模板上的按钮设置的 "payload" 类型。但是,他们没有说明它是如何工作的,除了:
For postback buttons, this data will be sent back to you via webhook
可是怎么传回来的呢?单击有效负载按钮时,我没有收到任何消息。有人成功使用过吗?
我测试了它,它对我有用。按钮的有效负载就像 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}}
当您单击按钮时,一条 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
除外,您可以在其中对负载做出反应。
这是你读回有效载荷的方式:
$payload = $input['entry'][0]['messaging'][0]['postback']['payload'];
Facebook Send API 提到了可以为通用响应模板上的按钮设置的 "payload" 类型。但是,他们没有说明它是如何工作的,除了:
For postback buttons, this data will be sent back to you via webhook
可是怎么传回来的呢?单击有效负载按钮时,我没有收到任何消息。有人成功使用过吗?
我测试了它,它对我有用。按钮的有效负载就像 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}}
当您单击按钮时,一条 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
除外,您可以在其中对负载做出反应。
这是你读回有效载荷的方式:
$payload = $input['entry'][0]['messaging'][0]['postback']['payload'];