我在facebook Messenger聊天机器人中的quick_reply遇到问题;
问题是:我创建了一个2选项快速回复按钮,但是我不知道单击2按钮之一后如何继续流程。
此处的代码:https://glitch.com/edit/#!/daffodil-authorization?path=app.js:267:3
它是如何工作的:如果您点击“生活的意义”,将出现2个快速回复按钮“ 42”和“ chocolate”,但是在单击时,机器人将照常回答您(重复您的操作)写);我如何允许机器人听“ 42”或“巧克力”并继续其他操作?
答案 0 :(得分:0)
Quick Replies与 Buttons 的不同之处在于,它们的有效载荷不会作为 Postback 消息返回,而是作为普通消息,就像用户自己键入并发送消息一样。
从字面上看,这只是用户返回答复,比输入更快的一种方式。因此,您的漫游器将其视为普通邮件,因为它是作为普通邮件发送的。
因此,您的代码都需要解析并捕获正常的传入消息,以查找“ 42”或“ chocolate”。或从使用对实际回发按钮的快速回复更改为,以便您可以捕获通过回发消息返回的邮件。
答案 1 :(得分:0)
您可以使用Quick Replies,然后在其上捕获用户的响应!
我的机器人没有在寻找按钮标题(您的“ 42”和“ chocolate”,我将它们从echo函数中排除了),并取决于下一步执行的“ Payload”运行。
“轻按快速答复后,按钮将被关闭,轻按的按钮的标题将作为消息发布到对话中。消息事件将发送到您的Webhook,其中包含按钮标题和可选的有效载荷。”
为快速回复按钮添加了有效负载(用于2 k-v对):
response_sent_text = "My text"
buttons = (
{
"content_type": "text",
"title": "Python_title",
"payload": json.dumps(
{"id": i_id, "language": "python"}
),
},
)
bot.send_message(
recipient_id,
message={"text": response_sent_text, "quick_replies": buttons},
)
并用它来捕捉:
for message in messaging:
payload = (message.get("message", {}).get("quick_reply", {}).get("payload"))
if payload:
returned_payload = json.loads(payload)
if returned_payload["language"] == "python":
pass