前言
钉钉作为一款企业级通讯工具,具有广泛的应用场景,包括但不限于团队协作、任务提醒、工作汇报等。
通过Spring Boot应用程序整合钉钉实现消息推送,我们可以实现以下功能:
- 实时向指定用户或群组发送消息通知。
- 自定义消息内容和格式,满足不同业务需求。
- 监控和提醒功能的实现,提高工作效率和沟通效果。
在接下来的部分,我们将逐步介绍如何在Spring Boot中配置和调用钉钉消息推送API,以实现消息推送功能。
钉钉群安装机器人
电脑端登录钉钉,选择一个群聊进行如下的操作:
注:复制生成的签名串,后续将会用到!
复制出来的结果如下:
SEC1cc02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
勾选协议,点击完成即可!
接下来节将会出现如下配置:
注:复制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/send
access-token: 89742c23bdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secret:
secret-enabled: true
secret-token: SEC1cc02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
功能测试
@RestController@RequestMapping@Slf4jpublicclassDingTalkController{@AutowiredprivateDingTalkRobotClient dingTalkRobotClient;/**
* 测试发送文本消息
*/@GetMapping("/sendMsg")publicvoidsendMessage(){DingTalkResponse response = dingTalkRobotClient.sendMessage(newTextMessage("公众号:小小开发者!"));Assert.assertEquals(response.getErrcode().longValue(),0L);
log.info(response.toString());}}
启动项目,访问:
http://127.0.0.1:8080/sendMsg
即可发送!
其他相关测试
普通文本通知
/**
* 普通文本通知
*/@GetMapping("/sendTextMessage")publicvoidsendTextMessage(){DingTalkResponse response = dingTalkRobotClient.sendTextMessage(newTextMessage("业务处理异常:构建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("业务处理异常:通知指定人!",newString[]{"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")publicvoidsendLinkMessage(){DingTalkResponse response = dingTalkRobotClient.sendLinkMessage(newLinkMessage("业务处理异常: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文本推送
privatestaticfinalString markDownDemoText ="业务报警:标题"+"# 一级标题\n"+"## 二级标题\n"+"### 三级标题\n"+"#### 四级标题\n"+"##### 五级标题\n"+"###### 六级标题\n";/**
* markdown文本推送
*/@GetMapping("/sendMarkdownMessage")publicvoidsendMarkdownMessage(){// 构建 markdown 对象用法DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(newMarkdownMessage("业务处理异常:钉钉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,newString[]{"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
ActionCard 业务推送
/**
* ActionCard业务推送
*/@GetMapping("/sendActionCardMessage")publicvoidsendActionCardMessage(){DingTalkResponse response = dingTalkRobotClient.sendActionCardMessage(newActionCardMessage("业务报警: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
FeedCard 消息推送
/**
* FeedCard 消息推送
* @throws InterruptedException
*/@GetMapping("/sendFeedCardMessage")publicvoidsendFeedCardMessage(){ArrayList<FeedCardMessageItem> items =newArrayList<>();
items.add(newFeedCardMessageItem("业务处理异常:成为架构师的路上,看这一篇文章就足够了,因为……","http://mp.weixin.qq.com/s/CPUaB60pue0Zf3fUL9xqvw","https://mmbiz.qpic.cn/mmbiz_jpg/YriaiaJPb26VMtfgPvTsM9amH5hf3pmTbf40ia6OLE845icrDb0vt4AsMnTyva5mMMpwwxnkVR5UjCEI8ADvSic1qWQ/640"));
items.add(newFeedCardMessageItem("业务处理异常:想成为一名Web开发者?你应该学习Node.js而不是PHP","http://mp.weixin.qq.com/s/x8dm9e7gwLXSEzxE6sQYow","https://mmbiz.qpic.cn/mmbiz_jpg/YriaiaJPb26VND0Q0hSBOoyVkr9cXQrFjWI7hOzax1IxIibqanXYD4W8nyeYX5iaicjgiaqia7ly94iawOsGwehbKGwGsA/640"));DingTalkResponse response = dingTalkRobotClient.sendFeedCardMessage(newFeedCardMessage(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
总结
通过本文的介绍,我们深入了解了如何使用Spring Boot应用集成钉钉实现消息的推送,实现了实时消息通知和提醒功能;在实际应用中,钉钉消息推送功能可以帮助企业提高内部沟通效率,及时传达重要信息和通知,提升团队协作和工作效率。
希望本文对您了解和应用钉钉消息推送功能有所帮助,如果你觉得本文对你有帮助,请点赞分享,让更多人受益!
源码获取
本文代码获取方式:
后台回复【消息推送】即可获取!
版权归原作者 小小Java开发者 所有, 如有侵权,请联系我们删除。