当前位置: 首页 > article >正文

C# 企业微信机器人推送消息 windows服务应用程序的使用

@C# 企业微信机器人推送消息
先添加一个机器人!
在这里插入图片描述

然后查看机器人就可以得到一个 webhook
特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!

然后开始写代码 ,只需要httpPost 调用一下这个地址就可以发送消息了。
首先我们创建服务项目,可以更好的定时发送
在这里插入图片描述

设置服务的属性
在这里插入图片描述
在这里插入图片描述
服务添加完成后可以写一个批处理文件去安装服务 使用微软的installutil 去安装服务
在程序debug目录 创建一个文本文件 扩展名改为bat就可以,然后把下面内容复制进去。最后以管理员方式运行
%~dp0 获取当前目录
WindowsService1.exe 项目的名称 根据实际情况定
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0WindowsService1.exe pause
运行成功后可以看到有我们刚刚创建好的服务
在这里插入图片描述

以上是windows服务程序的安装。 接下来我们写推送消息的实现

先写一个post请求的方法

   private static string HttpPost(string url, string body)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.Accept = "text/html, application/xhtml+xml, */*";
                request.ContentType = "application/json";

                byte[] buffer = encoding.GetBytes(body);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    return reader.ReadToEnd();
                }
            }
            catch (Exception)
            {
            }
            return "";
        }

然后是我们请求的内容 ,使用json格式更方便 于是我创建了一个请求的类 最后转换成json就可以

    class RequestModel
    {
        public string msgtype { get; set; } = "text";
        public text text { get; set; } = new text();
    }

    class text
    {
        /// <summary>
        /// 发松的内容
        /// </summary>
        public string content { get; set; } = "广州今日天气:29度,大部分多云,降雨概率:60%";
        public string mentioned_list { get; set; } = "@all";
    }

最后我们写一个方法去调用,使用 JsonConvert可以把实体类转换成Json格式
需要下载Newtonsoft.Json.dll 可以鼠标右键在nuget管理包中搜索下载

        /// <summary>
        /// 机器人发送消息
        /// </summary>
        /// <param name="message"></param>
        public static void WeChatRobot(string message)
        {
            try
            {
                RequestModel request = new RequestModel();
                request.text.content = message;
                string json = JsonConvert.SerializeObject(request);
                string webhookUrl = "这里填写机器人的webhook 可以在机器人信息那里查看";
                string response = string.Empty;
                while (string.IsNullOrEmpty(response))
                {
                    //3s请求一次 直到请求成功
                    response = HttpPost(webhookUrl, json);
                    Thread.Sleep(3000);
                }
                File.AppendAllText("D:\\Response.txt", response);
            }
            catch (Exception)
            {

                throw;
            }
        }

最后我们在服务启动里面调用这个机器人发送的方法就可以
判断每周五发送消息

 protected override void OnStart(string[] args)
        {
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    DayOfWeek DayOfWeek = DateTime.Now.DayOfWeek;
                    if (DayOfWeek == DayOfWeek.Friday)
                    {
                        Services.WeChatRobot($"今天是{DayOfWeek}");
                        break;
                    }
                    Thread.Sleep(1000);
                }
            });
        }

        protected override void OnStop()
        {
        }

程序有改动,只需要重新生成程序。 在安装一遍服务就可以。


http://www.kler.cn/a/372681.html

相关文章:

  • Atlas800昇腾服务器(型号:3000)—SwinTransformer等NPU推理【图像分类】(九)
  • Python教程: __slots__限制类实例对象动态添加属性和方法
  • 详细解读 CVPR2024:VideoBooth: Diffusion-based Video Generation with Image Prompts
  • thinkphp6 redis 哈希存储方式以及操作函数(笔记)
  • 前端 eslint 配置,以及在git提交之前自动format
  • Tomcat 11 下载/安装 与基本使用
  • ComfyUI - ComfyUI 工作流中集成 SAM2 + GroundingDINO 处理图像与视频 教程
  • docker-高级(待补图)
  • 百度SEO中的关键词密度与内容优化研究【百度SEO专家】
  • 职业技术学校新出路,无人机飞手考证、组装、调试全面提高市场就业率
  • Qt:信号和槽
  • leetcode动态规划(二十三)-打家劫舍III
  • 【Python学习计算机知识储备】
  • 如何从多个方面进行oracle数据库存储过程优化?
  • 【QNAP威联通NAS系统恢复进阶教程】如果 .conf 和 md9 无法自动组装,如何恢复 NAS?
  • hive 异常任务中间数据清理
  • 数据结构与算法分析——你真的理解查找算法吗——二叉查找树(代码详解)
  • 论文阅读:三星-TinyClick
  • k8s之调动pod到指定节点与创建多容器pod并查找pod日志
  • 【设计模式】《Java 设计模式魔法:解锁高效编程的秘密武器》
  • Linux线程安全(二)条件变量实现线程同步
  • Logstash 迁移索引元数据(设置和映射)
  • Word中遇到的问题记录(页眉,页码分节符,跨页断行)
  • 《Web性能权威指南》-浏览器API与协议-读书笔记
  • 搭建普通 Spring IoC 项目
  • 白立新:人工智能爆发,倒逼人类走向“三体全能”