Slack Events API验证事件订阅URL时token、challenge为空
Slack事件订阅URL验证字段为空排查指南
按以下优先级逐一排查,90%以上的字段为空问题都是网关/函数层解析配置错误导致,而非Slack侧问题:
1. API Gateway 配置排查
- 检查集成模式:如果使用Lambda代理集成,删除所有自定义请求体映射模板,自定义模板会覆盖原始请求内容,导致Lambda收到空payload。
- 检查Content-Type规则:Slack验证请求的格式为
application/json,确认API Gateway未强制将请求转换为表单格式、未拦截JSON类型请求。 - 自测验证:本地用POST工具向你的API地址发送携带测试JSON体的POST请求,查看Lambda日志中是否能收到完整请求体,如果自测也拿不到body内容,直接修复网关配置即可,和Slack无关。
- 检查编码配置:Lambda代理集成下,部分区域API Gateway会把请求体做base64编码传输,需要先判断
isBase64Encoded字段,为true时先做base64解码再解析JSON,直接解析会拿到空值。
2. 请求地址合规性排查
- 确认填入Slack后台的是公网可访问的标准HTTPS地址,不支持HTTP协议、自签名证书HTTPS、非443端口的HTTPS地址,不符合规范的地址会触发Slack发送空payload的试探请求。
- 不要在请求URL后拼接自定义query参数,多余参数会触发Slack的异常请求逻辑,仅填写纯接口路径即可。
3. Slack应用状态排查
- 确认当前操作的应用未被归档、未触发工作区权限限制,切错工作区、使用异常状态的测试应用时,Slack不会发送带完整校验字段的请求。
- 确认填写URL时未处于Slack后台登录态过期状态,登录态失效时保存配置触发的验证请求不会携带完整字段。
4. Lambda函数逻辑排查
- 不要在验证流程前加签名校验逻辑:首次URL验证时你还未完成配置,提前校验Slack签名会直接返回错误,Slack重试时可能发送空payload,签名校验逻辑要在URL验证完成后再加。
- 开启全量请求日志:打印所有收到的请求头、原始请求体内容,确认是请求本身为空,还是代码JSON解析逻辑出错导致字段读取失败。
验证通过标准:收到请求type为
url_verification时,直接将请求中携带的challenge字段原值返回,返回头Content-Type为text/plain或application/json即可,不要包裹额外的自定义结构。
内容的提问来源于stack exchange,提问作者joekadi
相关产品推荐
相关产品推荐

