如何访问 Slack 的 Interactive Message 请求负载参数?

How to access Slack's Interactive Message request payload parameter?

当用户点击这些消息之一中的按钮时,我想访问 Slack 发送给交互式消息请求 Url 的负载参数。

我该怎么做?

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

Your Action URL will receive a HTTP POST request, including a payload body parameter, itself containing an application/x-www-form-urlencoded JSON string.

您首先必须解码请求的 x-www-form-urlencoded 格式,然后 json解码它。

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

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

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

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

import json
from urllib.parse import parse_qs

payload = json.loads(parse_qs(event['body'])['payload'][0])

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

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

希望对以后的人有所帮助。

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

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

第三行只是访问负载操作详细信息,如 Block Link Builder 中所示,通常大多数人只会处理一个相关操作。