Skip to content

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, "加签消息测试");

Power By 数字海南