影刀RPA新手教程:飞书机器人消息卡片与@人提醒配置
影刀RPA新手教程:飞书机器人消息卡片与@人提醒配置
流程半夜跑挂了没人知道,第二天上班才发现数据断了一整天;或者群消息刷得快,纯文本通知三分钟就被顶没影了,值班的人根本没看到——这两个痛点本质是同一个问题:通知没有设计。影刀RPA的「飞书群通知」指令支持文本、图片、富文本、消息卡片四种格式,还能精确@到某个人,配好了异常第一时间找到该负责的人。
我也是非技术出身,第一次配机器人通知时被签名校验和@人语法卡了整整一个下午,这篇新手教程把每一步都拆到按钮级别,照着做十分钟就能跑通第一条卡片通知。
案例主线用我真实在跑的场景:采集流程出错时,机器人往飞书群发一张红色警示卡片并@当班同事;流程正常结束时发一张汇总卡片。同一个指令,两种玩法。
安装与机器人申请:先把webhook拿到手

影刀RPA去官网下载社区版安装即可,这个场景不涉及复杂环境。重点是飞书侧的群机器人申请:
- 打开要接收通知的飞书群,进入【设置】→【群机器人】→【添加机器人】
- 选择自定义机器人,起个名字如"数据采集播报员"
- 在安全设置里建议勾选【签名校验】,拿到SEC开头的密钥
- 复制生成的 webhook 地址,这是一串 https 开头的链接,泄露了任何人都能往群里发消息,别贴到公开场合
webhook、签名密钥这两个值就是要填进影刀RPA指令的全部参数。
变量与参数:「飞书群通知」指令的四张参数卡
在影刀RPA右侧指令面板搜索「飞书群通知」拖进流程,可以看到几个关键参数:
| 参数 | 填什么 | 踩坑点 |
|---|---|---|
| 机器人地址 | 申请到的webhook | 复制时别带多余空格 |
| 签名校验 | SEC开头的密钥,可为空 | 机器人开了校验就必须填 |
![]() |
| 消息格式类型 | 文本/图片/富文本/消息卡片 | 下拉四选一 |
| 消息内容 | 按格式要求填写 | 卡片格式要求JSON |
四种格式怎么选:日常播报用文本,带排版用富文本,要醒目用消息卡片,发运行截图用图片类型。图片类型有个前置条件:需要登录飞书开发者后台,进入企业自建应用详情页获取 App ID 和 App Secret,并且图片大小要在10M以内,超了发不出去。
文本格式与@人语法:@具体的人和@所有人
文本格式支持@联系人,语法是飞书约定的标签写法,直接写在消息内容里即可。
// @ 单个用户:user_id 填该用户的 open_id,尖括号里是显示名
<at user_id="ou_xxxxxxxxxx">张三</at> 今天的采集任务已完成
// @ 所有人:user_id 固定写 all
<at user_id="all">所有人</at> 流程异常,请尽快处理
user_id 从哪里来:如果只知道对方的手机号或邮箱,可以通过飞书开放平台提供的接口用手机号或邮箱换取对应的 user_id,前提是应用有权限通过该手机号或邮箱查到这个人。@所有人不要滥用,我的规矩是只有需要全员知晓的故障才@所有人,日常播报一律@指定值班人。
消息卡片搭建:最醒目的通知格式

消息卡片是飞书独有的消息格式,做法是在飞书官方的消息卡片搭建工具里可视化编辑,拖几个组件就能做出带标题、正文、按钮的卡片,完成编辑后把生成的卡片JSON内容整体复制,粘贴到影刀RPA指令的「消息卡片内容」参数里即可发送。
我的异常警示卡片就三个组件:红色标题写"采集流程异常",正文写报错的关键信息,再配一行"@值班人请查看日志"。卡片JSON里的文案部分可以用影刀的变量拼接,把「输出日志」里记录的报错信息塞进正文,实现动态内容。
# 输入:err_msg,Catch块里捕获到的报错文本
# 输出:card_json,粘贴进「消息卡片内容」参数的卡片JSON
card_json = '''
{
"config": {"wide_screen_mode": true},
"header": {
"template": "red",
"title": {"tag": "plain_text", "content": "采集流程异常"}
},
"elements": [
{"tag": "div",
"text": {"tag": "lark_md",
"content": "报错信息:<at user_id=all></at>\\n" + err_msg }}
]
}
'''
# 用变量拼接时,JSON内部的引号和换行要用转义,拼接完可以先打印检查
print(card_json)
流程控制与异常处理:通知放在什么位置
通知的价值取决于挂的位置。我的标准结构是Try-Catch-Finally三件套:
- Try块:放采集、写入等业务指令
- Catch块:先用「输出日志」记录报错,再调用「飞书群通知」发异常卡片并@值班人
- Finally块:关闭浏览器、清理临时文件

这样任何一条指令出错都会触发通知,流程不会无声无息地死掉。正常结束的汇总通知放在主流程最后一行,把采集条数、耗时拼进文本,和异常通知用不同卡片样式区分开,值班人扫一眼颜色就知道要不要紧张。
条件判断配合通知还能做业务告警:用「判断元素是否存在」检查页面上的缺货标记,存在就发卡片提醒,这比纯异常通知更早发现问题。
网页自动化与元素定位:告警数据从哪来
卡片里要展示的内容来自采集端。定位报错信息时,XPath的文本匹配最好用,页面报错文案一般带"失败""错误"这类词。
# 捕获元素:页面上的失败提示文案(模糊匹配文本)
//*[contains(text(),'失败')]
# 捕获元素:报错弹窗容器,配合"判断元素是否存在"做前置检查
//div[contains(@class,'error-dialog')]
等待策略上,弹窗类元素用「等待元素出现」设一个短超时,超时即认为无弹窗继续主流程。翻页、懒加载的处理和常规采集一致,iframe里的元素记得先切换上下文再定位。
数据处理与鼠标键盘图像:截图进通知的玩法

告警卡片配运行截图排查效率翻倍。影刀RPA的「截图」类指令把报错时的页面存成图片,再用图片类型的飞书群通知发出去,图片控制在10M以内。鼠标键盘模拟在这一步基本用不上,图像识别只在需要判断页面视觉状态(比如按钮变灰)时作为补充手段。
数据侧的配合:把当次运行的统计数字(采集数、失败数、耗时)先用Python拼成一段摘要文本,正文引用这段摘要,卡片信息密度立刻上来了。
系统联动与工程化规范:封装成通用通知子流程
单条通知指令不难,价值在封装。我建了一个子流程 fy_飞书通知,输入参数三个:通知类型(异常/汇总)、正文内容、@人的user_id列表,内部按类型选卡片模板。全公司所有流程都调用这一个子流程,改通知样式只改一处。
| 工程化要点 | 做法 |
|---|---|
| 子流程命名 | fy_开头加编号,一眼看出用途 |
| 参数传递 | 只传正文和类型,webhook存子流程内 |
| 调试方法 | 右键指令加断点单步跑,看变量面板 |
| 版本差异 | 社区版30分钟/天,定时任务建议创业版 |
定时任务配合通知就是完整的无人值守方案:夜间跑任务,出事发卡片@人,第二天上班问题已经处理完了。@人这件事一定要和团队约定清楚,值班表里的user_id提前收集好存成字典,别每次发版都改流程。

易错速查表
| 报错/现象 | 原因 | 解决方法 |
|---|---|---|
| 发送返回错误码 | webhook失效或签名不匹配 | 重新生成webhook,核对SEC密钥 |
| @不生效只显示文字 | user_id填错或没权限查询 | 确认open_id,改用手机号换user_id |
| 卡片发出去是空白 | 卡片JSON粘贴不完整或格式错 | 用搭建工具重新导出完整JSON |
| 图片类型发送失败 | 未配App ID或图片超10M | 补授权信息,压缩截图 |
| 群里收不到任何消息 | 机器人被移出群 | 群设置里重新添加机器人 |
学习资源与延伸阅读
飞书机器人的申请流程和消息卡片搭建工具官方都有图文,影刀官方的群通知专题视频课程也值得看一遍,参数讲得很细。我封装的通知子流程和卡片模板源码放在代码仓库 home.linyan.cloud,可以直接参考改造,换套配色就是你的告警卡片。
#影刀RPA #RPA自动化 #飞书 #消息通知
作者:林焱
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐






所有评论(0)