使用python

时间:2018-06-28 11:59:34

标签: python python-3.x python-requests slack

我试图在运行斜线命令时使确认松弛按钮。例如我运行斜杠命令(/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"
    }
]

现在,当我尝试使用"name"获取action["name"]的值时,会收到错误消息

TypeError:列表索引必须是整数或切片,而不是str

我尝试了json.dumps(action)json.dumps(action["name"])都没有用。 如何读取该值?我需要检查name的值,然后再处理其余的值。

1 个答案:

答案 0 :(得分:1)

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

是一个包含一个元素的列表-字典。访问类似data["actions"][0]["name"]

的名称