钉钉机器人发送链接消息时,title 字段建议控制在 100 字符以内,text 内容字段建议控制在 500 字符以内。超出限制可能导致消息发送失败或前端展示被截断,开发时需优先校验 payload 长度。
先说结论:链接消息的 title 和 text 字段有明确的长度建议,超出会影响发送成功率。
- 先确认:检查 msg_param 中 title 和 text 的字符数。
- 先处理:内容过长时进行截断或改用 Markdown 消息类型。
- 再验证:通过 API 返回码和钉钉客户端实际展示确认。
快速处理思路
在代码发送请求前,增加长度校验逻辑。如果 title 超过 100 字符或 text 超过 500 字符,强制截断或切换消息类型。不要依赖服务端自动截断,避免信息丢失。
为什么会这样
钉钉开放平台对消息类型字段有定义限制,目的是保证移动端和 PC 端展示一致性。链接消息(samplelink)的 title 用于消息卡片标题,text 用于消息描述,过长会破坏卡片布局。官方文档明确给出了字符数建议值,超出范围可能触发参数错误。
分步处理
第一步:构造链接消息 JSON 体。确保 msg_key 为 samplelink,msg_param 包含 title、text、messageUrl 和 picUrl。
第二步:在发送前计算长度。使用编程语言内置函数计算 title 和 text 的字符串长度。例如 Python 中使用 len(title)。
第三步:执行截断或切换。如果长度超标,截取前 99 字符并加省略号,或者将 msg_key 改为 samplemarkdown 使用 Markdown 消息类型发送长文本。
第四步:发送请求。携带 accessToken 调用发送接口,注意 HTTP 头部的鉴权参数。
怎么验证是否生效
查看 API 响应结果。成功发送通常返回 errcode 为 0 或 success 为 true。如果长度违规,可能返回参数错误码。登录钉钉客户端,检查群聊中消息卡片是否完整显示,标题和内容有无被强制省略。
常见坑
混淆 text 和 content 字段。链接消息使用 text 字段存放内容,文本消息使用 content 字段,填错会导致发送失败。忽略编码问题。特殊字符或 Emoji 可能占用多个字节,建议按字符数而非字节数校验,或预留安全余量。忽视频率限制。除了长度,机器人每分钟发送条数也有限制,大量推送需合并消息。
常见问题
超出长度限制会发生什么?
可能返回参数错误导致发送失败,或者消息发送成功但前端展示被截断。建议在客户端提前校验长度。
Markdown 消息有长度限制吗?
Markdown 消息内容建议控制在 1000 字符以内,整体 msgParam 限制在 15000 字节以内,适合发送较长内容。
如何发送超过 500 字符的链接消息?
不要在链接消息中硬塞长文本。发送简短摘要和链接,用户点击链接后查看详情页,或改用 Markdown 消息类型。
参考来源
钉钉开放平台 - 消息类型说明
钉钉开放平台 - 机器人发送群聊消息
钉钉开放平台 - 管理消息模板