Slack Slash Command集成API Gateway后AWS Lambda无法获取event求助
问题根因
Slack斜杠命令发送的是application/x-www-form-urlencoded格式的表单数据,你当前拿到的postBody是原始的URL编码后的表单字符串,需要手动解析为结构化字典才能正常读取字段。
代码解决方案
修改Lambda代码,加入表单解析逻辑即可,示例如下:
from urllib.parse import parse_qs def lambda_handler(event, context): # 读取原始表单字符串 raw_post_body = event.get("postBody", "") # 解析为字典结构 slack_raw_params = parse_qs(raw_post_body) # parse_qs默认返回值为列表,提取第一个元素得到最终参数 slack_params = {key: value[0] for key, value in slack_raw_params.items()} # 可直接读取需要的参数,例: # 触发命令的用户ID:slack_params.get("user_id") # 斜杠命令后携带的文本:slack_params.get("text") 即你示例中的trigger return slack_params
可选优化配置
如果不想每次在代码里做解析,可以修改API网关的集成请求配置,新增application/x-www-form-urlencoded类型的请求映射模板,配置规则将表单结构直接转换为JSON再传递给Lambda,后续代码可以直接从event中读取对应字段,无需额外解析。
内容的提问来源于stack exchange,提问作者Mervin Hemaraju
相关产品推荐
相关产品推荐

