影刀RPA 流程执行结果通知的多种方案:邮件微信钉钉飞书全覆盖
作者:林焱
流程跑完了、跑挂了、跑到一半发现数据异常——这些情况都需要通知你。这篇文章把影刀流程中所有常用的通知方式整理清楚,每种给出可直接复制的代码模板。
方案总览
| 方式 | 延迟 | 配置难度 | 适用场景 |
|---|---|---|---|
| 企业微信 | <1秒 | 简单 | 团队协作 |
| 钉钉 | <1秒 | 简单(免费版)/中(付费版需签名) | 企业内部 |
| 飞书 | <1秒 | 中等 | 企业内部 |
| 邮件 | 1-10秒 | 简单 | 正式通知 |
| Server酱(WxPusher) | <3秒 | 简单 | 个人微信通知 |
| 短信 | 3-30秒 | 困难(需付费) | 紧急告警 |
1. 企业微信(推荐首选)
defnotify_wecom(msg,webhook_url):"""企微群机器人文本通知"""requests.post(webhook_url,json={"msgtype":"text","text":{"content":msg}})defnotify_wecom_md(title,content,webhook_url):"""企微群机器人Markdown通知"""msg=f"##{title}\n> 时间:{datetime.now().strftime('%H:%M:%S')}\n\n{content}"requests.post(webhook_url,json={"msgtype":"markdown","markdown":{"content":msg}})2. 钉钉
拼多多店群自动化报活动上架!
defnotify_dingtalk(msg,webhook_url):"""钉钉群机器人"""requests.post(webhook_url,json={"msgtype":"text","text":{"content":msg}})注意:新版钉钉机器人需要签名校验。如果你用的是老版(有webhook就能发),不用加签名。如果是新版(需要加签),代码要复杂一些——建议用企业微信替代。
3. 飞书
defnotify_feishu(msg,webhook_url):"""飞书群机器人"""requests.post(webhook_url,json={"msg_type":"text","content":{"text":msg}})飞书也支持富文本卡片(交互式消息),可以做按钮交互,但设置复杂度较高。文本消息够用。
4. 邮件
importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartdefsend_email(subject,body,to_emails,from_email,smtp_server,smtp_port,password):msg=MIMEMultipart()msg["Subject"]=subject msg["From"]=from_email msg["To"]=", ".join(to_emails)msg.attach(MIMEText(body,"plain","utf-8"))withsmtplib.SMTP_SSL(smtp_server,smtp_port)asserver:server.login(from_email,password)server.sendmail(from_email,to_emails,msg.as_string())# QQ邮箱示例send_email("影刀流程通知","今日数据采集完成,共采集1234条",["your@qq.com"],"sender@qq.com","smtp.qq.com",465,"你的QQ邮箱授权码")注意:QQ邮箱/163邮箱要用授权码而不是登录密码。在邮箱设置里生成。
5. Server酱(个人微信推送)
最简单的方式,微信收到提醒:
defnotify_wx(title,content,send_key):"""通过Server酱推送到微信"""url=f"https://sctapi.ftqq.com/{send_key}.send"requests.post(url,data={"title":title,"desp":content})# 注册 server酱 (sct.ftqq.com) 获取send_keynotify_wx("采集完成","今日采集1234条商品数据\n成功率98.5%","SCTxxxxx")免费版每天5条,够个人用了。
统一通知函数
在一个函数里整合所有方式,按需选择:
defnotify(title,content,channels=["wecom"],config=None):""" channels: ["wecom","dingtalk","email","wx"] """forchinchannels:try:ifch=="wecom":notify_wecom_md(title,content,config["wecom_webhook"])elifch=="dingtalk":notify_dingtalk(f"{title}\n{content}",config["dingtalk_webhook"])elifch=="email":[video(video-8oAsgdhk-1784481987195)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]send_email(title,content,config["to_emails"],**config["smtp"])elifch=="wx":notify_wx(title,content,config["wx_key"])exceptExceptionase:print(f"通知渠道{ch}发送失败:{e}")# 调用notify("数据采集完成","共采集1234条",channels=["wecom","wx"],config=config)通知策略设计
defreport_result(stats):"""根据执行结果选择通知级别"""success_rate=stats["success"]/max(stats["total"],1)*100ifsuccess_rate==100:notify("✅ 流程执行完成",f"全部{stats['total']}条处理成功")elifsuccess_rate>=80:notify("⚠️ 流程执行完成(部分失败)",f"成功{stats['success']}条,失败{stats['failed']}条\n成功率{success_rate:.1f}%")else:notify("🚨 流程执行异常",f"成功率仅{success_rate:.1f}%!\n成功{stats['success']},失败{stats['failed']}\n请立即检查!")踩坑实录
坑1:QQ邮箱发送频率限制
QQ邮箱限制了SMTP发送频率(每小时X封)。如果流程每分钟发一次"采集完成",很快就会被限。合理频率:有变化时才发、汇总发而不是逐条发。
坑2:群机器人消息过长被截断
企业微信文本消息限制2048字节,Markdown限制4096字节。超长的报告内容应该用文件消息,或者把详情放链接里。
坑3:所有渠道都发,重复通知
有人配了微信+企微+钉钉+邮件四种通知,结果每次流程结束手机狂震。建议:重要通知用企业微信(及时性),日常报告用邮件(可回溯),紧急告警加Server酱(强提醒)。
写在最后
通知机制是RPA流程的"感官"。没有通知,你根本不知道流程在干什么——跑完了没、跑挂了没、数据对不对。配好通知后,你才能真正放心让RPA自动运行。