Markdown 格式消息允许您在消息内容中嵌入格式化元素,如加粗、斜体、代码块、列表和链接,这对于发送格式化的通知、告警或简报非常有用。
1. Markdown 消息的数据结构
Markdown 消息的请求体结构与文本消息类似,但msgtype字段必须设置为"markdown",且内容放在markdown结构下的content字段中。
{ "chatid": "CHATID", "msgtype": "markdown", "markdown": { "content": "### 客户群通知\n> [!WARNING] 请注意以下信息。\n\n* **重点**:新功能已上线\n* [点击查看详情](https://link.com)" } }2. Python 实现 Markdown 消息发送函数
我们将创建一个send_markdown_message函数,专注于构造 Markdown 内容,并使用requests发送。
import requests import json # 假设 send_text_message 和 get_access_token 已定义 SEND_MSG_URL = "https://qyapi.weixin.qq.com/cgi-bin/appchat/send" def send_markdown_message(access_token: str, chat_id: str, markdown_content: str) -> dict: """ 发送 Markdown 格式消息到指定的客户群。 :param access_token: 有效的 Access Token :param chat_id: 目标客户群 ID :param markdown_content: 遵循 Markdown 规范的文本内容 :return: API 响应字典 """ # 1. 构造请求体 (JSON 数据结构) payload = { "chatid": chat_id, "msgtype": "markdown", "markdown": { "content": markdown_content } } # 2. 构造完整的请求 URL request_url = f"{SEND_MSG_URL}?access_token={access_token}" print(f"尝试发送 Markdown 消息到群 {chat_id}...") try: # 3. 发起 POST 请求 (requests 自动处理序列化) response = requests.post(request_url, json=payload) response.raise_for_status() result = response.json() if result.get("errcode") == 0: print("Markdown 消息发送成功。") else: print(f"发送失败,错误码: {result.get('errcode')}, 错误信息: {result.get('errmsg')}") return result except requests.exceptions.RequestException as e: print(f"HTTP 请求异常: {e}") return {"errcode": -1, "errmsg": str(e)} # 演示调用 if __name__ == "__main__": MOCK_TOKEN = "MOCK_VALID_ACCESS_TOKEN" MOCK_CHAT_ID = "MOCK_CHAT_ID" # 构造 Markdown 内容 markdown_message = ( "## 🚀 客户服务升级通知\n" "> <font color=\"warning\">请所有用户注意!</font>\n\n" "### 关键更新点:\n" "* **服务时间**:周一至周五 **9:00 - 20:00**\n" "* **联系方式**:请发送邮件至 `support@example.com`\n" "* **[查看完整公告](https://www.example.com/notice)**\n\n" "本次更新将于 2025 年 12 月 15 日生效。" ) response_data = send_markdown_message(MOCK_TOKEN, MOCK_CHAT_ID, markdown_message) # print(json.dumps(response_data, indent=4, ensure_ascii=False))3. Markdown 内容的常用语法和限制
企业微信支持大部分标准的 Markdown 语法,同时提供了一些扩展:
| 效果描述 | Markdown 语法示例 |
| 标题 | # 一级标题,## 二级标题 |
| 加粗 | **重点内容** |
| 链接 | [点击这里](https://url.com) |
| 列表 | * 列表项 A,1. 列表项 B |
| 颜色字体 | <font color="warning">警告信息</font>(支持 warning, info, comment) |
| 引用块 | > 引用内容 |
限制提醒:Markdown 消息内容有长度限制(通常 2048 字节),且不支持表格、图片等复杂元素。若需发送图片,应使用专门的图片消息接口(
msgtype: image)。
基于API您可以创造更多有趣的功能题