主题
DingTalkRobotUtils 钉钉机器人工具
cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils
发送文本消息
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
// 简单文本消息
DingTalkResponse response = DingTalkRobotUtils.sendText(webhookUrl, "这是一条测试消息");
response.check(); // 检查响应是否成功
// @所有人
DingTalkRobotUtils.sendText(webhookUrl, "紧急通知!", true);
// @指定人
Set<String> atMobiles = new HashSet<>();
atMobiles.add("13800138000");
atMobiles.add("13900139000");
DingTalkRobotUtils.sendText(webhookUrl, "@13800138000 请处理", false, atMobiles);发送Markdown消息
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
// Markdown消息
String markdown = "## 系统告警\n" +
"**时间**:" + DateUtils.getCurrentDatetime() + "\n" +
"**级别**:严重\n" +
"**内容**:数据库连接超时\n" +
"[查看详情](https://monitor.example.com)";
DingTalkRobotUtils.sendMarkdown(webhookUrl, "系统告警通知", markdown);
// Markdown @所有人
DingTalkRobotUtils.sendMarkdown(webhookUrl, "告警", "**紧急通知**", true);
// Markdown @指定人
Set<String> atMobiles = Set.of("13800138000");
String mdWithAt = "**告警** @13800138000 请立即处理!";
DingTalkRobotUtils.sendMarkdown(webhookUrl, "告警通知", mdWithAt, false, atMobiles);发送链接消息
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
// 链接消息
DingTalkRobotUtils.sendLink(
webhookUrl,
"项目进度更新", // 标题
"项目A已完成80%,点击查看详细进度", // 内容
"https://project.example.com/detail?id=123" // 跳转链接
);
// 带图片的链接消息
DingTalkRobotUtils.sendLink(
webhookUrl,
"新功能发布",
"v2.0版本已发布,包含10项新功能",
"https://app.example.com/release/v2.0",
"https://cdn.example.com/images/v2.0.png" // 图片URL
);发送ActionCard消息
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
import java.util.List;
import java.util.ArrayList;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
// 整体跳转ActionCard
DingTalkRobotUtils.sendActionCard(
webhookUrl,
"审批通知", // 标题
"您有一条待审批的请假申请\n申请人:张三\n时间:2024-01-15", // 内容
"查看详情", // 按钮标题
"https://approval.example.com/detail?id=123" // 跳转链接
);
// 独立跳转ActionCard(多个按钮)
List<DingTalkRequestActionCard.ActionCard.Btn> btns = new ArrayList<>();
DingTalkRequestActionCard.ActionCard.Btn btn1 = new DingTalkRequestActionCard.ActionCard.Btn();
btn1.setTitle("同意");
btn1.setActionURL("https://approval.example.com/approve?id=123&result=agree");
DingTalkRequestActionCard.ActionCard.Btn btn2 = new DingTalkRequestActionCard.ActionCard.Btn();
btn2.setTitle("拒绝");
btn2.setActionURL("https://approval.example.com/approve?id=123&result=reject");
btns.add(btn1);
btns.add(btn2);
DingTalkRobotUtils.sendActionCard(
webhookUrl,
"请假审批",
"张三申请请假1天",
btns,
"0" // 0-竖直排列,1-横向排列
);发送FeedCard消息
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
import java.util.List;
import java.util.ArrayList;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
// 构建FeedCard链接列表
List<DingTalkRequestFeedCard.Link> links = new ArrayList<>();
DingTalkRequestFeedCard.Link link1 = new DingTalkRequestFeedCard.Link();
link1.setTitle("新闻1");
link1.setText("这是新闻1的摘要");
link1.setMessageURL("https://news.example.com/1");
link1.setPicURL("https://cdn.example.com/news1.png");
DingTalkRequestFeedCard.Link link2 = new DingTalkRequestFeedCard.Link();
link2.setTitle("新闻2");
link2.setText("这是新闻2的摘要");
link2.setMessageURL("https://news.example.com/2");
link2.setPicURL("https://cdn.example.com/news2.png");
links.add(link1);
links.add(link2);
DingTalkRobotUtils.sendFeedCard(webhookUrl, links);使用加签安全设置
java
import cn.com.digitalhainan.tools.dingtalk.DingTalkRobotUtils;
String webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=xxx";
String secret = "SECxxx"; // 加签密钥
// 构建加签URL
String signUrl = DingTalkRobotUtils.buildSignUrl(webhookUrl, secret);
// 使用加签URL发送消息
DingTalkRobotUtils.sendText(signUrl, "加签消息测试");