Spring Boot集成钉钉群通知机器人

文章目录

一、钉钉机器人配置

1)添加机器人

2)添加自定义机器人

3)设置机器人参数

4)添加机器人完成

注意:完成后,复制出链接,方便后续测试使用;

Webhook链接组成 = https:// + baseUrl + access_token;

例如:https://oapi.dingtalk.com/robot/send?access_token=82995******45d84

二、依赖导入

xml 复制代码
<!--dingding-sdk-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibaba-dingtalk-service-sdk</artifactId>
    <version>2.0.0</version>
</dependency>

三、工具类封装

java 复制代码
@Slf4j
public class DingDingUtils {

    public static void send(String url, String msg) {
        try {
            //创建钉钉客户端
            DingTalkClient client = new DefaultDingTalkClient(url);
            //构建自定义机器人请求
            OapiRobotSendRequest request = new OapiRobotSendRequest();
            //设置固定为文字版信息类型
            request.setMsgtype("text");
            //构建自定义机器人文字类型请求
            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
            //调用封装文本信息。
            text.setContent(msg);
            request.setText(text);
            //构建自定义机器人@人范围请求
            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
            //明确为 true。通知时@所有人
            at.setIsAtAll(true);
            request.setAt(at);
            OapiRobotSendResponse response = client.execute(request);
            log.info("发送完成,返回值:{}", response.getBody());
        } catch (ApiException e) {
            log.error("钉钉接口调用异常:", e);
        }
    }

}

四、关键字推送消息测试类

1)测试类

java 复制代码
@Test
void sendTextTest() {
    // 钉钉群机器人id号
    String url = "https://oapi.dingtalk.com/robot/send?access_token=8299504a4255a****************ae4aae697441995f45d84";
    // hello,为关键字
    String msg = "hello, 大家好";
    DingDingUtils.send(url, msg);
}

2)程序输出结果:

3)通知结果:

五、加签推送消息测试类

1)修改机器人配置为加签

2)测试类

java 复制代码
@Test
void sendTextTest2() throws Exception {
    Long timestamp = System.currentTimeMillis();
    String secret = "SECb2f83dd75fdc0b2***********c50f33ebd36102327e44a8";

    String stringToSign = timestamp + "\n" + secret;
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
    byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
    String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
    System.out.println(sign);


    // 钉钉群机器人id号
    String baseUrl = "https://oapi.dingtalk.com/robot/send?access_token=8299504a4255a****************ae4aae697441995f45d84";
    String msg = "这是一条加签测试的消息!";

    String fullUrl = 
        String.format(baseUrl + "&timestamp=%s&sign=%s", timestamp, sign);
    DingDingUtils.send(fullUrl, msg);
}

3)程序输出结果

4)通知结果

相关推荐
唐青枫4 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马5 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261355 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261355 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户35218024547521 小时前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
昵称为空C1 天前
手撸一个动态 SQL 执行引擎:不重启服务,在线增删改查任意数据库
spring boot·后端
东坡白菜1 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev1 天前
null 判断 → Kotlin 可空类型
android·java·kotlin