千家信息网

Asp.Net Core对接钉钉群机器人的示例分析

发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇文章主要介绍了Asp.Net Core对接钉钉群机器人的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言钉钉作为企业办公
千家信息网最后更新 2025年02月24日Asp.Net Core对接钉钉群机器人的示例分析

这篇文章主要介绍了Asp.Net Core对接钉钉群机器人的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

钉钉作为企业办公越来越常用的软件,对于企业内部自研系统提供接口支持,以此来打通多平台下的数据,本次先使用最简单的钉钉群机器人完成多种形式的消息推送,参考钉钉开发文档中自定义机器人环节,此次尝试所花的时间不多,但有几个地方是需要注意的。

  

一、钉钉群中建立机器人获取WebHook地址

首先得有一个钉钉群,如果没有得自行创建一个了,通过群内右上角菜单中找到群机器人然后添加一个自定义机器人

  

并设置消息推送开启(默认是开启),复制下一行的webhook地址,该地址将作为后面消息推送的地址

  

完成即可,如果不确定该地址是否有效可以用命令测试一下,比如在Linux平台下,通过该命令并将自己的webhook_token替换

curl 'https://oapi.dingtalk.com/robot/send?access_token=cd1eb120c459ced6a65491af7b1eebbc84790fb672077a969bae8bb203aa1c52' \ -H 'Content-Type: application/json' \ -d ' {"msgtype": "text",  "text": {  "content": "我就是我, 是不一样的烟火"  } }'

然后回车进行测试,即刻收到群机器人推送的消息  

二、参考文档完成基础类的封装并处理相关字段

接下来开始在代码中完成对WebHook地址的调用,可以先分析一下群机器人的文档,可以获悉有五种消息类型:文本 (text)、连接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型,其中的actionCard分整体和独立两类。针对这些类型及给出的参数要求完成基础类的设计和封装,以text类型为例:

其中的msgtype是五种消息类型的字符串,因此针对该部分设计一个枚举,作为消息类型的区分。

/// /// 钉钉群机器人消息类型枚举/// public enum MsgTypeEnum{ text, link, markdown, actionCard, feedCard}

设计一个text类并给定一个属性Content,在设计时我们喜欢使用帕斯卡命名法,但是钉钉接口却不允许,如果不做一些处理,直接使用Content属性将会调用不通接口,这点需要注意,使用Newtonjson提供的打包成json时用指定的名称替换来满足钉钉接口需求。

/// /// 文本类型/// public class Text{ ///  /// 文本内容 ///  [JsonProperty(PropertyName = "content")] public string Content { get; set; }}

其次对指定人群做一个类的封装,同样需要处理其中的属性在序列化时的替换名称。

/// /// @指定人/// public class At{ ///  /// @的联系人 ///  [JsonProperty(PropertyName = "atMobiles")] public List AtMobiles { set; get; } ///  /// 是否@所有人 ///  [JsonProperty(PropertyName = "isAtAll")] public bool IsAtAll { set; get; }}

通过分析五种消息类型,其中的一些参数可以完成共用,对自定义钉钉机器人文档的一系列挖掘后,确定了这几个类和枚举

接下来可以完成对机器人调用了并使用不同消息类型推送到钉钉群中。

三、完成对钉钉群机器人的调用

首先在ConfigureService方法中完成对HttpClientFactory的注入

本次直接在Asp.Net Core WebApi下完成机器人的调用,新建一个DingTalk的控制器,然后完成对IHttpClientFactory的注入工作,便开始接下来的服务调用了,对于钉钉的WebHook_Token的存放可以选择配置文件或是如果只是尝试,可以直接用一个变量保存即可。

/// /// 发送钉钉消息接口/// [Route("api/[controller]")][ApiController]public class DingTalkController : ControllerBase{ private readonly string WebHook_Token = "https://oapi.dingtalk.com/robot/send?access_token=cd1eb120c459ced6a65491af7b1eebbc84790fb672077a969bae8bb203aa1c52"; private readonly IHttpClientFactory _httpClientFactory; public DingTalkController(IHttpClientFactory httpClientFactory) {  _httpClientFactory = httpClientFactory; }}

再次以text文本为例并完成文本消息的推送,建立一个action,用来发送文本消息,在其中完成对钉钉接口需要参数的组装工作,最终使用统一的发送方法完成消息推送。

/// /// 调用钉钉机器人发送文本内容/// /// [HttpGet][Route(nameof(TextContent))]public async Task TextContent(){ //消息类型 var msgtype = MsgTypeEnum.text.ToString(); //文本内容 var text = new Text {  Content = "看万山红遍,层林尽染;漫江碧透,百舸争流@15675120617" }; //指定目标人群 var at = new At() {  AtMobiles = new List() { "15675120617" },  IsAtAll = false }; var response = await SendDingTalkMessage(new { msgtype, text, at }); return Ok(response);}

对于发送方法内需要根据钉钉文档的一些要求完成设计,如文档指明需要使用Post提交请求并使用UTF8编码,我直接在控制器内新建了一个方法(尽管不太合理),首先对内容进行序列化并封装,然后通过HttpClientFactory新建client并完成发送消息。

/// /// 执行发送消息/// /// /// private async Task SendDingTalkMessage(object value){ var sendMessage = JsonConvert.SerializeObject(value); var request = new HttpRequestMessage(HttpMethod.Post, WebHook_Token) {  //钉钉文档需指定UTF8编码  Content = new StringContent(sendMessage, Encoding.UTF8, "application/json") }; var client = _httpClientFactory.CreateClient(); var response = await client.SendAsync(request); return response;}

启动程序并通过url访问控制器内的相应方法完成消息推送,注意各属性的命名方式或通过特性转换后的命名方式需要满足钉钉接口文档(文档中FeedCard类型后两个参数不太标准)。

感谢你能够认真阅读完这篇文章,希望小编分享的"Asp.Net Core对接钉钉群机器人的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

消息 机器 机器人 类型 文档 文本 接口 推送 方法 设计 分析 参数 地址 属性 篇文章 封装 接下来 内容 控制器 参考 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库 添加索引 上海凌极网络技术有限公司 教学软件开发公司部门目标 免费学网络技术 服务器硬盘缓存是多大 eclipse连接svn服务器 暗黑3服务器维护 如何限制服务器的带宽使用 腾讯容纳10万台服务器是几u的 软件开发周例会发言ppt 数据库技术及应用尔雅 软件开发主题邮件 北京推广网络技术哪家好 数据库安全保护实验 软件开发需求陈述 江苏微聚互联网络科技有限公司 实用网络技术实验pdf 中油即时通电脑版无法连接服务器 数百服务器70万玩家惨烈大乱斗 南海区地下管线数据库 河北工业软件开发收费报价表 qq聊天记录是在本地还是服务器 怎么安装服务器杀毒软件 软件开发外包涉税处理 长春网络安全公司排名 高陵市网络安全宣传 景德镇物理服务器费用多少 保立网络技术有限公司待遇 日常生活中数据库的例子 汽车网络安全体系护航
0