影刀RPA 企业微信机器人消息推送进阶:图文卡片与文件上传

作者:林焱

之前讲过钉钉群机器人推送,这篇聚焦企业微信。企业微信的群机器人接口比钉钉更丰富——支持文本、Markdown、图片、图文卡片、文件等多种消息类型。
在这里插入图片描述

获取Webhook地址

在企业微信群聊中,点击右上角"…" → “群机器人” → “添加机器人” → 复制Webhook地址。地址格式:

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx

注意:这个key就是你的"密码",有了它谁都可以往群里发消息。不要泄露,不要提交到Git仓库。

四种消息类型

在这里插入图片描述

拼多多店群自动化报活动上架!

1. 纯文本(最简单)

import requests

webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"

data = {
    "msgtype": "text",
    "text": {
        "content": "监控告警:服务器CPU超过90%,请及时处理!",
        "mentioned_list": ["@all"]  # @所有人
    }
}
requests.post(webhook, json=data)

2. Markdown(格式丰富)

在这里插入图片描述

data = {
    "msgtype": "markdown",
    "markdown": {
        "content": """
## 每日数据报告
> 日期:2024-06-26

| 指标 | 数值 | 环比 |
|------|------|------|
| 新增用户 | <font color="info">1,234</font> | +12% |
| 活跃用户 | <font color="warning">8,901</font> | -3% |
| 订单量 | 567 | +5% |

[查看详细报表](https://example.com/report)
        """
    }
}
requests.post(webhook, json=data)

企微的Markdown支持标题、引用、加粗、链接、表格和三种颜色(info蓝/warning橙/comment灰)。

3. 图文卡片(最常用)

data = {
    "msgtype": "news",
    "news": {
        "articles": [
            {
                "title": "竞品降价预警!",
                "description": f"竞品A价格从¥199降到¥149,降幅25%。建议关注。",
                "url": "https://example.com/detail/123",
                ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3416e3817f154c4c9d216d4e5644673f.png#pic_center)

                "picurl": "https://example.com/alert.png"
            }
        ]
    }
}
requests.post(webhook, json=data)

最多支持8条图文,每条需要标题、描述和URL(点击跳转的地址)。

4. 文件上传

企微的文件消息稍微麻烦——需要先上传文件获取media_id,再发送:

# 第一步:上传文件
upload_url = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=xxx&type=file"
with open("销售周报.xlsx", "rb") as f:
    resp = requests.post(upload_url, files={"media": f})
    media_id = resp.json()["media_id"]

# 第二步:发送文件消息
data = {
    "msgtype": "file",
    "file": {"media_id": media_id}
}
requests.post(webhook, json=data)

实战:异常监控推送

在这里插入图片描述

import requests

def send_alert(title, detail, level="warning"):
    """影刀流程异常时的报警推送"""
    colors = {"info": "info", "warning": "warning", "error": "comment"}
    color = colors.get(level, "warning")
    
    msg = f"""## <font color="{color}">⚠️ 流程异常</font>
> 时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}

**异常详情:**
{title}

{detail}

请尽快处理!
"""
    data = {"msgtype": "markdown", "markdown": {"content": msg}}
    requests.post(webhook, json=data)

踩坑实录

坑1:频率限制

TEMU店群矩阵自动化运营核价报活动


在这里插入图片描述

每个机器人每分钟最多发20条消息。如果你的影刀流程在批量处理中频繁推送,很容易触发限制。解决方法:缓存多条消息,合并成一条发送;或者用多个机器人轮换。

坑2:Markdown不支持所有HTML标签

企微的Markdown是阉割版,<font>只能用三种颜色(info/warning/comment),不支持自定义颜色。<img>不支持。表格语法是支持的,但复杂的嵌套就不行了。

坑3:文件上传的type参数

上传文件时type参数必须是"file",但如果是图片(type="image"),返回的media_id直接用于image类型的消息而不是file类型。两者的消息格式不同。
在这里插入图片描述

坑4:图文链接的picurl必须外网可访问

内网图片链接发出去别人看不到。如果你需要配图,先用图床或对象存储上传到公网。或者不传picurl,只发文字+链接。

企业微信 vs 钉钉 vs 飞书

维度 企业微信 钉钉 飞书
免费文本消息
Markdown ✅ 支持 ✅ 支持 ✅ 支持(更丰富)
文件上传
图文卡片 ✅ 8条 ✅ 1条 ✅ 多卡片
@人
签名校验 ❌ 无 ✅ 有签名 ✅ 有签名

企业微信的群机器人门槛最低(不需要签名校验),功能也最全。个人项目首选企业微信。

在这里插入图片描述

写在最后

消息推送是把RPA从"能跑"变成"好用"的关键一步。流程跑完了没人知道,等于白跑。配一个企微机器人,流程出结果了自动推送,异常了自动告警——这个闭环才叫真正的自动化。
在这里插入图片描述
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐