我在Facebook Messenger聊天bot中遇到Quick_reply的问题;
问题是:我创建了一个2个选项快速回复按钮,但我不知道如何在2个按钮之一点击之后继续流动。
在这里代码:https://glitch.com/edit/#!/daffodil-authorization?path = app.js:267:3
它是如何工作的?:如果您点击"生命的含义",则2个快速回复按钮将出现" 42"one_answers"巧克力",但是在点击时,机器人会照常回答您(重复您的内容写);我如何让机器人收听" 42"或"巧克力"并继续其他内容?
快速回复与 buttons 不同,因为他们的有效载荷不会返回为 postback 息,但是取而代之的是作为正常消息传递,好像用户键入并亲自发送了消息。
从字面上看,这只是用户返回a 回复的一种方式,比键入更快。因此,您的机器人将其视为普通消息,因为它是作为普通消息发送的。
因此,您的代码需要解析并捕获正常传入的消息,而要寻找" 42"或"巧克力"。或更改对实际回发按钮的快速回复,以便您可以通过回发消息返回它们。
您可以使用快速答复,然后在它们上捕获用户的响应!
我的机器人不是在寻找按钮标题(您的" 42"one_answers"巧克力",我将它们排除在我的回声函数之外),并且取决于下一个动作的"有效载荷"运行。
"当快速回复点击时,按下按钮被删除,并将点击按钮的标题发布到对话中。可选有效载荷。"
添加有效载荷(使用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