无法在斜杠命令请求中获取命令

时间:2021-03-25 15:43:53

标签: slack slack-api slack-commands

我在 slack 上创建了一个斜杠命令。

但是,当我触发它时,我在服务器上收到的发布请求如下:

{'version': '2.0',
 'routeKey': 'POST /server',
 'rawPath': '/Work/server',
 'rawQueryString': '',
 'headers': {'accept': 'application/json,*/*',
  'accept-encoding': 'gzip,deflate',
  'content-length': '421',
  'content-type': 'application/x-www-form-urlencoded',
  'host': 'xxx',
  'user-agent': 'Slackbot 1.0 (+https://api.slack.com/robots)',
  'x-amzn-trace-id': 'xxx',
  'x-forwarded-for': 'xxx',
  'x-forwarded-port': '443',
  'x-forwarded-proto': 'https',
  'x-slack-request-timestamp': '1616684124',
  'x-slack-signature': 'xxx'},
 'requestContext': {'accountId': '255912899710',
  'apiId': 'xxx',
  'domainName': 'xxx',
  'domainPrefix': 'xxx',
  'http': {'method': 'POST',
   'path': '/Work/Slack_interaction',
   'protocol': 'HTTP/1.1',
   'sourceIp': '3.89.205.168',
   'userAgent': 'Slackbot 1.0 (+https://api.slack.com/robots)'},
  'requestId': 'cv6edg75iGYEJaQ=',
  'routeKey': 'POST /Slack_interaction',
  'stage': 'Work',
  'time': '25/Mar/2021:14:55:24 +0000',
  'timeEpoch': 1616684124418},
 'body': 'xxxtokenxxx',
 'isBase64Encoded': True}

我没有得到任何 commandtext 键,因为它应该是根据 doc

有人知道发生了什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这里的问题是交互的细节在有效载荷的正文中,该正文当前按照字段 'isBase64Encoded': True 的建议进行编码

您应该能够在解码后获得所需的所有信息。我的实现使用了 python 的 base64 library,但我相信您可以找到适合您使用的任何语言的等效工具。

slack bolt 这样的库也会为您处理这一步。

请注意,根据我的测试,所有交互负载都按此编码,另一方面,事件负载不是,可以直接解析