松弛不发送 POST 按钮请求

slack doen't sent POST request on button

我正在尝试执行以下操作:

  1. python 脚本使用按钮和有效负载向 slack 发送消息,
  2. 用户点击松弛消息中的按钮,
  3. 按钮将 POST 和负载发送到请求 URL (aws api)

当前按钮不发送 POST。

我用以下 python 脚本伪造消息

slack_token = 'xoxp-1111-111-111-qqqqqq'
sc = slack.WebClient(slack_token)
sc.chat_postMessage(
    channel="QQQQQ",
    blocks=[
            {
                "type": "actions",
                "elements": [
                    {
                        "type": "button",
                        "text": {
                            "type": "plain_text",
                            "text": "send post"
                        }
                    }
                ]
            }
        ]
)

我在 slack 应用程序的 "Interactive Components" 和 "Event Subscriptions" 中将 https://here.aws.api.amazonaws.com/default/lambda 添加为 "Request url"。

当我向 bot POST 发送消息时,请求被发送到 aws api。

当我单击按钮时 POST 请求未发送。

尝试使用两个标记 xoxp- 和 xoxb-

问题是: slack 以奇怪的方式生成 http 请求。它不是 json,而是将 "blocks" 放入以下结构中:

{ ...... 'body': (byte[])\"payload=%7B%22type%22%3A%22block_actions%2 ...}

解码后等于:

{...payload={"type": "block_actions",...}

这不像 json 那样可读。 AWS API 拒绝了这些松弛请求。

A​​WS cloudwatch 帮助调查问题。 为避免这种情况,有必要在方法添加期间启用 "Use Lambda Proxy integration" 选项。