SpringBoot整合钉钉实现消息推送

前言

钉钉作为一款企业级通讯工具,具有广泛的应用场景,包括但不限于团队协作、任务提醒、工作汇报等。

通过Spring Boot应用程序整合钉钉实现消息推送,我们可以实现以下功能:

  • 实时向指定用户或群组发送消息通知。
  • 自定义消息内容和格式,满足不同业务需求。
  • 监控和提醒功能的实现,提高工作效率和沟通效果。

在接下来的部分,我们将逐步介绍如何在Spring Boot中配置和调用钉钉消息推送API,以实现消息推送功能。

钉钉群安装机器人

电脑端登录钉钉,选择一个群聊进行如下的操作:

点击群设置

群设置——>点击机器人

机器人管理——>添加机器人

添加机器人

选择自定义

点击添加

添加机器人设置

注:复制生成的签名串,后续将会用到!

复制出来的结果如下:
SEC1cc02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

勾选协议,点击完成即可!

接下来节将会出现如下配置:

image

注:复制Webhook地址,后续将使用该地址向钉钉群推送消息!

地址如下:

https://oapi.dingtalk.com/robot/send?access_token=89742c23bdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

到此位置,经过以上步骤,钉钉群安装机器人完成了。

添加机器人完成

集成钉钉消息推送功能

引入依赖

在项目pom.xml文件中引入依赖,当前版本1.0.3.RELEASE

        <dependency><groupId>cn.snowheart</groupId><artifactId>spring-boot-dingtalk-robot-starter</artifactId><version>1.0.3.RELEASE</version></dependency>

配置WebHook地址

在application.yml配置文件中配置钉钉机器人的WebHook地址:

dingtalk:robot:prefix: https://oapi.dingtalk.com/robot/sendaccess-token: 89742c23bdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsecret:secret-enabled: truesecret-token: SEC1cc02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

功能测试

@RestController
@RequestMapping
@Slf4j
public class DingTalkController {@Autowiredprivate DingTalkRobotClient dingTalkRobotClient;/*** 测试发送文本消息*/@GetMapping("/sendMsg")public void sendMessage() {DingTalkResponse response = dingTalkRobotClient.sendMessage(new TextMessage("公众号:小小开发者!"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());}}

启动项目,访问:http://127.0.0.1:8080/sendMsg 即可发送!

消息发送

其他相关测试

普通文本通知

  /*** 普通文本通知*/@GetMapping("/sendTextMessage")public void sendTextMessage() {DingTalkResponse response = dingTalkRobotClient.sendTextMessage(new TextMessage("业务处理异常:构建TextMessage对象发布!"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendTextMessage("业务处理异常:构建普通字符串发布!");Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendTextMessage("业务处理异常:通知指定人!", new String[]{"17767145153"});Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendTextMessage("业务处理异常:通知群内所有人!", true);Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);}

访问:http://127.0.0.1:8080/sendTextMessage

普通文本通知

超链接文本

    /*** 超链接文本*/@GetMapping("/sendLinkMessage")public void sendLinkMessage() {DingTalkResponse response = dingTalkRobotClient.sendLinkMessage(new LinkMessage("业务处理异常:AAAAAA","BBBBBB","CCCCCC","DDDDDD"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);
}

访问:http://127.0.0.1:8080/sendLinkMessage

超链接文本

Markdown文本推送

 private static final String markDownDemoText = "业务报警:标题" +"# 一级标题\n" +"## 二级标题\n" +"### 三级标题\n" +"#### 四级标题\n" +"##### 五级标题\n" +"###### 六级标题\n";/*** markdown文本推送*/@GetMapping("/sendMarkdownMessage")public void sendMarkdownMessage() {// 构建 markdown 对象用法DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(new MarkdownMessage("业务处理异常:钉钉markdown消息支持的语法",markDownDemoText));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);// 不构建对象response = dingTalkRobotClient.sendMarkdownMessage("业务处理异常:钉钉markdown消息支持的语法",markDownDemoText);Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);// 发送给指定人response = dingTalkRobotClient.sendMarkdownMessage("业务处理异常:钉钉markdown消息支持的语法",markDownDemoText, new String[]{"19087690186"});Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);//发送给全体人response = dingTalkRobotClient.sendMarkdownMessage("业务处理异常:钉钉markdown消息支持的语法",markDownDemoText, true);Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);}

访问:http://127.0.0.1:8080/sendMarkdownMessage

markdown文本推送

ActionCard 业务推送

 /*** ActionCard业务推送*/@GetMapping("/sendActionCardMessage")public void sendActionCardMessage() {DingTalkResponse response = dingTalkRobotClient.sendActionCardMessage(new ActionCardMessage("业务报警:This is title", "![screenshot](@lADOpwk3K80C0M0FoA)\n" +"**Apple Store** 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendActionCardMessage("业务报警:This is title", "![screenshot](@lADOpwk3K80C0M0FoA)\n" +"**Apple Store** 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划");Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendActionCardMessage("业务报警:This is title", "![screenshot](@lADOpwk3K80C0M0FoA)\n" +"**Apple Store** 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",HideAvatarType.HIDE);Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendActionCardMessage("业务报警:This is title", "![screenshot](@lADOpwk3K80C0M0FoA)\n" +"**Apple Store** 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",ActionCardButton.defaultReadButton("https://www.dingtalk.com"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendActionCardMessage("业务报警:This is title", "![screenshot](@lADOpwk3K80C0M0FoA)\n" +"**Apple Store** 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",HideAvatarType.HIDE,ActionCardButton.defaultReadButton("https://www.dingtalk.com"));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);}

访问:http://127.0.0.1:8080/sendActionCardMessage

ActionCard 业务推送

FeedCard 消息推送

    /*** FeedCard 消息推送* @throws InterruptedException*/@GetMapping("/sendFeedCardMessage")public void sendFeedCardMessage()  {ArrayList<FeedCardMessageItem> items = new ArrayList<>();items.add(new FeedCardMessageItem("业务处理异常:成为架构师的路上,看这一篇文章就足够了,因为……","http://mp.weixin.qq.com/s/CPUaB60pue0Zf3fUL9xqvw","https://mmbiz.qpic.cn/mmbiz_jpg/YriaiaJPb26VMtfgPvTsM9amH5hf3pmTbf40ia6OLE845icrDb0vt4AsMnTyva5mMMpwwxnkVR5UjCEI8ADvSic1qWQ/640"));items.add(new FeedCardMessageItem("业务处理异常:想成为一名Web开发者?你应该学习Node.js而不是PHP","http://mp.weixin.qq.com/s/x8dm9e7gwLXSEzxE6sQYow","https://mmbiz.qpic.cn/mmbiz_jpg/YriaiaJPb26VND0Q0hSBOoyVkr9cXQrFjWI7hOzax1IxIibqanXYD4W8nyeYX5iaicjgiaqia7ly94iawOsGwehbKGwGsA/640"));DingTalkResponse  response = dingTalkRobotClient.sendFeedCardMessage(new FeedCardMessage(items));Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);response = dingTalkRobotClient.sendFeedCardMessage(items);Assert.assertEquals(response.getErrcode().longValue(), 0L);log.info(response.toString());ThreadUtil.sleep(3000);}

访问:http://127.0.0.1:8080/sendFeedCardMessage

FeedCard 消息推送

总结

通过本文的介绍,我们深入了解了如何使用Spring Boot应用集成钉钉实现消息的推送,实现了实时消息通知和提醒功能;在实际应用中,钉钉消息推送功能可以帮助企业提高内部沟通效率,及时传达重要信息和通知,提升团队协作和工作效率。

希望本文对您了解和应用钉钉消息推送功能有所帮助,如果你觉得本文对你有帮助,请点赞分享,让更多人受益!

源码获取

本文代码获取方式:
后台回复【消息推送】即可获取!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/345545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python进阶-部署Flask项目(以TensorFlow图像识别项目WSGI方式启动为例)

本文详细介绍了如何通过WSGI方式部署一个基于TensorFlow图像识别的Flask项目。首先简要介绍了Flask框架的基本概念及其特点&#xff0c;其次详细阐述了Flask项目的部署流程&#xff0c;涵盖了服务器环境配置、Flask应用的创建与测试、WSGI服务器的安装与配置等内容。本文旨在帮…

【iOS】——Runtime学习

文章目录 一、Runtime介绍二、Runtime消息传递三、实例对象、类对象、元类对象四、isa_t结构体的具体实现五、cache_t的具体实现六、class_data_bits_t的具体实现七、Runtime消息转发动态方法解析备用接收者完整消息转发 一、Runtime介绍 iOS的Runtime&#xff0c;通常称为Obj…

使用汇编和proteus实现仿真数码管显示电路

proteus介绍&#xff1a; proteus是一个十分便捷的用于电路仿真的软件&#xff0c;可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域&#xff0c;使用代码实现电路功能的仿真。 汇编语言介绍&#xff1a; 百度百科介绍如下&#xff1a; 汇编语言是培养…

【通俗易懂的Python入门基础详细教程,可分享哦!!!】

Python&#xff0c;作为一种高级编程语言&#xff0c;自其诞生以来就以其独特的魅力吸引了无数开发者。以下是对学习Python的简要介绍&#xff1a; 一、Python的起源与发展 Python由荷兰计算机科学家吉多范罗苏姆于1990年代初设计&#xff0c;其设计初衷是作为ABC语言的替代品…

计算机网络复习题

期末题库复习1 一. 单选题&#xff08;共32题&#xff0c;100分&#xff09; 1. (单选题) 在脉冲起始时刻&#xff0c;有无跳变来表示“0”和“1”&#xff0c;且在脉冲中间时刻始终发生跳变的编码是&#xff08; &#xff09;。 A.非归零码 B.曼彻斯特编码 C.归零码 D.差…

Facebook革新:数字社交的下一个阶段

在数字化时代&#xff0c;社交网络已经成为人们生活中不可或缺的一部分。作为全球最大的社交网络平台之一&#xff0c;Facebook一直在不断创新&#xff0c;引领着数字社交的发展。然而&#xff0c;随着科技的不断进步和社交需求的变化&#xff0c;Facebook正在走向一个新的阶段…

k8s和deepflow部署与测试

Ubuntu-22-LTS部署k8s和deepflow 环境详情&#xff1a; Static hostname: k8smaster.example.net Icon name: computer-vm Chassis: vm Machine ID: 22349ac6f9ba406293d0541bcba7c05d Boot ID: 605a74a509724a88940bbbb69cde77f2 Virtualization: vmware Operating System: U…

STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】

STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯&#xff08;HAL库方式&#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上&#xff0c;构建两个任务&#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…

基于Python + Flask+ Mysq实现简易留言板

使用Python Flask Mysql实现简易留言板&#xff0c;包括网友编辑留言、修改留言&#xff0c;删除留言、分页显示四大功能。 写出留言板建设过程&#xff0c;包括开发使用工具、留言板模块设计、数据库设计、页面设计、关键技术。 留言板建设过程总结 一&#xff0e;开发使用…

一文学习yolov5 实例分割:从训练到部署

一文学习yolov5 实例分割&#xff1a;从训练到部署 1.模型介绍1.1 YOLOv5结构1.2 YOLOv5 推理时间 2.构建数据集2.1 使用labelme标注数据集2.2 生成coco格式label2.3 coco格式转yolo格式 3.训练3.1 整理数据集3.2 修改配置文件3.3 执行代码进行训练 4.使用OpenCV进行c部署参考文…

燃料电池汽车践行者

前言 见《氢燃料电池技术综述》 见《燃料电池工作原理详解》 见《燃料电池发电系统详解》 见《燃料电池电动汽车详解》 见《氢燃料电池汽车行业发展》 现代汽车&#xff08;中国&#xff09; 现代汽车集团&#xff0c;自1998年成立氢燃料电池研发小组以来深耕氢燃料电池技术&am…

Python爬虫入门与登录验证自动化思路

1、pytyon爬虫 1.1、爬虫简介 Python爬虫是使用Python编写的程序&#xff0c;可以自动访问网页并提取其中的信息。爬虫可以模拟浏览器的行为&#xff0c;自动点击链接、填写表单、进行登录等操作&#xff0c;从而获取网页中的数据。 使用Python编写爬虫的好处是&#xff0c;…

IGraph使用实例——线性代数计算(blas)

1 概述 在图论中&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms&#xff09;并不直接应用于图论的计算&#xff0c;而是作为一套线性代数计算中通用的基本运算操作函数集合&#xff0c;用于进行向量和矩阵的基本运算。然而&#xff0c;这些基本运算在图论的相…

LangChain基础知识入门

LangChain的介绍和入门 1 什么是LangChain LangChain由 Harrison Chase 创建于2022年10月&#xff0c;它是围绕LLMs&#xff08;大语言模型&#xff09;建立的一个框架&#xff0c;LLMs使用机器学习算法和海量数据来分析和理解自然语言&#xff0c;GPT3.5、GPT4是LLMs最先进的代…

矩阵LU分解的应用

矩阵LU分解在机器学习和深度学习中的应用广泛&#xff0c;主要用于解决以下问题&#xff1a; 线性方程组求解&#xff1a;LU分解可以有效地解决线性方程组&#xff0c;这在训练模型时非常有用。矩阵求逆&#xff1a;在一些机器学习算法中&#xff0c;需要进行矩阵求逆操作&…

289M→259M得物包体积治理实践

一、前言 iOS应用的包体积大小是衡量得物性能的重要指标&#xff0c;过大包体积会降低用户对应用的下载意愿&#xff0c;还会增加用户的下载等待时间以及用户手机的存储空间&#xff0c;本文重点介绍在包体积治理中的新思路以及原理与实践。 二、原理介绍 Macho产物测试 我…

Autodesk 3ds Max软件下载安装;3ds Max功能强大的三维建模、渲染软件安装包获取

3ds Max&#xff0c;无论是初学者还是资深设计师&#xff0c;都能通过3ds Max在数字世界中实现自己的创意&#xff0c;打造出令人惊叹的三维作品。 在3ds Max中&#xff0c;灯光系统是至关重要的一环。它提供了光度学灯光和标准灯光两种主要类型&#xff0c;用于照亮和增强场景…

CleanMyMac2028永久破解版苹果mac电脑垃圾清理软件

CleanMyMac&#xff0c;这款苹果mac电脑垃圾清理软件简直就是我的救星啊&#xff01;以前总是被电脑上的各种垃圾文件困扰&#xff0c;不知道如何彻底清理。自从用了CleanMyMac&#xff0c;我的电脑就像重新获得了新生一样&#xff01; 它的功能强大到让我惊叹不已&#xff01;…

R语言探索与分析19-CPI的分析和研究

一、选题背景 CPI&#xff08;居民消费价格指数&#xff09;作为一个重要的宏观经济指标&#xff0c;扮演着评估通货膨胀和居民生活水平的关键角色。在湖北省这个经济活跃的地区&#xff0c;CPI的波动对于居民生活、企业经营以及政府宏观经济政策制定都具有重要的影响。因此&a…

电影制作中的版本控制:Perforce Helix Core帮助某电影短片避免灾难性文件损坏,简化艺术资产管理

Zubaida Nila是来自马来西亚的一名视觉特效师和虚拟制作研究员&#xff0c;她参加了Epic Games的一个为期六周的虚拟培训和指导项目——女性创作者计划。该计划提供了虚幻引擎工作流程的实践经验以及其他课程。Zubaida希望从中获得更多关于虚幻引擎的灯光、后期处理和特效技能方…