【问题标题】:Quick reply on Facebook messenger problem快速回复 Facebook Messenger 问题
【发布时间】:2019-03-05 14:44:53
【问题描述】:

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

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

这里是代码:https://glitch.com/edit/#!/daffodil-authorization?path=app.js:267:3

它是如何工作的?:如果你点击“生命的意义是什么”,2个快速回复按钮会出现“42”和“巧克力”,但在点击时,机器人会像往常一样回复你(重复你写);我怎样才能让机器人听“42”或“巧克力”并继续做其他事情?

【问题讨论】:

  • 您能否将您的代码直接发布到问题中而不是通过链接?

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


【解决方案1】:

Quick RepliesButtons 的不同之处在于它们的有效负载不会作为 Postback 消息返回,而是作为普通消息传递,就像用户一样自己输入并发送消息。

这实际上只是用户返回回复的一种方式,比打字更快。因此,您的机器人将其视为普通消息,因为它是作为普通消息发送的。

因此,要么您的代码需要解析和捕获正常的传入消息,要么查找“42”或“chocolate”。或者从使用快速回复更改为实际的回发按钮,这样您就可以通过回发消息捕获它们。

【讨论】:

    【解决方案2】:

    您可以使用Quick Replies,然后捕捉用户对它们的响应!

    我的机器人不寻找按钮标题(您的“42”和“巧克力”,我将它们从我的回显功能中排除)并且依赖于“有效负载”运行下一个操作。

    “当点击快速回复时,按钮将被关闭,并且点击按钮的标题作为消息发布到对话中。消息事件将发送到您的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      相关资源
      最近更新 更多