在python中处理Slack按钮操作POST请求数据



我正在尝试在运行斜杠命令时制作确认松弛按钮。 例如,我运行斜杠命令(/test(,它将POST请求发送到我的python应用程序,该应用程序发回2个按钮(确认,取消(。用户按下其中一个按钮 slack 会触发操作并向我的应用发送另一个 POST 请求。在此步骤之前一切正常 - 我无法正确处理第二个 POST 请求中的数据。

在Slack文档中,我发现了这个:

调用操作时,请求将发送到应用的请求 URL,如上配置所示;请求正文将包含一个有效负载参数,应用应针对该参数解析 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"值时,我收到错误

类型错误:列表索引必须是整数或切片,而不是 str

我尝试了json.dumps(action)json.dumps(action["name"])它们都不起作用。 如何读取该值?我需要检查name的值,然后用它完成其余的工作。

[
{
"name": "confirm",
"type": "button",
"value": "confirm"
}
]

是一个包含一个元素的列表 - 字典。像data["actions"][0]["name"]一样访问名称

最新更新