Slack应用调用Webhook Trigger时获取Body节点为空问题求助
问题解决:Slack Webhook Trigger无法获取x-www-form-urlencoded中的channel_id
可能的原因及解决方法:
请求格式未正确解析:
如果你用Express这类框架处理Webhook请求,默认不会自动解析x-www-form-urlencoded格式的请求体。需要手动添加中间件:import express from 'express'; const app = express(); // 必须添加这行来解析表单数据 app.use(express.urlencoded({ extended: true }));只有完成解析,Webhook Trigger才能正确读取请求里的字段。
变量路径错误:
你当前使用的{{data.channel_id}}可能路径不正确。多数场景下,解析后的x-www-form-urlencoded数据会被放在body对象下,而非data。尝试修改Trigger的输入配置:const trigger: Trigger<typeof PrSendManuallyWorkflow.definition> = { type: TriggerTypes.Webhook, name: "Trigger when a new PR is received by slash command", workflow: `#/workflows/${PrSendManuallyWorkflow.definition.callback_id}`, inputs: { channel_id: { value: "{{body.channel_id}}" // 将data替换为body }, }, };确认请求字段存在:
在Webhook端点临时打印整个请求体,确认Slack发送的x-www-form-urlencoded数据里确实包含channel_id字段,排除拼写错误或Slack配置问题导致的字段缺失:app.post('/your-webhook-endpoint', (req, res) => { console.log('Received request body:', req.body); // 打印所有表单字段 res.sendStatus(200); });
内容的提问来源于stack exchange,提问作者R3bck
相关产品推荐
相关产品推荐

