当前位置: 首页 > news >正文

钉钉群自定义机器人消息推送spring boot starter封装组件

2026-02-28

官方又放开了这个自定义机器人了~~~

官方政策调整


此后,新群不支持此种方式了,这个封装组件只对以上满足需求的机器人有效了。

20230821更新

版本更新:3.0.2,此版本新增yml方式配置分组机器人

20221213更新

版本更新:3.0.1,此版本适配 spring boot 3.x,也可在spring boot 2.x使用

1 介绍

根据官方文档:https://open.dingtalk.com/document/group/custom-robot-access

封装了一个spring boot starter:https://github.com/kangaroo1122/dingtalk-spring-boot-starter

目前已上传至maven中央仓库,当前最新版为:3.0.1

或查看这个地址找到最新版本:https://search.maven.org/artifact/com.kangaroohy/dingtalk-spring-boot-starter

<dependency><groupId>com.kangaroohy</groupId><artifactId>dingtalk-spring-boot-starter</artifactId><version>3.0.1</version></dependency>

当前自定义机器人支持以下消息类型:

  • 文本 (text)
  • 链接 (link)
  • markdown(markdown)
  • ActionCard
  • FeedCard

具体参见前文提到的官方文档,组件支持以上所有类型的消息发送

2 使用

由于官方限制,每个机器人只能发送20条/分钟的消息,所以这里支持配置多个机器人来轮询或者随机指定机器人发送消息

2.1 默认机器人配置

无论单机器人还是多机器人,都必须配置一个默认机器人

kangaroohy:ding-talk:access-token:d4a24b6ea884d5d3ec245fb95e9cdbc3630secret:SEC8cc743fc2286f5209f1162d72131f47515843fc0cea661152bd

2.2 单机器人使用

直接注入IDingTalkSender类,调用相关的方法即可

@AutowiredprivateIDingTalkSendertalkSender;//text类型talkSender.send(TextArgs.builder().content("自定义封装测试").atMobiles(Lists.newArrayList("133xxxx7608")).build());//markdown类型talkSender.send(MarkdownArgs.builder().title("markdown测试").text("### andon通知\n - 工位: station\n - 故障: content").build());//link类型talkSender.send(LinkArgs.builder().title("link").text("这是一条link消息").picUrl("https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9977602461/p352641.png").messageUrl("https://open.dingtalk.com/document/group/robot-overview").pcSlide(true).build());//整体跳转ActionCard类型talkSender.send(ActionCardWholeArgs.builder().singleTitle("测试").text("消息内容").title("ActionCard").singleUrl("https://open.dingtalk.com/document/group/robot-overview").build());//独立跳转ActionCard类型talkSender.send(ActionCardAloneArgs.builder().btnOrientation(BtnOrientation.VERTICAL).btns(Lists.newArrayList(CardButtonArgs.builder().title("测试1").actionUrl("https://open.dingtalk.com").pcSlide(true).build(),CardButtonArgs.builder().title("测试2").actionUrl("https://open.dingtalk.com").pcSlide(true).build(),CardButtonArgs.builder().title("测试2").actionUrl("https://open.dingtalk.com").pcSlide(true).build())).title("消息标题").text("消息内容").build());//FeedCard类型talkSender.send(FeedCardArgs.builder().links(Lists.newArrayList(CardLinksArgs.builder().title("测试1").messageUrl("https://open.dingtalk.com").pcSlide(true).picUrl("https://img.alicdn.com/imgextra/i4/O1CN01oWsqXJ1VSf8Bj1DVs_!!6000000002652-2-tps-588-200.png").build(),CardLinksArgs.builder().title("测试2").messageUrl("https://open.dingtalk.com").pcSlide(true).picUrl("https://img.alicdn.com/imgextra/i4/O1CN01oWsqXJ1VSf8Bj1DVs_!!6000000002652-2-tps-588-200.png").build(),CardLinksArgs.builder().title("测试3").messageUrl("https://open.dingtalk.com").pcSlide(true).picUrl("https://img.alicdn.com/imgextra/i4/O1CN01oWsqXJ1VSf8Bj1DVs_!!6000000002652-2-tps-588-200.png").build())).build());

2.3 多机器人动态配置,如 数据库查询

3.0.2 版本开始支持 yml 配置分组机器人,查看 2.4 节

多机器人使用时,需配置对应的机器人群组信息

这里采用ApplicationRunner,项目启动完成,查询数据库并将机器人信息添加到配置

算法部分参考了项目:https://github.com/AnswerAIL/dingtalk-spring-boot-starter

@ComponentpublicclassRobotConfigimplementsApplicationRunner{@AutowiredprivateIMultipleRobotmultipleRobot;//这里可以注入数据库查询service进行查询配置@Overridepublicvoidrun(ApplicationArgumentsargs)throwsException{multipleRobot.addGroupRobot(GroupArgs.builder().groupId("111").dingTalkArgs(Lists.newArrayList(DingTalkArgs.builder().accessToken("d4a24b6ea8849ee30bb65638fc6e880d3ec245fb95e9cdbc3630").secret("SEC8cc743fc2286f5209f11623a0bff18d131f47515843fc0cea661152bd").build(),DingTalkArgs.builder().accessToken("421b36a2e9e3103ea41efef6458982526ca46f87f389753cdf5df").secret("SEC3f1ed3e72a0582c40d27ab3a85cd3b8bd0710bd04be3de3fe0a2d6d").build(),DingTalkArgs.builder().accessToken("15a2dba92b815a2fac9231622c8ae0c3d8e9d7cfe3ce5e2ee1549").secret("SEC475ecf41acaa4f1dabe7d32f06e20d2e277307d967c05d4d50e52d69").build()))//轮询算法处理消息发送,内置了四种算法,可自定义算法.algorithmHandler(newRoundRobinHandler()).build());}}

调用与单机器人一样,注入IDingTalkSender,发送消息时指定群组ID即可

@AutowiredprivateIDingTalkSendertalkSender;talkSender.send(TextArgs.builder().content("群组机器人测试1").build(),"111");talkSender.send(TextArgs.builder().content("群组机器人测试2").build(),"111");talkSender.send(TextArgs.builder().content("群组机器人测试3").build(),"111");talkSender.send(TextArgs.builder().content("群组机器人测试4").build(),"111");

2.4 多机器人yml配置

自3.0.2版本开始,支持 yml 种配置分组机器人,如下:

kangaroohy:ding-talk:access-token:d9b913ef5d9af4687f0dc764684ade17b504547e930ee5976ffd578secret:SEC650d8da822e681b0e8c5a3da71658a82e2f8c83e82f1378e66414groups:group1:# 分组名algorithm-handler:com.kangaroohy.dingtalk.multiple.algorithm.RoundRobinHandler# 发送算法,这里轮询,可自己实现相关算法robots:-access-token:d8074a31ae7cf539cdf204e1420e9653e63d8d7299d2286d93cee5secret:SECa93355b1e75f63b1159be3e66f6caf964430d104c6e77831da0618-access-token:28f7ca656c91a010a7c52cd12a352541822dd8e4353cef1ac8aa53secret:SECa771faa5e9dde4bc884a596f6f39d42f341ef35513051ad305a67d330group2:algorithm-handler:com.kangaroohy.dingtalk.multiple.algorithm.DingTalkHandlerrobots:-access-token:d8074a31ae7cf539cdfd52e1420e9653e63d8d7299d2286d93cee5secret:SECa93355b1e75f63b1159be3e6c70d504474430d104c6e77831da0618-access-token:28f7ca656c91a010a78d109f2cd12a352541822dd8e4353cef1ac8aa53secret:SECa771faa5e9dde4bc884a596f39d42f341ef35513051ad305a67d330
http://www.cnnetsun.cn/news/1671419.html

相关文章:

  • IDEA 环境下基于 Git 的代码上传操作及误操作后回滚清除记录处理指南
  • 踩坑生产后整理:KingbaseES表空间管理、auto_createtblspcdir参数深度解析与运维最佳实践
  • 提升esp32开发效率,快马平台智能生成模块化代码框架减少重复劳动
  • 嵌入式RC脉冲解码与通道状态诊断库
  • 从“只会聊天“到“全能员工“:2026年你需要了解的AI黑话(收藏版:小白程序员必备)
  • 绿联 安装SeaTable在线协同表格
  • 如何在UniApp中集成GraphQL:现代API开发的完整指南
  • Express-Mongoose-ES6-REST-API调试技巧:Debug模块高级用法
  • 2026高风控场景下指纹浏览器合规运营实践
  • Vue-weixin 实时聊天功能详解:Socket.IO + Vuex 状态管理最佳实践 [特殊字符]
  • Phi-4-mini-reasoning企业部署:通过Nginx实现负载均衡的多实例集群方案
  • 悬臂梁变形分析研究附Python代码
  • SharpSCADA部署与运维:生产环境搭建与故障排除完整清单
  • NodeGit终极演进指南:从社区驱动到企业级应用的完整路线图
  • 效率革命:用快马生成一键脚本,分钟级初始化你的wsl2全能开发环境
  • Anthropic一夜震撼升级:Claude获得「永久在线」,全球打工人变天
  • 一张好图,不该被抠图的难度挡住。轻松抠图,让创意自由流动
  • 解锁八大网盘下载自由:LinkSwift直链助手完全指南
  • Go OAuth2与数据库集成终极指南:安全存储认证信息的完整教程
  • 基于Qt与Windows HID输入重定向的实时按键映射引擎:QKeyMapper技术深度解析
  • Zotero PDF Preview:在文献库中无缝预览PDF的终极指南
  • 终极Slick轮播插件实战指南:告别传统轮播的痛苦
  • React Native环境变量终极指南:简单高效的配置方案
  • NVIDIA Profile Inspector医疗行业应用:10个提升医学成像性能的终极技巧
  • 新手福音:用快马AI零代码基础完成你的第一个数据库课程设计
  • 终极解决方案:如何用WindowResizer强制调整任意窗口尺寸?[特殊字符]
  • OpenClaw邮件安全:SecGPT-14B自动分析可疑附件与链接
  • 3 原创:华为破局(架构师级)- HDF驱动框架与硬件抽象层的底层通信原理
  • 多模态情报分析awesome-osint:文本图像视频融合处理终极指南
  • awesome-rust数据备份恢复:灾难恢复与业务连续性