文档备案控制台
免费开始使用

影刀RPA新手教程:企业微信机器人完全指南——Webhook配置、Markdown卡片与异常告警封装

去年一个大促夜,库存同步出了bug,有订单卖了负库存的商品。如果我没在凌晨2点收到企业微信告警,第二天就是一场灾难。这套告警系统,就是用影刀RPA + 企业微信机器人搭的。

今天从零拆给你看。

picture.image

一、企业微信机器人的两条路

picture.image 很多新人一上来就问我:“影刀有企业微信的指令吗?”答案是没有封装好的现成指令——飞书有“飞书群通知”,企业微信没有。

但企业微信机器人走的是两条不同的路,先搞清楚你走哪条:

| 形态 | 获取方式 | 能力 | 配置难度 | 适用场景 |

picture.image |------|---------|------|---------|---------| | 群机器人(Webhook) | 群设置中添加 | 只发消息到该群 | ⭐ 简单 | 内部群快速通知,推荐首选 | | 自建应用(API) | 企业微信管理后台创建 | 发消息到群/个人、收发双向 | ⭐⭐⭐ 复杂 | 需要交互或定向推送个人 |

Webhook方式简单,3分钟配好,内部群专用自建应用方式复杂,需要企业管理员权限、创建应用、拿CorpId/AgentId/Secret,适合双向交互场景。

picture.image

这篇文章重点讲群机器人Webhook方式——最快、最稳、最省事。

二、准备工作:3分钟添加群机器人

picture.image

第一步:打开企业微信群

必须是企业内部群(外部客户群暂不支持添加群机器人)。点击右上角“...” → “添加群机器人” → “新建机器人”。

picture.image 第二步:复制Webhook地址

机器人创建成功后,会生成一个Webhook地址,格式类似:

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

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/2e0bd1caaf5a4fd4a4fc9f91756256a7~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032397&x-signature=tufiPazVAVZrlkOB1Yjxms5iStc%3D)

这个地址不要泄露——谁拿到都能往群里发消息。

第三步:安全设置(强烈推荐)

picture.image

在机器人配置页面可以设置:

  • 自定义关键词:消息中必须包含至少一个关键词才能发送(如“RPA”“告警”)
  • IP地址限制:只允许特定IP发消息

建议至少配一个自定义关键词,防止误发或被盗用。

三、影刀核心指令:用“发送HTTP请求”发消息

影刀里没有封装好的“企业微信群通知”指令,需要用“发送HTTP请求”指令自己发。

操作步骤

1. 拖入“发送HTTP请求”指令

右侧指令面板 → “网络”分类 → “发送HTTP请求”。

2. 配置请求参数

参数设置
请求URL粘贴Webhook地址
请求方法POST
请求头Content-Type: application/json
请求体类型JSON
请求体按企业微信消息格式填写

四、四种消息类型(直接复制能用)

类型一:文本消息(最常用)

{
    "msgtype": "text",
    "text": {
        "content": "【采集完成】今日共采集商品1,234条,耗时15分钟。"
    }
}

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/288adee1556943cd9f8af3a46b278d52~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032397&x-signature=XaDbEmyZr1ScWac2qWnS5Kc9ZlI%3D)

在影刀里把content的值换成变量:

"content": "【采集完成】今日共采集商品" + ${采集总数} + "条,耗时" + ${总耗时} + "分钟。"

类型二:Markdown消息(带格式,推荐)

企业微信支持Markdown格式——加粗、换行、引用、标题。

{
    "msgtype": "markdown",
    "markdown": {
        "content": "## 📊 采集任务完成报告\n\n> 采集总数:**1234**条\n> 错误次数:**0**次\n> 总耗时:**15**分钟\n\n[点击查看详细数据](https://xxx.com)"
    }
    
![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c14c2b9d5555480f8da3718104511f7e~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783032397&x-signature=j1ESwybdMdpBjx%2BjCmf27gb9Cws%3D)
}

支持的语法# ## ### 标题 | **加粗** | > 引用 | [链接文字](URL) | `代码`

类型三:图片消息

图片需要先上传获取media_id,再发图片消息。

{
    "msgtype": "image",
    "image": {
        "media_id": "返回的media_id"
    }
}

上传接口

POST https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=WEBHOOK_KEY&type=image

限制:图片大小不超过2M,支持JPG、PNG格式。

类型四:图文消息(带链接卡片)

{
    "msgtype": "news",
    "news": {
        "articles": [
            {
                "title": "今日数据报告",
                "description": "采集完成,共1234条",
                "url": "https://xxx.com/report",
                "picurl": "https://xxx.com/cover.png"
            }
        ]
    }
}

五、@指定人或@所有人(最容易踩的坑)

企业微信机器人的@方式和飞书不一样——用的是<@userid>标签

@所有人

在文本内容的最前面加上<@all>

{
    "msgtype": "text",
    "text": {
        "content": "<@all>\n【紧急告警】采集流程出现异常,请及时处理!"
    }
}

@指定人

需要先获取被@人的userid(企业微信内部ID,不是手机号)。

获取userid的方法

  1. 登录企业微信管理后台 → “通讯录” → 点击成员
  2. 在成员详情页可以看到“账号”(即userid)

@指定人的写法

{
    "msgtype": "text",
    "text": {
        "content": "<@zhangsan> <@lisi>\n采集任务已完成,请两位运营同学确认数据。"
    }
}

⚠️ 关键坑点

Markdown消息不支持@all,只支持在content中使用<@userid>扩展语法来@群成员。

简单说:

  • 文本消息:支持<@all><@userid>
  • Markdown消息:只支持<@userid>,不支持<@all>

六、异常告警封装(完整实战)

把企业微信通知封装成一个子流程,每次出错或完成时调用。

子流程设计:E01_SendWeChatAlert

输入参数

  • 消息标题(文本)
  • 消息内容(文本)
  • 是否紧急(布尔值,True则@所有人)
  • 错误截图路径(文本,可选)

内部逻辑

Try:
    # 组装消息内容
    如果 是否紧急 == True:
        最终内容 = "<@all>\n【" + 消息标题 + "】\n" + 消息内容
    否则:
        最终内容 = "【" + 消息标题 + "】\n" + 消息内容
    
    # 判断用文本还是Markdown
    如果 消息内容包含"#""**":
        消息类型 = "markdown"
    否则:
        消息类型 = "text"
    
    # 构造请求体
    请求体 = {
        "msgtype": 消息类型,
        消息类型: {
            "content": 最终内容
        }
    }
    
    # 发送HTTP请求
    发送HTTP请求(
        URL=全局变量{企业微信Webhook},
        方法="POST",
        请求头={"Content-Type": "application/json"},
        请求体=JSON转文本(请求体)
    )
    
    # 如果有错误截图,再发一条图片消息
    如果 错误截图路径 != "":
        发送图片消息(错误截图路径)
    
    发送状态 = True
Catch:
    输出日志("企业微信通知发送失败:" + %Error%)
    发送状态 = False
Try结束

在主流程中调用

Try:
    采集商品数据
Catch:
    # 截图保存
    截图保存("C:\error_screenshots\error_" + 时间 + ".png")
    
    # 发送告警通知
    调用子流程 E01_SendWeChatAlert(
        消息标题="⚠️ 采集流程异常",
        消息内容="错误信息:" + %Error% + "\n请及时处理!",
        是否紧急=True,
        错误截图路径="C:\error_screenshots\error_" + 时间 + ".png"
    )
Try结束

七、Token缓存优化(进阶必看)

如果用自建应用API方式发送消息,流程是:先拿access_token,再用access_token发消息。

access_token有效期7200秒(2小时)

关键优化:不要把每次发消息都去拿一次token,太慢而且有频率限制。正确做法:把token缓存到影刀变量里,快过期时再刷新。

【获取Token】
→ 检查 全局变量.token 是否为空或已过期
→ 如果有效:直接使用
→ 如果失效:重新获取 → 更新全局变量

【发送消息】
→ 使用 全局变量.token 发送

常见问题/易错速查

  1. 消息发不出去,返回“invalid webhook” → 检查Webhook地址是否完整复制,有没有多余空格或换行。

  2. @人不生效,显示纯文本 → 检查格式是否是<@userid>(不是@姓名)。userid是企业微信内部ID,不是手机号。

  3. Markdown消息部分格式不生效 → 企业微信的Markdown支持有限,不支持表格、图片嵌入、HTML标签。

  4. 消息被企业微信拦截 → 检查机器人是否设置了“自定义关键词”,消息内容必须包含至少一个关键词才能发送。

  5. 图片消息发不出去 → 检查图片大小是否超过2M,格式是否为JPG或PNG。

  6. 外部客户群能加群机器人吗 → 不能。必须是企业内部群

  7. Secret写到了流程里怎么办 → 企业微信的Secret比Webhook更敏感。正确做法:存到影刀控制台的“应用参数”里,运行时动态读取。

  8. 社区版能用企业微信通知吗 → 可以。“发送HTTP请求”指令社区版和创业版都支持,不消耗运行时长。

推荐资源

  1. 企业微信群机器人配置文档:https://developer.work.weixin.qq.com/document/path/91770
  2. 企业微信开发者文档:https://developer.work.weixin.qq.com/
  3. 影刀官方帮助中心搜索“发送HTTP请求
  4. 影刀开发者社区搜“企业微信”有大量踩坑记录

#影刀RPA #RPA自动化 #企业微信联动 #消息通知 #异常告警 #电商自动化

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论