企业微信发送 Markdown 消息格式错误导致渲染失败如何调试

文章导读
企业微信 Markdown 消息渲染失败通常是因为 JSON payload 中的特殊字符未转义或使用了不支持的 Markdown 语法。调试时优先检查 API 返回码,确认 content 字段符合官方支持的标签子集,并验证换行符是否正确编码。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

企业微信 Markdown 消息渲染失败通常是因为 JSON payload 中的特殊字符未转义或使用了不支持的 Markdown 语法。调试时优先检查 API 返回码,确认 content 字段符合官方支持的标签子集,并验证换行符是否正确编码。

先说结论:大部分渲染失败源于 JSON 转义遗漏或 Markdown 语法超出了企业微信 API 支持的范围。

  • 先确认:检查 HTTP 响应状态码及 errcode 是否为 0
  • 先处理:对 content 内容中的双引号、反斜杠和换行符进行标准 JSON 转义
  • 再验证:发送测试消息到个人聊天窗口,观察实际渲染效果

命令速用版

使用 curl 命令可以快速构造并发送测试请求,便于隔离代码逻辑问题。

curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY' -H 'Content-Type: application/json' -d '{"msgtype":"markdown","markdown":{"content":"# 标题\n你好,世界"}}'

注意:命令中的换行符 \n 在 JSON 字符串中必须保留为两个字符反斜杠加 n。

为什么会这样

企业微信机器人接口对 Markdown 语法的支持是子集,且消息内容必须包裹在合法的 JSON 结构中。

API 服务端在解析请求时,会先解码 JSON payload,再解析 content 字段中的 Markdown。如果 JSON 层转义错误,服务端无法读取 content 内容;如果 Markdown 语法不支持,服务端会忽略标签或显示源码。常见原因包括未在 JSON 层转义双引号导致解析截断,或使用了表格、代码块等未完全支持的语法。

分步处理

按照以下顺序排查,每一步确认无误后再进行下一步。

企业微信发送 Markdown 消息格式错误导致渲染失败如何调试

步骤 1:检查 API 响应

查看发送请求后的 HTTP 响应 body。如果 errcode 不为 0,根据 errmsg 提示修改。如果 errcode 为 0 但渲染失败,说明请求合法但内容格式有问题。

步骤 2:验证 JSON 转义

确保 content 字段内的特殊字符符合 JSON 标准。双引号 " 必须转义为 \",反斜杠 \ 必须转义为 \\,换行符必须写作 \n 而不是实际回车。

步骤 3:简化 Markdown 语法

企业微信发送 Markdown 消息格式错误导致渲染失败如何调试

移除所有复杂语法,只保留标题(#)、加粗(**)和链接([]())。如果简化后能正常渲染,说明是特定语法不支持导致的。

怎么验证是否生效

发送消息后,在企业微信客户端查看消息卡片。

正常渲染时,标题会加粗变大,链接可点击,换行符合预期。如果看到源码(如 **bold** 直接显示),说明 Markdown 解析未生效,需检查 content 字段是否被正确识别为 markdown 类型。

常见坑

  • 换行符错误:在代码字符串中直接按回车而不是使用 \n,导致 JSON 格式非法。
  • 特殊字符冲突:content 内容中包含双引号未转义,截断了 JSON 字符串。
  • 语法支持误区:以为支持所有 Markdown 语法,实际仅支持部分常用标签。

常见问题

消息发送成功但显示为纯文本

msgtype 参数可能错误设置为 text 而非 markdown,或者 content 中的 Markdown 符号被额外转义。

链接无法点击或显示异常

企业微信对链接域名可能有安全限制,或 Markdown 链接语法 []() 中间包含了空格。

content 长度有限制吗

公开资料中没有看到可靠的量化数据,建议参考企业微信官方开发者文档的最新说明,通常建议控制在合理范围内。

参考来源

  • 企业微信开发者文档 - 群机器人:https://developer.work.weixin.qq.com/document/path/91770