如何覆盖Slack webhook默认绑定的消息发送频道?
问题根因
- 新版Slack入站Webhook默认关闭了覆盖默认配置的权限,默认不允许修改channel、username、icon等参数,即便接口定义包含该字段也会被服务端直接忽略
- 你传入channel参数的格式存在错误:如果填写的是频道ID,不需要加
#前缀,#前缀仅用于填写频道名称的场景
解决步骤
步骤1:开启Webhook的参数覆盖权限
操作需要你拥有对应Slack工作区的应用管理权限
- 进入Slack应用管理后台,找到你创建入站Webhook对应的应用
- 进入「Incoming Webhooks」设置页,找到正在使用的Webhook配置,勾选允许在发送请求中覆盖频道、用户名、图标的相关选项(部分版本路径为Webhook高级设置中开启
Enable overriding of default parameters)
步骤2:修正channel参数的传值格式
- 如果使用频道名称指定目标频道:格式为
#频道名,例如#运营通知群 - 如果使用频道ID指定目标频道:不需要加前缀,直接填写纯ID值,例如
C0123456789
提示:可以通过Slack频道右键→「查看频道详情」→滑动到页面最底部查看频道ID
步骤3:调整后的代码示例
async sendMsg(msg){ await this.webhook.send({ text: "Message", // 示例为频道ID写法,不需要加#前缀 channel: "C0123456789" }) }
兜底方案
如果你的Slack工作区属于最新版本,已完全禁用入站Webhook的参数覆盖能力,可以选择两种方案实现需求:
- 为每个目标频道单独创建绑定对应频道的入站Webhook,使用对应Webhook发送消息
- 改用Slack API的
chat.postMessage接口发送消息,该接口原生支持指定任意目标频道(需要应用拥有对应频道的发消息权限)
内容的提问来源于stack exchange,提问作者Thymeleaf
相关产品推荐
相关产品推荐

