通过代码来实现,以自定义群机器人来推送消息:

一、钉钉

1、首先建立一个群,在群设置里添加机器人,选择自定义机器人,点击添加,安全设置必须选择其一;

安全设置:

        ·自定义关键词:自定义一段词语或文字等,拥有这些文字才会推送,如:推送,在发送时,必须加上推送两个字;

        ·加签:钉钉APP会生成一段签名密钥,进行加密,我们在推送时Url也必须加上这段密钥;

        ·IP地址(段):顾名思义,就是限制推送者得IP地址范围;

2、设置完成后,就点击完成,会得到一段WebHook地址,这段地址就是推送要用到的Url,不要随意展示,以免被恶意推送;

3、我安全设置选择的是加签,因为这个最有实践意义或者说最难,首先我们要对加签得密钥进行解密转换来放入Url作为签名密钥,APP接受时会验证签名密钥;

        private readonly HttpClient _client = new HttpClient();
        private readonly string _baseUrl = "webHook地址";
        private readonly string _secret = "加签密钥";

        private async void button1_Click(object sender, EventArgs e)
        {
            //获取当前时间戳
            var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            //解密并转换密钥生成签名
            var sign = Convert.ToBase64String(
                new HMACSHA256(Encoding.UTF8.GetBytes(_secret))
                .ComputeHash(Encoding.UTF8.GetBytes($"{timestamp}\n{_secret}")))
                .Replace("+", "%2B").Replace("/", "%2F");

            //将webHook地址与签名组合
            var url = $"{_baseUrl.Split('?')[0]}?access_token={new Uri(_baseUrl).Query.Split('=')[1]}&timestamp={timestamp}&sign={sign}";

            //要发送得文本
            var msg = new
            {
                msgtype = "text",
                text = new { content = "消息发送尝试!"}  
            };

            //推送文本指群内
            var response = await _client.PostAsync(url,
                new StringContent(JsonConvert.SerializeObject(msg), Encoding.UTF8, "application/json"));

            //若机器人不存在或者链接异常会报异常
            response.EnsureSuccessStatusCode();

            //钉钉返回值
            var responseBody = await response.Content.ReadAsStringAsync();
            richTextBox1.Text += $"钉钉响应: {responseBody} \r\n";

            //正确响应{"errcode":0,"errmsg":"ok"}
        }

 二、企业微信

1、企业微信相较于钉钉更为简单,它没有安全设置,同样的操作,群设置里添加自定义机器人

2、就点击完成,会得到一段WebHook地址,这段地址就是推送要用到的Url;

        private string _wxUrl = "企业微信WebHook地址";

        private async void button2_Click(object sender, EventArgs e)
        {
            //需要推送得文本
            var msg = new
            {
                msgtype = "text",
                text = new { content = "消息发送尝试!" }  
            };

            //机器人推送文本到企业微信群
            var response = await _client.PostAsync(_wxUrl,
                new StringContent(JsonConvert.SerializeObject(msg), Encoding.UTF8, "application/json"));

            //机器人不存在或连接错误报异常
            response.EnsureSuccessStatusCode();

            //企业微信返回
            var responseBody = await response.Content.ReadAsStringAsync();
            richTextBox1.Text += $"企业微信响应: {responseBody} \r\n";

            //正确返回:{"errcode":0,"errmsg":"ok"}
        }

三、总结

举例:钉钉和企业微信,钉钉和企业微信都是WebHook地址,如果钉钉不走加签设置,钉钉和企业微信推送的方式是一摸一样的,有不喜欢麻烦的,就直接选钉钉自定义关键词,和企业微信一样代码,不一样WebHook地址,就能实现推送;

成功样例:

也就说,只需要将企业微信下方代码WebHook地址改为钉钉机器人的地址一样可以使用,前提钉钉安全设置里没选择加签!!!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐