在 python 中处理 Slack 按钮操作 POST 请求数据
Handle Slack button action POST request data in python
我正在尝试在 运行 宁斜杠命令时制作确认松弛按钮。例如我 运行 斜杠命令 (/test
) 将 POST 请求发送到我的 python 应用程序,后者发回 2 个按钮(确认、取消)。用户按下其中一个按钮 slack 会触发一个动作并向我的应用程序发送另一个 POST 请求。在此步骤之前一切正常 - 我无法正确处理来自第二个 POST 请求的数据。
在 Slack 文档中我发现了这个:
When an action is invoked, a request will be sent to the app's Request URL as configured above; the request body will contain a payload parameter that your app should parse for JSON.
当我做的时候
data=json.loads(request.form["payload"])
return jsonify(data)
我明白了
{
"action_ts": "XXXX",
"actions": [
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
],
"attachment_id": "X",
"callback_id": "XXXX",
"channel": {
"id": "XXXX",
"name": "XXXX"
},
"is_app_unfurl": false,
"message_ts": "XXXX",
"response_url": "XXXX",
"team": {
"domain": "XXXX",
"id": "XXXX"
},
"token": "XXXX",
"trigger_id": "XXXX",
"type": "interactive_message",
"user": {
"id": "XXXX",
"name": "XXXX"
}
}
我打电话后
data=json.loads(request.form["payload"])
action=data["actions"]
return jsonify(action)
我明白了
[
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
]
现在,当我尝试使用 action["name"]
获取 "name"
的值时,我收到错误消息
TypeError: 列表索引必须是整数或切片,而不是 str
我试过 json.dumps(action)
和 json.dumps(action["name"])
都没有用。
如何读取该值?我需要检查 name
的值,然后用它做剩下的事情。
[
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
]
是一个包含一个元素的列表——字典。访问名称如data["actions"][0]["name"]
我正在尝试在 运行 宁斜杠命令时制作确认松弛按钮。例如我 运行 斜杠命令 (/test
) 将 POST 请求发送到我的 python 应用程序,后者发回 2 个按钮(确认、取消)。用户按下其中一个按钮 slack 会触发一个动作并向我的应用程序发送另一个 POST 请求。在此步骤之前一切正常 - 我无法正确处理来自第二个 POST 请求的数据。
在 Slack 文档中我发现了这个:
When an action is invoked, a request will be sent to the app's Request URL as configured above; the request body will contain a payload parameter that your app should parse for JSON.
当我做的时候
data=json.loads(request.form["payload"])
return jsonify(data)
我明白了
{
"action_ts": "XXXX",
"actions": [
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
],
"attachment_id": "X",
"callback_id": "XXXX",
"channel": {
"id": "XXXX",
"name": "XXXX"
},
"is_app_unfurl": false,
"message_ts": "XXXX",
"response_url": "XXXX",
"team": {
"domain": "XXXX",
"id": "XXXX"
},
"token": "XXXX",
"trigger_id": "XXXX",
"type": "interactive_message",
"user": {
"id": "XXXX",
"name": "XXXX"
}
}
我打电话后
data=json.loads(request.form["payload"])
action=data["actions"]
return jsonify(action)
我明白了
[
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
]
现在,当我尝试使用 action["name"]
获取 "name"
的值时,我收到错误消息
TypeError: 列表索引必须是整数或切片,而不是 str
我试过 json.dumps(action)
和 json.dumps(action["name"])
都没有用。
如何读取该值?我需要检查 name
的值,然后用它做剩下的事情。
[
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
]
是一个包含一个元素的列表——字典。访问名称如data["actions"][0]["name"]