首页 文章

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

提问于
浏览
1

我正在尝试在运行斜杠命令时进行确认松弛按钮 . 例如我运行slash-command( /test )它将POST请求发送到我的python应用程序,该应用程序发回2个按钮(确认,取消) . 用户按下其中一个按钮,松弛触发一个动作,并向我的应用程序发送另一个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" 的值时,我收到错误

TypeError:list indices必须是整数或切片,而不是str

我试过 json.dumps(action)json.dumps(action["name"]) 都没有奏效 . 如何阅读这些 Value 观?我需要检查 name 的值,然后用它来完成剩下的工作 .

1 回答

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

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

相关问题