企业公司网站,中国建设银行网站暑假工报名,网店设计方案计划书,新开元电销系统搭建简单的通知服务Intro很多情况下#xff0c;我们都会遇到一些需要进行通知报警的场景#xff0c;比如说服务器资源监控报警#xff0c;抢到火车票后通知用户进行付款。原来主要是用的钉钉群里的机器人来做的通知#xff0c;周末看到原来做 【Server 酱】的大佬写了一个简… 搭建简单的通知服务Intro很多情况下我们都会遇到一些需要进行通知报警的场景比如说服务器资源监控报警抢到火车票后通知用户进行付款。原来主要是用的钉钉群里的机器人来做的通知周末看到原来做 【Server 酱】的大佬写了一个简单的基于企业微信的微信推送代码是 PHP 的非常简单可以参考https://github.com/easychen/wecomchan于是就自己尝试了一下写了一个 C# 版的这样就可以直接推送到微信上对于不怎么用钉钉的小伙伴来说就更为方便了。有的时候我会帮朋友做一些小东西会需要做通知比如上次给朋友监控自如上的一个房子有一个房子待解冻朋友想要租这个房子想要在解冻的第一时间去签约这个房子于是就写了一个简单的定时去刷房子状态的一个小程序当房子状态变化的时候就发一个通知给我朋友这样就可以即时租到自己心仪的房子了。觉得通知功能还是挺实用的所以结合之前一直在用的钉钉推送和刚学到的微信推送写了一个小示例来分享一下我用来通知推送的代码详细参考后面的内容钉钉推送有用过钉钉的小伙伴可能都知道钉钉群可以添加机器人通过调用机器人的 Web Hook 来发送通知用起来非常的方便。步骤一获取自定义机器人Webhook打开机器人管理页面。以PC端为例打开PC端钉钉点击头像选择机器人管理。在机器人管理页面选择自定义机器人输入机器人名字并选择要发送消息的群同时可以为机器人设置机器人头像。完成必要的安全设置勾选我已阅读并同意《自定义机器人服务及免责条款》然后单击完成。目前有3种安全设置方式请根据需要选择一种自定义关键词最多可以设置10个关键词消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词监控报警则这个机器人所发送的消息必须包含监控报警这个词才能发送成功。加签IP地址段设定后只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式IP地址和IP地址段暂不支持IPv6地址白名单格式如下。格式说明1.1.1.1开发者的出口公网IP地址非局域网地址1.1.1.0/24用CIDR表示的一个网段把timestamp\n密钥当做签名字符串使用HmacSHA256算法计算签名然后进行Base64 encode最后再把签名参数再进行urlEncode得到最终的签名需要使用UTF-8字符集。参数说明timestamp当前时间戳单位是毫秒与请求调用时间误差不能超过1小时。secret密钥机器人安全设置页面加签一栏下面显示的SEC开头的字符串。把 timestamp和第一步得到的签名值拼接到URL中。https://oapi.dingtalk.com/robot/send?access_tokenXXXXXXtimestampXXXsignXXX
参数说明timestamp第一步使用到的时间戳。sign第一步得到的签名值。完成安全设置后复制出机器人的 Webhook 地址可用于向这个群发送消息格式如下https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX
请保管好此Webhook 地址不要公布在外部网站上泄露后有安全风险通常建议使用关键词就可以了之前的版本其实可以都不设置后来的版本添加了限制上面的几种方式需要选一种推荐使用关键词方式简单暴力钉钉机器人推送代码// 钉钉机器人推送用的 WebHook 地址
private const string DingBotWebHookUrl https://oapi.dingtalk.com/robot/send?access_token;public static async Task MainTest()
{using var httpClient new HttpClient();using var response await httpClient.PostAsync(DingBotWebHookUrl,new StringContent(new {msgtype text, text new {content $Test... {DateTime.Now:yyyy-MM-dd HH:mm:ss}}}.ToJson(), Encoding.UTF8, application/json));var result await response.Content.ReadAsStringAsync();Console.WriteLine($发送钉钉消息通知result:{result});
}
企业微信推送这个是根据大佬的这个项目改的 https://github.com/easychen/wecomchan原来项目的代码是 PHP 的我改成了 C# 的有需要的可以参考一下现在的代码里比较简单没有对 access_token 做缓存实际使用的时候建议进行缓存token 快过期的时候再去申请新的 token。使用企业微信推送需要先注册一个企业微信号不需要进行认证用微信注册就好了注册步骤引用大佬的介绍第一步注册企业用电脑打开企业微信官网注册一个企业第二步创建应用注册成功后点「管理企业」进入管理界面选择「应用管理」 → 「自建」 → 「创建应用」应用名称填入「Server酱」应用logo可以到这里下载可见范围选择公司名。创建完成后进入应用详情页可以得到应用ID( agentid )①应用Secret( secret )②。注意secret推送到手机端时只能在企业微信客户端中查看。第三步获取企业ID进入「我的企业」页面拉到最下边可以看到企业ID③复制并填到上方。推送UID直接填 all 推送给公司全员。第四步推送消息到微信进入「我的企业」 → 「微信插件」拉到下边扫描二维码关注以后即可收到推送的消息。上面的应用 id 和 logo 可以自定义不必和上面保持一致钉钉的推送较为简单直接调用一次接口就可以了微信的稍微麻烦一些需要先获取一下 access_token然后再调用发消息的接口推送示例代码如下// 企业 id
private const string CorpId ww3508de6cad12eebd;
// 应用 id
private const string AppId 1000003;
// 应用 secret
private const string AppSecret ;
// 要推送的用户all 表示全员推送
private const string ToUid all;public static async Task MainTest()
{var getTokenUrl $https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid{CorpId.UrlEncode()}corpsecret{AppSecret.UrlEncode()};using var httpClient new HttpClient();var responseStr await httpClient.GetStringAsync(getTokenUrl);Console.WriteLine(responseStr);var accessToken JsonNode.Parse(responseStr)[access_token].GetValuestring();var sendMessageUrl $https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token{accessToken.UrlEncode()};using var response await httpClient.PostAsJsonAsync(sendMessageUrl,new{touser ToUid,msgtype text,agentid AppId,text new {content $Test {DateTime.Now:yyyy-MM-dd HH:mm:ss}}});responseStr await response.Content.ReadAsStringAsync();Console.WriteLine(responseStr);
}
推送示例输出结果如下More感觉还是钉钉的推送更简单一些直接调用一次就好了access_token 是固定的使用微信推送的时候最好考虑缓存 access_token 不能频繁调用 gettoken 接口否则会受到频率拦截上面的示例代码可以从 Github 获取Referenceshttps://github.com/WeihanLi/SamplesInPractice/tree/master/notificationSamplehttps://developers.dingtalk.com/document/app/custom-robot-accesshttps://github.com/easychen/wecomchanhttps://work.weixin.qq.com/api/doc/90000/90003/90487https://work.weixin.qq.com/api/doc/90000/90135/90236