影刀RPA实操指南_钉钉与飞书双平台消息推送一套代码适配两个平台的通知方案

影刀RPA实操指南_钉钉与飞书双平台消息推送一套代码适配两个平台的通知方案 影刀RPA实操指南钉钉与飞书双平台消息推送——一套代码适配两个平台的通知方案之前写过企业微信的群机器人消息推送。但在实际工作中很多公司用的是钉钉或飞书。这篇文章覆盖钉钉和飞书两个平台的消息推送方案并且告诉你如何写一套适配层让同一个流程能无缝切换平台。三个平台消息推送的对比特性企业微信钉钉飞书接入方式Webhook URLWebhook URLWebhook URL安全验证无URL即权限加签可选签名校验可选Markdown支持部分支持支持完全支持人功能通过手机号/UserID通过手机号通过open_id富文本卡片不支持支持支持消息卡片文件发送不支持直接发不支持直接发不支持直接发三个平台的Webhook接入方式基本一致先在IM里创建一个群机器人得到一个Webhook URL然后向这个URL发送HTTP POST请求消息就出现在群里了。钉钉群机器人消息推送获取Webhook地址打开钉钉PC端 → 进入目标群聊群设置 → 智能群助手 → 添加机器人选择自定义机器人安全设置选择自定义关键词填RPA通知复制Webhook地址发送文本消息importrequestsimportjsondefsend_dingtalk_text(webhook_url,content,at_mobilesNone): 发送钉钉文本消息 webhook_url: 钉钉机器人的Webhook地址 content: 消息内容 at_mobiles: 要的人的手机号列表如 [13800138000] payload{msgtype:text,text:{content:content}}ifat_mobiles:payload[at]{atMobiles:at_mobiles,isAtAll:False}responserequests.post(webhook_url,jsonpayload)resultresponse.json()ifresult.get(errcode)0:print(✅ 钉钉消息发送成功)else:print(f❌ 钉钉消息发送失败:{result.get(errmsg)})returnresult# 使用send_dingtalk_text(https://oapi.dingtalk.com/robot/send?access_tokenxxx,【RPA通知】今日竞品价格采集已完成共采集850条商品数据。,at_mobiles[13800138000])发送Markdown消息拼多多店群自动化上架方案钉钉的Markdown消息更丰富defsend_dingtalk_markdown(webhook_url,title,text):payload{msgtype:markdown,markdown:{title:title,text:text}}responserequests.post(webhook_url,jsonpayload)returnresponse.json()# 发送日报格式markdown_content ## 竞品价格日报 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/afe1af7cdbce45fcb27a8ab0a3ced8c2.png#pic_center) **日期**2026-06-11 **数据来源**拼多多、淘宝 | 平台 | 采集商品数 | 均价 | 较昨日变化 | |------|-----------|------|-----------| | 拼多多 | 450 | ¥32.5 | -2.1% | | 淘宝 | 400 | ¥38.2 | 0.8% | 异常提醒拼多多XX商品降价超过15%请关注 send_dingtalk_markdown(webhook_url,竞品价格日报,markdown_content)钉钉的安全设置钉钉机器人有三种安全策略创建时按需选择自定义关键词消息内容必须包含指定关键词如RPA通知才会发送加签需要计算签名更安全但代码复杂IP白名单限制只有指定IP的请求才能触发如果选了加签模式需要额外的签名计算importtimeimporthmacimporthashlibimportbase64importurllib.parsedefsign_dingtalk(secret):钉钉加签模式下的签名计算timestampstr(round(time.time()*1000))secret_encsecret.encode(utf-8)string_to_signf{timestamp}\n{secret}string_to_sign_encstring_to_sign.encode(utf-8)hmac_codehmac.new(secret_enc,string_to_sign_enc,digestmodhashlib.sha256).digest()signurllib.parse.quote_plus(base64.b64encode(hmac_code))returntimestamp,sign# 在Webhook URL后拼接参数timestamp,signsign_dingtalk(你的加签密钥)signed_urlf{webhook_url}timestamp{timestamp}sign{sign}飞书群机器人消息推送获取Webhook地址打开飞书PC端 → 进入目标群聊群设置 → 群机器人 → 添加机器人选择自定义机器人飞书的Webhook地址自带安全校验Token复制即可发送文本消息defsend_feishu_text(webhook_url,content):发送飞书文本消息payload{msg_type:text,content:{text:content}}responserequests.post(webhook_url,jsonpayload)resultresponse.json()ifresult.get(code)0:print(✅ 飞书消息发送成功)else:print(f❌ 飞书消息发送失败:{result.get(msg)})returnresult# 使用send_feishu_text(https://open.feishu.cn/open-apis/bot/v2/hook/xxx,【RPA通知】流程运行完毕)发送富文本消息飞书的超能力飞书支持消息卡片比纯文本好看很多defsend_feishu_card(webhook_url,title,content_items): 发送飞书卡片消息 content_items: [{tag: text, text: 内容}, ...] payload{msg_type:interactive,card:{header:{title:{tag:plain_text,content:title},template:blue# 蓝色标题栏},elements:[{tag:div,text:{tag:lark_md,content:\n.join(content_items)}},{tag:hr# 分割线},{tag:note,elements:[{tag:plain_text,content:f发送时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)}}]}]}}responserequests.post(webhook_url,jsonpayload)returnresponse.json()# 发一张漂亮的日报卡片send_feishu_card(feishu_webhook, 今日数据汇总,[**采集平台**拼多多、淘宝、1688,**采集商品数**1,250,**均价**¥35.80,,⚠️ **异常提醒**3个商品降价超过15%,])封装一个统一的消息推送层如果你的团队不同组用不同的IM写一个统一接口classMessagePusher:统一的消息推送器适配企业微信/钉钉/飞书def__init__(self,platform,webhook_url):self.platformplatform self.webhook_urlwebhook_urldefsend_text(self,content):ifself.platformwecom:returnself._send_wecom_text(content)elifself.platformdingtalk:returnself._send_dingtalk_text(content)elifself.platformfeishu:returnself._send_feishu_text(content)else:print(f❌ 不支持的平台:{self.platform})defsend_report(self,title,items):发送格式化报告ifself.platformdingtalk:mdf##{title}\n\n\n.join(f-{item}foriteminitems)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f148a376875b4353a4d1765dbd41ce0a.png#pic_center)returnself._send_dingtalk_markdown(title,md)elifself.platformfeishu:returnself._send_feishu_card(title,items)else:textf{title}\n\n.join(f•{item}foriteminitems)returnself.send_text(text)# ... 各平台的私有方法# 使用时只需要改一行配置pusherMessagePusher(feishu,https://open.feishu.cn/open-apis/bot/v2/hook/xxx)pusher.send_report(竞品价格日报,[拼多多450条均价¥32.5,淘宝400条均价¥38.2,异常商品3个,])消息推送的最佳实践1. 不要刷屏每小时最多推一条。如果采集频率高把结果汇总后定时推送而不是采集一条发一条。2. 区分严重级别 错误流程运行失败 → 立即推送 人 警告某步骤异常但流程继续 → 汇总到日报 信息流程正常运行 → 可选推送 [video(video-KV65Kuc4-1781341567728)(type-csdn)(url-https://live.csdn.net/v/embed/524993)(image-https://v-blog.csdnimg.cn/asset/a547123d88ad712dccba346c9217e237/cover/Cover0.jpg)(title-TEMU店群如何管理运营)]3. 消息要有可操作性坏消息采集失败了好消息拼多多价格采集失败超时。点击这里查看日志[链接]。请检查代理IP是否正常。好的消息告诉接收人发生了什么、为什么、现在要做什么。4. 限制Webhook请求频率三个平台都有频率限制通常每分钟20条左右。如果你的流程可能高频发送加上缓冲importtimefromcollectionsimportdequeclassRateLimiter:def__init__(self,max_per_minute15):self.requestsdeque()self.max_per_minutemax_per_minutedefwait_if_needed(self):nowtime.time()# 清理1分钟前的记录whileself.requestsandself.requests[0]now-60:self.requests.popleft()iflen(self.requests)self.max_per_minute:wait_time60-(now-self.requests[0])print(f⏳ 频率限制等待{wait_time:.1f}秒...)time.sleep(wait_time)self.requests.append(time.time())写在最后IM消息推送是RPA自动化的最后一公里——流程跑完了如果没人知道结果等于没跑。最省事的方案是选公司主用的IM平台打通Webhook然后在所有流程的结束时统一调一次发送通知。后续如果换平台只需要改MessagePusher的配置不需要动任何流程代码。内容标签影刀RPA · 钉钉 · 飞书 · 消息推送 · Webhook · 群机器人 · 通知自动化作者林焱系列说明本文是「影刀RPA新手到高手」系列教程之一面向需要多IM平台消息推送的开发者。