钉钉机器人每分钟发送消息条数限制是多少?超出怎么降级?

文章导读
钉钉自定义机器人默认每分钟最多发送 20 条消息到同一个群,一旦超限会被限流 10 分钟,建议通过合并消息或使用多个机器人来规避。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

钉钉自定义机器人默认每分钟最多发送 20 条消息到同一个群,一旦超限会被限流 10 分钟,建议通过合并消息或使用多个机器人来规避。

先说结论:单机器人单群每分钟限 20 条,超限封禁 10 分钟,生产环境务必做聚合或轮询。

  • 先确认:检查当前发送频率是否接近 20 条/分钟阈值。
  • 先做:代码层增加消息队列,将多条告警合并为一条 Markdown 发送。
  • 再验证:观察日志中是否有因限流导致的发送失败或延迟。

快速处理思路

由于这是 API 调用限制,没有直接的 shell 命令可解,需要在业务代码层面做调整。核心思路是“攒批发送”和“多路分流”。

1. 消息聚合:不要每条告警都调一次接口。在代码里维护一个缓冲队列,比如每 5 秒或攒够 5 条消息,打包成一个 Markdown 文本一次性发送。

2. 多机器人轮询:如果业务量确实大,创建多个机器人 Webhook,在代码里轮流使用不同的 access_token 发送,分散压力。

3. 降级策略:捕获接口返回的错误码,一旦发现限流,暂停发送并写入本地日志或备用存储,待限流期过后再补发或丢弃非关键消息。

为什么会这样

这个限制主要是为了保证群成员的使用体验及系统稳定运行。钉钉官方文档明确说明,消息发送太频繁会严重影响群的使用体验。限制是针对“一个机器人和一个群的组合”进行的,不会对其他机器人或群产生影响。如果你在一个群里高频刷屏,不仅会被接口限流,还可能被群成员屏蔽或投诉。

分步处理

步骤一:检查当前频率

钉钉机器人每分钟发送消息条数限制是多少?超出怎么降级?

查看你的监控告警系统日志,统计每分钟调用钉钉 Webhook 的次数。如果接近 20 次,必须立即优化。

步骤二:实现消息合并

修改发送逻辑,将文本消息改为 Markdown 格式。例如,将 10 条 CPU 告警合并为一条包含表格的摘要消息。注意消息文本长度目前有 4000 字符上限,合并时不要超限。

步骤三:配置多机器人(可选)

在钉钉群设置中添加多个自定义机器人,获取多个 Webhook 地址。在代码中维护一个 Token 列表,发送时依次切换使用。

步骤四:增加错误处理

在 HTTP POST 请求后检查响应状态。如果收到限流相关错误,触发休眠逻辑,避免连续请求导致限流时间延长。

钉钉机器人每分钟发送消息条数限制是多少?超出怎么降级?

怎么验证是否生效

1. 观察群消息:发送测试告警,确认消息能正常到达,且没有频繁刷屏。

2. 检查日志:查看应用日志,确认没有频繁的接口调用失败记录。

3. 压力测试:在测试环境模拟高频发送(如每分钟 30 条),确认合并逻辑生效后,实际接口调用次数降至 20 次以内。

常见坑

1. 字符数超限:合并消息时容易忽略 4000 字符的上限,导致发送失败。长文本需截断或分页。

2. Webhook 泄露:Webhook 地址相当于密码,不要提交到代码仓库或公布在外部网站,泄露后有安全风险。

3. 限流范围误解:限流是单群单机器人的。如果你把同一个机器人拉到 10 个群,每个群都可以发 20 条/分钟;但如果在 1 个群里用 1 个机器人发超过 20 条,就会触发限流。

4. 编码问题:发起 POST 请求时,必须将字符集编码设置成 UTF-8,否则中文可能乱码。

参考来源

  • 钉钉开放平台 - 自定义机器人发送群消息:https://open.dingtalk.com/document/orgapp/custom-robots-send-group-messages
  • 钉钉开发者社区 - 钉钉机器人限流问题问答
  • 钉钉效率配方库 - 钉钉机器人消息发送频率限制说明