开发者在使用【企业微信群通知】这个指令时,很多情况下想要使用markdown格式来发送消息。经常会碰到为什么指令内写的是markdown格式的文本,发送出来的格式不按预期显示的问题。本文将讲述【企业微信群通知】这个指令所支持的markdown格式,帮助大家从0开始玩转企微的markdown格式。
企微官方的api接口提供两种markdown格式,一种是markdown类型,另一种是markdown_v2类型。现在就让我们了解两种markdown格式目前支持的语法吧。
1.标题 (支持1至6级标题,注意#与文字中间要有空格)
# 标题一
## 标题二
### 标题三
#### 标题四
##### 标题五
###### 标题六2.字体
*斜体*
**加粗**3.链接
[这是一个链接](https://work.weixin.qq.com/api/doc)4.行内代码段(暂不支持跨行)
`code`5.引用
> 引用文字1.字体颜色(只支持3种内置颜色)
<font color="info">绿色</font>
<font color="comment">灰色</font>
<font color="warning">橙红色</font>2.艾特人(PS:只支持单独艾特某个人,不支持艾特全员,且需要企微的管理员才能获取userid)
<@userid>1.列表
- 无序列表 1
- 无序列表 2
- 无序列表 2.1
- 无序列表 2.2
1. 有序列表 1
2. 有序列表 22.引用
>一级引用
>>二级引用
>>>三级引用3.图片
4.分割线
---5.表格
| 姓名 | 文化衫尺寸 | 收货地址 |
| :----- | :----: | -------: |
| 张三 | S | 广州 |
| 李四 | L | 深圳 |很遗憾,目前【企业微信群通知】这个指令只支持markdown类型的语法,不支持markdowb_v2。但是我们可以通过代码来发送markdown_v2类型的消息
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import requests
import json
from xbot import print, sleep
def main(params):
"""xbot模块的主函数,用于发送企业微信Markdown v2消息"""
try:
# 从xbot参数中获取输入值
webhook_url = getattr(params, 'webhook_url',"机器人url")
message_type = getattr(params, 'message_type',"demo")
custom_content = getattr(params, 'custom_content', "")
print(f"开始发送 {message_type} 类型消息(Markdown v2)...")
# 发送消息
sender = WeChatMarkdownV2Sender(webhook_url)
if message_type == "demo":
result = sender.send_demo_message()
elif message_type == "custom" and custom_content:
result = sender.send_custom_message(custom_content)
else:
print("错误:未知的消息类型或缺少自定义内容")
return False
return result
except Exception as e:
print(f"发送消息时发生错误: {str(e)}")
return False
class WeChatMarkdownV2Sender:
def __init__(self, webhook_url):
self.webhook_url = webhook_url
def send_demo_message(self):
"""发送Markdown v2演示消息"""
content = """
需要发送的消息
"""
print("发送Markdown v2演示消息")
return self._send_markdown_v2_message(content)
def send_custom_message(self, content):
"""发送自定义Markdown v2消息"""
print("发送自定义Markdown v2消息")
return self._send_markdown_v2_message(content)
def _send_markdown_v2_message(self, content):
"""发送Markdown v2消息到企业微信"""
send_data = {
"msgtype": "markdown_v2",
"markdown_v2": {
"content": content
}
}
headers = {"Content-Type": "application/json"}
try:
response = requests.post(
url=self.webhook_url,
headers=headers,
data=json.dumps(send_data, ensure_ascii=False).encode('utf-8'),
timeout=10
)
result = response.json()
if result.get("errcode") == 0:
print("✅ Markdown v2消息发送成功!")
return True
else:
print(f"❌ Markdown v2消息发送失败: {result.get('errmsg')}")
return False
except Exception as e:
print(f"❌ 发送请求时出错: {str(e)}")
return False
# 独立运行时的测试代码
if __name__ == "__main__":
class TestParams:
def __init__(self):
self.webhook_url = "机器人url"
self.message_type = "demo"
print("开始测试企业微信Markdown v2消息发送...")
test_params = TestParams()
result = main(test_params)
print(f"测试结果: {'成功' if result else '失败'}")
参数说明:
| 参数名 | 类型 | 必填 | 默认值 | 可选值 | 说明 | 示例 |
| webhook_url | 字符串 | 是 | 无 | 任何有效的企业微信webhook URL | 企业微信机器人的Webhook地址 | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY |
| message_type | 字符串 | 是 | "demo" | "demo", "custom" | 消息类型选择 | "demo" 或 "custom" |
| custom_content | 字符串 | 条件必填 | 空字符串 | 任何有效的Markdown v2内容 | 当message_type为"custom"时必填,用于发送自定义内容 | "# 标题\n**加粗文字**\n[链接](https://example.com)" 注意事项: |
| 事项 | 说明 |
| 内容长度 | 消息内容限制为4096字节 |
| 超时时间 | 请求超时时间为10秒 |
| 语法规范 | 需使用企业微信支持的Markdown v2语法 |
另外,企业微信官方限制:每条消息只能选择一种格式类型,无法同时发送markdown和markdown_v2格式。必须在单条消息中统一使用一种格式哦。