以下是针对前文《【高精度监控】C#上位机开发实战多设备联动与日志存储》中实时报警机制的企业微信推送实现完整扩展方案。企业微信推送在工业上位机场景中非常实用常用于严重/急停报警即时通知运维人员夜间无人值守时的关键异常提醒生产报表/日报自动推送给管理层1. 方案对比2025–2026 年主流方式方式优点缺点推荐场景开发难度企业微信群机器人Webhook最简单、无需认证、最快上线只能发群消息、样式较简单车间/值班群报警推送★☆☆☆☆企业微信应用消息API支持个人/群/部门、富文本、卡片需要创建应用 Secret AccessToken精准推送给特定人员/角色★★★☆☆企业微信客服消息支持会话式交互、历史记录主要用于客服场景不适合报警不推荐—第三方平台飞书/钉钉桥接一套代码多平台增加依赖、延迟可能更高多平台统一推送需求★★☆☆☆工业监控推荐企业微信群机器人Webhook最稳、最快、最低成本严重报警再结合应用消息精准推送给负责人。2. 企业微信群机器人推送最常用方式步骤1创建群机器人打开企业微信 → 群聊 → 右键群 → 添加群机器人设置机器人名称如“生产线报警机器人”复制生成的Webhook 地址格式如下https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx步骤2C# 推送实现推荐 HttpClient JsonusingSystem.Net.Http;usingSystem.Text;usingSystem.Text.Json;usingSystem.Threading.Tasks;publicclassWeComWebhookNotifier{privatereadonlystring_webhookUrl;privatereadonlyHttpClient_httpClient;publicWeComWebhookNotifier(stringwebhookUrl){_webhookUrlwebhookUrl;_httpClientnewHttpClient{TimeoutTimeSpan.FromSeconds(10)};}/// summary/// 发送文本消息最常用/// /summarypublicasyncTaskboolSendTextAsync(stringcontent,string[]?mentionedListnull,string[]?mobileListnull){varpayloadnew{msgtypetext,textnew{content,mentioned_listmentionedList??Array.Emptystring(),mentioned_mobile_listmobileList??Array.Emptystring()}};returnawaitSendJsonAsync(payload);}/// summary/// 发送 Markdown 消息支持颜色、加粗、链接/// /summarypublicasyncTaskboolSendMarkdownAsync(stringtitle,stringcontent,AlarmLevellevelAlarmLevel.Warning){stringcolorlevelswitch{AlarmLevel.Infoinfo,AlarmLevel.Warningwarning,AlarmLevel.Seriouscomment,AlarmLevel.Emergencyred,_info};varmarkdown$### {title}**级别**{level}**描述**{content}**时间**{DateTime.Now:yyyy-MM-ddHH:mm:ss};varpayloadnew{msgtypemarkdown,markdownnew{contentmarkdown}};returnawaitSendJsonAsync(payload);}/// summary/// 发送卡片消息更美观推荐严重报警/// /summarypublicasyncTaskboolSendCardAsync(AlarmEventalarm){stringcoloralarm.Levelswitch{AlarmLevel.Emergency#FF0000,AlarmLevel.Serious#FF6600,AlarmLevel.Warning#FFCC00,_#0066CC};varpayloadnew{msgtypetemplate_card,template_cardnew{card_typetext_notice,sourcenew{icon_urlhttps://example.com/alarm-icon.png,desc生产线监控},main_titlenew{title$【{alarm.Level}】{alarm.Description}},emphasis_contentnew{titlealarm.CurrentValue?.ToString(F2)??异常,descalarm.TagName},sub_title_text$设备{alarm.DeviceId}| 时间{alarm.TriggerTime:yyyy-MM-dd HH:mm:ss},card_actionnew{type1,urlhttps://your-monitor-url/alarm?idalarm.Id,title查看详情},horizontal_content_listnew[]{new{keyname当前值,valuealarm.CurrentValue?.ToString(F2)??—},new{keyname阈值,valuealarm.Threshold.ToString(F2)}},card_menunew{desc已确认,actionkeyconfirm_alarm.Id}}};returnawaitSendJsonAsync(payload);}privateasyncTaskboolSendJsonAsync(objectpayload){try{varjsonJsonSerializer.Serialize(payload);varcontentnewStringContent(json,Encoding.UTF8,application/json);varresponseawait_httpClient.PostAsync(_webhookUrl,content);varresponseContentawaitresponse.Content.ReadAsStringAsync();if(response.IsSuccessStatusCode){varresultJsonDocument.Parse(responseContent).RootElement;if(result.GetProperty(errcode).GetInt32()0)returntrue;}Log.Error(企业微信推送失败: {Status} - {Content},response.StatusCode,responseContent);returnfalse;}catch(Exceptionex){Log.Error(ex,企业微信推送异常);returnfalse;}}}3. 集成到报警通知器前文 IAlarmNotifierpublicclassWeComAlarmNotifier:IAlarmNotifier{privatereadonlyWeComWebhookNotifier_webhook;publicWeComAlarmNotifier(stringwebhookUrl){_webhooknewWeComWebhookNotifier(webhookUrl);}publicasyncTaskNotifyAsync(AlarmEventalarm){stringtitle$【{alarm.Level}】{alarm.Description};stringcontent$设备{alarm.DeviceId}\n标签{alarm.TagName}\n触发值{alarm.Threshold:F2}\n当前值{alarm.CurrentValue:F2}\n时间{alarm.TriggerTime:yyyy-MM-dd HH:mm:ss};// 不同级别不同样式boolsuccessalarm.Levelswitch{AlarmLevel.Emergencyawait_webhook.SendCardAsync(alarm),AlarmLevel.Seriousawait_webhook.SendMarkdownAsync(title,content,alarm.Level),_await_webhook.SendTextAsync(content)};if(!success){Log.Warning(企业微信推送失败报警未送达: {Alarm},alarm);}}}4. DI 注册Program.cs// 在服务注册中stringwecomWebhookbuilder.Configuration[WeCom:WebhookUrl]??https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key你的key;builder.Services.AddSingletonIAlarmNotifier(spnewWeComAlarmNotifier(wecomWebhook));5. 生产注意事项Webhook 安全性key 泄露会导致群被刷屏建议存入 User Secrets / Azure Key Vault / 环境变量每个产线/车间用不同群机器人限流企业微信 webhook 每分钟 20 条建议严重报警才发卡片普通报警合并后发文本重试机制可加 Polly 策略重试 3 次指数退避富文本增强卡片支持跳转到你的监控系统详情页带 alarm.Id 参数如果需要更高级的应用消息推送支持指定人、接收人列表、消息卡片模板、Polly 重试包装、多群分级推送严重→运维群急停→领导群或者结合 TTS 语音播报的完整代码直接告诉我你的具体需求我继续补充。