SpringBoot整合钉钉实现消息推送

发布时间:2024-12-08 16:53

使用钉钉消息通知设置:定制化推送,高效管理信息 #生活技巧# #职场生存技巧# #职场沟通软件#

前言

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

通过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> 12345 配置WebHook地址

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

dingtalk: robot: prefix: https://oapi.dingtalk.com/robot/send access-token: 89742c23bdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx secret: secret-enabled: true secret-token: SEC1cc02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 1234567 功能测试

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

12345678910111213141516171819

启动项目,访问: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); }

12345678910111213141516171819202122232425

访问: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); } 12345678910111213

访问: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); }

12345678910111213141516171819202122232425262728293031323334353637383940

访问: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); }

123456789101112131415161718192021222324252627282930313233343536373839

访问: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); }

12345678910111213141516171819202122232425

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

FeedCard 消息推送

总结

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

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

源码获取

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

网址:SpringBoot整合钉钉实现消息推送 https://www.yuejiaxmz.com/news/view/415619

相关内容

钉钉推出365会员,将提供个性化AI助理等权益
体验了下钉钉AI助理,真羡慕现在的“打工人”
体验了下钉钉AI助理,真羡慕现在的“打工人”...
钉钉上线AI助理市场
扒了扒钉钉 AI 助理市场,发现它真的有点卷
走在企微、飞书前面的钉钉AI助理,到底想做什么?
如何用钉钉管理项目团队
微信小程序实现订阅消息推送的实现步骤
钉钉上线AI助理市场 覆盖办公、生活娱乐等场景
钉钉 AI 助理大赛,警察叔叔得了一等奖

随便看看