【问题标题】:How to access Slack's Interactive Message request payload parameter?如何访问 Slack 的交互式消息请求负载参数?
【发布时间】:2017-04-20 07:10:39
【问题描述】:

当用户单击其中一条消息中的按钮时,我想访问 Slack 发送到交互式消息请求 URL 的有效负载参数。

我该怎么做?

【问题讨论】:

    标签: python slack-api slack


    【解决方案1】:

    在您的服务器端,检查您的请求 url 路由是否允许接收 POST。 正如他们的文档 (https://api.slack.com/docs/message-buttons) 中所说:

    您的操作 URL 将收到一个 HTTP POST 请求,包括有效负载 body 参数,本身包含一个 application/x-www-form-urlencoded JSON 字符串。

    你首先要解码请求的x-www-form-urlencoded格式,然后json解码。

    在python中,我最终得到了这行代码:

    payload = json.loads(urlparse.parse_qs(request.get_data())['payload'][0])
    

    希望有一天能对其他人有所帮助!

    【讨论】:

    • 并在 Python3 中使用 urllib.parse.parse_qs(request.get_data().decode())
    【解决方案2】:

    如果您使用 AWS lamdba 作为后端,请使用以下内容。 (python3)

    import json
    from urllib.parse import parse_qs
    
    payload = json.loads(parse_qs(event['body'])['payload'][0])
    

    【讨论】:

      【解决方案3】:

      我设法通过这种方式获取信息:

      data = request.form.to_dict()
      payload = json.loads(data['payload'])
      print(payload["actions"][0]["name"])
      

      希望它对未来的人有所帮助。

      第一行将 ImmutableDict 转换为可变字典。

      第二行是必要的,因为负载仍然是 JSON。

      第三行只是访问在Block Link Builder 中看到的有效负载操作详细信息,通常大多数人只有一个相关操作要处理。

      【讨论】:

      • 这对我有帮助....非常感谢。顺便说一句,第三行的最后一个右括号应该在第二行
      猜你喜欢
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多