【问题标题】:How to get payload value from quick replies on Facebook Messenger如何从 Facebook Messenger 上的快速回复中获取有效负载价值
【发布时间】:2018-01-12 16:10:35
【问题描述】:

我正在尝试从用于在 Messenger 上创建聊天机器人的快速回复中获取有效负载,但我不断收到此错误:KeyError: 'quick_reply'。我正在使用 python 来创建机器人。我已经尝试了所有可以想象的方法,例如:

@app.route('/', methods=['POST'])
def webhook():
  data = request.get_json()
  log(data)

  if data["object"] == "page":
    for entry in data["entry"]:
        for messaging_event in entry["messaging"]:
            if messaging_event.get("message"):


                recieved(messaging_event)

                message_text = messaging_event["message"]["quick_reply"]["payload"]

            if messaging_event.get("delivery"):
                pass

            if messaging_event.get("optin"):
                pass

            if messaging_event.get("postback"):
                pass

  return "ok", 200

但是每个人都给我同样的问题。我查看了在线和文档,但似乎没有答案。有什么见解吗?

【问题讨论】:

  • 能否贴出完整的代码,包括messaging_event的设置位置?
  • 是的,这是我的完整代码@amuramoto
  • 您确定快速回复是收到的内容,而不是消息回显或其他事件吗?尝试将条件 if messaging_event.get("message"): 更改为 if messaging_event.message.get("quick_reply"): 以确保您仅在收到实际快速回复时才输入该块。
  • 我刚试过这个,不幸的是它没有工作@amuramoto我只是不确定为什么我不能得到有效载荷
  • 您已经验证,当您使用if messaging_event.message.get("quick_reply") 门禁时,您的代码会进入该区块?如果是这种情况,我会检查 quick_reply 是否是一个对象,而不是出于某种原因的字符串。

标签: python facebook bots facebook-messenger facebook-messenger-bot


【解决方案1】:

点击快速回复时,将向您的 webhook 消息接收回调发送一条短信。消息的文本将对应于快速回复的标题。消息对象还将包含一个名为 quick_reply 的字段,其中包含快速回复上的有效负载数据。

如此快速的回复负载将类似于 message.quick_reply.payload

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多