【发布时间】:2017-04-20 07:10:39
【问题描述】:
当用户单击其中一条消息中的按钮时,我想访问 Slack 发送到交互式消息请求 URL 的有效负载参数。
我该怎么做?
【问题讨论】:
当用户单击其中一条消息中的按钮时,我想访问 Slack 发送到交互式消息请求 URL 的有效负载参数。
我该怎么做?
【问题讨论】:
在您的服务器端,检查您的请求 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])
希望有一天能对其他人有所帮助!
【讨论】:
urllib.parse.parse_qs(request.get_data().decode())
如果您使用 AWS lamdba 作为后端,请使用以下内容。 (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 中看到的有效负载操作详细信息,通常大多数人只有一个相关操作要处理。
【讨论】: