钉钉机器人发送 Markdown 类型消息表格渲染异常怎么修复?

文章导读
钉钉机器人发送 Markdown 消息时表格渲染异常,通常是因为使用了标准 Markdown 表格语法而非 HTML 标签,或者消息体 JSON 结构缺失 text 字段。最推荐的修复方向是将表格代码改为<table>、<tr>、<td>组合,并严格校验 webhook 请求参数。
📋 目录
  1. 快速处理思路
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

钉钉机器人发送 Markdown 消息时表格渲染异常,通常是因为使用了标准 Markdown 表格语法而非 HTML 标签,或者消息体 JSON 结构缺失 text 字段。最推荐的修复方向是将表格代码改为<table>、<tr>、<td>组合,并严格校验 webhook 请求参数。

先说结论:钉钉机器人对标准 Markdown 表格语法支持不完整,需改用 HTML 标签构建表格,同时确保 JSON 参数结构正确。

  • 先确认:检查请求体中 markdown 对象是否包含 title 和 text 字段
  • 先处理:将表格语法从 |列 | 替换为<table><tr><td>结构
  • 再验证:分别在 PC 端和移动端钉钉查看消息渲染效果

快速处理思路

如果收到参数 markdown --》text 缺失错误,直接检查 JSON payload 结构。Markdown 类型消息必须包含 msgtype 字段和 markdown 对象,且 markdown 对象内必须有 text 字段。以下是正确的请求体结构示例:

{
    "msgtype": "markdown",
    "markdown": {
        "title": "数据报表",
        "text": "## 数据详情\n\n\n\n\n
姓名部门
张三技术部
" } }

注意 text 字段内容中,标签后建议添加\n 换行符,段落间使用\n\n以确保移动端正常换行。

为什么会这样

钉钉机器人的 Markdown 渲染器基于特定版本的规范实现,并对 HTML 标签做了有限支持。官方文档未公开承诺支持标准 Markdown 表格语法,导致使用 | 和 - 构建的表格常被忽略或报错。实际上,钉钉会将部分 Markdown 内容转换为 HTML 进行渲染,PC 端基于浏览器内核支持较完整,而移动端 APP 采用精简引擎,对复杂 HTML 支持有限,这造成了双端显示差异。

分步处理

第一步:校验消息结构。确保 HTTP POST 请求的 Content-Type 为 application/json,且 body 中包含 msgtype: markdown。若使用加签安全设置,需正确生成 timestamp 和 sign 参数,否则请求会被拦截。

钉钉机器人发送 Markdown 类型消息表格渲染异常怎么修复?

第二步:替换表格语法。放弃使用 | 列 1 | 列 2 | 格式,改用原生 HTML 表格标签。构建<table>包裹<tr>行,每行内使用<td>单元格。不需要添加 style 样式属性,因为移动端往往会剥离背景色和字体大小设置。

第三步:处理换行符。在每个 HTML 标签后添加\n,在段落之间添加\n\n。仅使用单个\n 在部分钉钉客户端中可能无法触发换行,导致内容粘连。

怎么验证是否生效

发送测试消息后,首先在 PC 端钉钉查看表格边框是否清晰、数据是否对齐。随后在移动端钉钉 APP 查看同一消息,确认数据是否堆叠、边框是否消失。若移动端显示异常但数据可见,属于正常渲染限制;若消息发送失败并返回错误码,需检查日志中是否有参数缺失提示。

常见坑

移动端样式失效:不要在<td>中设置 font-size 或 background-color,移动端 APP 通常会忽略这些样式,仅保留文本内容。

钉钉机器人发送 Markdown 类型消息表格渲染异常怎么修复?

换行符无效:如果消息所有内容挤在一行,检查代码中是否将\n 转义成了 literal 字符,确保发送的是实际的换行符。

安全签名错误:时间戳需为毫秒级,且签名字符串格式为 timestamp\nsecret,URL 编码不规范会导致签名验证失败。

常见问题

报错参数 markdown --》text 缺失怎么办?

检查 JSON 请求体中 markdown 对象内是否包含 text 字段,且该字段不为空。

为什么 PC 端正常但手机端表格边框消失?

移动端钉钉采用精简渲染引擎,会剥离部分 HTML 样式,仅保留文本结构,属于已知限制。

Markdown 消息中换行符\n 不生效如何解决?

尝试将单个\n 改为双个\n\n,钉钉开放平台部分场景下需要双换行符才能触发正确换行。

钉钉机器人发送 Markdown 类型消息表格渲染异常怎么修复?

参考来源

钉钉机器人 Markdown 表格发送全攻略:解决 APP 端显示不全问题

钉钉机器人 Markdown 表格发送实战:绕过限制的巧妙方案

钉钉开放平台调取发送 markdown 消息无法换行问题解决

消息发送与接收类型 - 钉钉开放平台文档