从零开始打造专属钉钉机器人
一、前言
废话不多的实现简单的钉钉机器人。我们分为下面几个步骤来逐步讲解。
1.钉钉机器人的类型
2.如何打造一个最最简单的钉钉机器人
二、钉钉机器人的类型
常用的钉钉机器人有两种,
1、通知类型的机器人:适合在群内进行一些通知,推荐消息等内容。
2、可以回复消息的机器人:能够回复@机器人的消息,机器人会将响应内容发送到群里。
本次,我们分别讲解两种机器人是如何实现的
三、打造一个最简单的通知类型钉钉机器人
首先用通知类型的机器人为例子。1. 打开一个你想创建机器人的钉钉群。2.在右边栏选择更多选项,点击群助手的打开:
然后选择添加机器人
选择自定义机器人
然后需要注意!在这个配置页面中。
安全设置我们选择【自定义关键词】
只要每次发送的消息带有该自定义关键词,消息就能成功发送。接下来选择同意并完成。
拷贝标记出来的完整链接【Webhook】,然后选择完成
钉钉机器人的配置就完成了。
3.第三步开始开始写代码:
直接上发起的示例代码:
apiurl 就是获取的完整链接【Webhook】
jsonString是发起的请求内容,json格式示例如下:
{"msgtype": "text", //钉钉的发送样式"text": {"content": "我就是我, 是不一样的烟火@156xxxx8827" //发送到群中的内容}, "at": { //需要消息@对应人的手机号"atMobiles": ["156xxxx8827", "189xxxx8325"], "isAtAll": false //如果需要@所有人 这个值设置为true}
}
下面就是发送代码:
/// <summary>
/// 以Post方式发送请求
/// </summary>
/// <param name="apiurl">请求的URL</param>
/// <param name="jsonString">请求的json参数</param>
/// <param name="headers">请求头的key-value字典</param>
public static string PostDingDing(string jsonString, string apiurl = null, Dictionary<String, String> headers = null){if (apiurl == null){apiurl = AppSettings.WebHook;//机器人的webhook}WebRequest request = WebRequest.Create(@apiurl);request.Method = "POST";request.ContentType = "application/json";if (headers != null){foreach (var keyValue in headers){if (keyValue.Key == "Content-Type"){request.ContentType = keyValue.Value;continue;}request.Headers.Add(keyValue.Key, keyValue.Value);}}if (String.IsNullOrEmpty(jsonString)){request.ContentLength = 0;}else{byte[] bs = Encoding.UTF8.GetBytes(jsonString);request.ContentLength = bs.Length;Stream newStream = request.GetRequestStream();newStream.Write(bs, 0, bs.Length);newStream.Close();}WebResponse response = request.GetResponse();Stream stream = response.GetResponseStream();Encoding encode = Encoding.UTF8;StreamReader reader = new StreamReader(stream, encode);string resultJson = reader.ReadToEnd();return resultJson;}
好了,我们的钉钉机器人消息就发起成功了,如下图:
四、打造一个最简单的自动回复机器人
自动回复消息的机器人,能够回复@机器人的消息,机器人会将响应内容发送到群里。
该功能能够直接在钉钉中就实现简单的数据查询与交互。
接下来我们实现一个简单的自动回复机器人的例子。1. 首先需要登陆钉钉开发者后台,创建一个机器人。
登录钉钉开发者后台,
选择应用开发-企业内部开发-机器人,点击创建机器人。
2.选择创建机器人:
选择应用类型是机器人,想一个机器人的名称等等,然后直接点击【确定创建】,机器人就创建好了。
3.机器人简易配置:
参数 | 描述 |
---|---|
服务器出口IP | 填写本企业服务器的公网IP |
消息接收地址 | 填写一个公网可访问的本企业HTTPS服务地址,用于接收POST过来的消息 |
只用配置如上两个参数。一个简单的机器人配置就完成了。
4.后端代码配置:
机器人配好了,但是目前还是调试模式,正式上线前,可以在测试群进行调试。
在测试群中,新增一个刚刚建好的机器人,保存好Webhook
5.接下来是代码了:
首先构建一个接收类
public class dingRotBotDto{public string msgtype { get; set; }public dingText text { get; set; }public string msgId { get; set; }public string createAt { get; set; }public string conversationType { get; set; }public string conversationId { get; set; }public string conversationTitle { get; set; }public string senderId { get; set; }public string senderNick { get; set; }public string senderCorpId { get; set; }public string senderStaffId { get; set; }public string chatbotUserId { get; set; }public List<dingUser> atUsers { get; set; }}public class dingText{public string content { get; set; }}public class dingUser{public string dingtalkId { get; set; }public string staffId { get; set; }}
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
msgtype | 是 | String | 目前只支持text |
content | 是 | String | 消息文本 |
msgId | 是 | String | 加密的消息ID |
createAt | 是 | String | 消息的时间戳,单位ms |
conversationType | 是 | String | 1-单聊、2-群聊 |
conversationId | 是 | String | 加密的会话ID |
conversationTitle | 否 | String | 会话标题(群聊时才有) |
senderId | 是 | String | 加密的发送者ID |
senderNick | 是 | String | 发送者昵称 |
senderCorpId | 否 | String | 发送者当前群的企业corpId(企业内部群有) |
senderStaffId | 否 | String | 发送者在企业内的userid(企业内部群有) |
chatbotUserId | 是 | String | 加密的机器人ID |
atUsers | 否 | Array | 被@人的信息dingtalkId: 加密的发送者IDstaffId: 发送者在企业内的userid(企业内部群有) |
然后构建一个返回消息类:
public class DingDingMessage{public DingDingMessage(){this.at = new At();this.text = new Text();this.markdown = new MarkDown();}public string msgtype { set; get; }//消息类型public Text text { set; get; }//text类型public MarkDown markdown { set; get; }//markdown类型public At at { set; get; }//@}
参数 | 是否必填 | 类型 | 描述 |
---|---|---|---|
msgtype | 是 | String | text |
content | 是 | String | 消息文本 |
atMobiles | 否 | Array | 被@人的手机号 |
isAtAll | 否 | Boolean | @所有人是true,否则为false |
现在开始写一个接收钉钉机器人消息的方法:
[HttpPost("GetDingRoBot")]public async Task<IActionResult> GetDingRoBot([FromBody] dingRotBotDto input){var phone=await _fuluDing.GetUserPhone(input.senderStaffId);//获取发送人的电话,回复消息的时候可以@对应的发送人。if (input.text.content.Contains("[XXXX]"))///input.text.content就是接受到的消息, 可以通过改字段进行消息过滤{var s = input.text.content.Split(']')[1];var text=await todo...;//调用自己的方法,返回需要回复的消息SendMessage(text, phone); //发送回复的消息}else{await SendMessage("请输入正确的命令:[流水上账查询]XXXX", phone);}return Ok(ResponseResult.Execute("0", null, $"发送成功"));}public SendMessage(string text,string atMobiles)//发送消息{DingDingMessage message = new DingDingMessage();message.msgtype = "text";message.text.content = text;message.at.atMobiles.Add(atMobiles);String data = JsonConvert.SerializeObject(message);//Json将对象序列化var json = await _client.PostAsync("xxxxx", new StringContent(data, Encoding.UTF8, "application/json"));//post 发起一个请求到 配置该机器人群的 Webhook 地址xxxxx}
这样 ,一个可以回复消息的机器人就配置好了。我们可以试一试。
6.上线:
好了,当我们一切弄好就可以正式上线了
只要我们点击管理页面的上线。机器人就正式上线了。文章的最后,顺带分享下几个踩坑问题
1.发起的消息中一定要带上【自定义关键词】的内容,不然发起不成功。
2.钉钉机器人发送消息有限制,1min最多20条,超过的无法发送,钉钉会进行限流一段时间。
从零开始打造专属钉钉机器人相关推荐
- php 钉钉头像生成,从零开始打造专属钉钉机器人
官方定义如下: 群机器人是钉钉群的高级扩展功能.群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操 ...
- 把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
就像黑火药时代里突然诞生的核弹一样,OpenAI的ChatGPT语言模型的横空出世,是人工智能技术发展史上的一个重要里程碑.这是一款无与伦比.超凡绝伦的模型,能够进行自然语言推理和对话,并且具有出色的 ...
- 新一代企业操作系统:专属钉钉解决方案全新上线
6月17日,在阿里云新品发布会上,阿里云宣布专属钉钉解决方案正式上线.专属钉钉解决方案是阿里云同钉钉联手打造的新一代企业数字化办公操作系统. 通过同上千家企业在企业数字化办公上的探讨,专属钉钉解决方案 ...
- python自动化高效办公第二期,带你项目实战【二】{数据可视化、发送邮件(定时任务监控)、python聊天机器人(基于微信、钉钉)}
相关文章和数据源: python自动化高效办公第二期,带你项目实战[一]{excel数据处理.批量化生成word模板.pdf和ppt等自动化操作} Python自动化办公--Pandas玩转Excel ...
- 记一次钉钉群聊机器人的开发
文章目录 一.需求描述 二.开发思路 三.开发步骤 (一)阅读开发文档 (二)创建机器人 (三)了解消息格式 (四)传参并调用 (五)其他 四.总结 一.需求描述 为实现更好的沟通,现需要实现以自定义 ...
- 使用钉钉创建企业内部机器人
目录 玩转钉钉机器人 创建钉钉机器人: 如何创建钉钉机器人 如何调用机器人api 支持的消息格式 text类型 markdown类型 整体跳转actionCard类型 feedCard类型 使用钉钉机 ...
- Java教程:如何对接自定义钉钉机器人并实现群聊消息发送
正文: 钉钉对机器人提供了多种使用场景,但目前我们只针对群聊消息的发送,@所有 或 @某某 以实现目的,此场景只需实现自定义机器人介入即可! 这是官方介绍: 点击此处直达 **自定义机器人支持5种消息 ...
- 【钉钉-场景化能力包】群机器人数据报表推送
客户痛点 现代企业中的员工人数随着时代发展逐渐增多,让原本的管理者管理员工也越发困难,特别是特殊行业,在设备消息推送.监控报警.信息公示等多种场景中,因为任务的复杂性比较高,需要多人一起协同时,更是让 ...
- 钉钉群机器人开发接口
钉钉群机器人开发接口 获取自定义机器人webhook 步骤一,在机器人管理页面选择"自定义"机器人,输入机器人名字并选择要发送消息的群.如果需要的话,可以为机器人设置一个头像.点击 ...
最新文章
- UITableView reloadData 跳动闪动
- NVelocity模板引擎的注意事项
- 就地电子数据展示与保留
- 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图
- ros轮式小车学习链接
- C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)
- 数据结构课上笔记11
- deepin tim(wine)无法安装_浅析国产操作系统深度deepin
- HashMap的put方法返回值问题
- win7下安装TensorFlow
- sysbench 1.0.6 mysql_mysql sysbench 1.0.X
- 【STM32】【STM32CubeMX】STM32CubeMX的使用之五:定时器时基配置及其中断
- python机器学习库sklearn——降维
- Proj.4 API 中文参考
- 软件工程毕业设计要求
- 超级马里奥【附源码】
- 路由聚合(汇总)以及最长匹配原则
- ES6转换成ES5/ES3
- Java实现 LeetCode 134 加油站
- 全网最完整php禁用eval函数讲解
热门文章
- HTTPS,HTTP
- winform简单的向richTextBox插入表格
- golang如何操作excel文档
- iOS 运行出现:Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /Sourc
- 看快手怎么显示无法访问服务器,看快手有访客痕迹吗,快手如何查看别人看过我?...
- 第五章 手工测试之APP项目
- c# 托管的函数和要素_优质电子邮件托管的5个基本要素
- Activity跳转动画
- 看了蛮久zhttty的《无限恐怖》才发现
- windows.h详解