快速回复Facebook Messenger问题

时间:2019-03-05 14:44:54

标签: javascript chatbot facebook-messenger messenger facebook-chatbot

我在facebook Messenger聊天机器人中的quick_reply遇到问题;

问题是:我创建了一个2选项快速回复按钮,但是我不知道单击2按钮之一后如何继续流程。

此处的代码:https://glitch.com/edit/#!/daffodil-authorization?path=app.js:267:3

它是如何工作的:如果您点击“生活的意义”,将出现2个快速回复按钮“ 42”和“ chocolate”,但是在单击时,机器人将照常回答您(重复您的操作)写);我如何允许机器人听“ 42”或“巧克力”并继续其他操作?

2 个答案:

答案 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