在Facebook Messenger问题上快速回复



我在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

最新更新