钉钉通知

简介: 本文介绍如何通过Java代码调用钉钉机器人API,实现系统告警消息的实时推送。涵盖机器人创建、PostMan测试、Java代码编写及实际应用优化,如封装工具类、配置解耦等,并提供常见失败原因分析,助力高效集成钉钉告警通知。

本文讲实现Java代码调用钉钉机器人API,发送指定告警消息的效果,以满足用户对于系统的实时监控。

API:https://open.dingtalk.com/document/orgapp/custom-robots-send-group-messages

每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。

重要

如果有大量发消息的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群

1.创建钉钉机器人

创建告警群聊

就拉一个普通群聊就可以

创建机器人

  • 群设置选择机器人


  • 选择自定义机器人

  • 定义机器人相关信息,重点关注关键词

保存Webhook

2.PostMan测试发送API

基于官方提供的API,我们可以做下述测试

官方请求示例

请求示例(HTTP)

  • 下面的token需要替换成webhook中的地址
POST https://oapi.dingtalk.com/robot/send?access_token=ACCESS_TOKEN

请求正文

  • 下面消息类型支持多种,通过msgtype声明你要哪种
  • at,标识群里@哪些人,如果isAtAll就标识@群里所有人,@atMobiles标识指定手机号,其余参数同理
{
  "at":{
    "isAtAll":"false",
    "atUserIds":["user001","user002"],
    "atMobiles":["15xxx","18xxx"]
  },
    //链接消息
  "link":{
    "messageUrl":"1",
    "picUrl":"1",
    "text":"1",
    "title":"1"
  },
    //markdown消息
  "markdown":{
    "text":"1",
    "title":"1"
  },
    //feedCard消息
  "feedCard":{
    "links":{
      "picURL":"1",
      "messageURL":"1",
      "title":"1"
    }
  },
    //文本消息
  "text":{
    "content":"123"
  },
  "msgtype":"text",
    //actionCard消息
  "actionCard":{
    "hideAvatar":"1",
    "btnOrientation":"1",
    "singleTitle":"1",
    "btns":[{
      "actionURL":"1",
      "title":"1"
    }],
    "text":"1",
    "singleURL":"1",
    "title":"1"
  }
}

测试@所有人

测试@指定人

测试卡片消息

3.编写发送代码

有了上述PostMan的测试,下面的java代码编写对于我们来说就很简单了

引入pom依赖

公司内网则直接下载好:https://open-dev.dingtalk.com/sdk/download/java

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibaba-dingtalk-service-sdk</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>dingtalk</artifactId>
    <version>2.0.18</version>
</dependency>

编写java代码

import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.taobao.api.ApiException;
import java.util.Arrays;
public class DingTalk {
    public static void main(String[] args) {
        try {
            // 1-初始化API调用Client
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=87b520af3e0b6aacc137d1525e4d9b21f61c901f1c8ac4f05a17bc12a8e7f737");
            // 2-初始化请求参数
            OapiRobotSendRequest req = new OapiRobotSendRequest();
            // 2-1 设置消息类型
            req.setMsgtype("text");
            // 2-2 设置消息@人
            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
            at.setAtMobiles(Arrays.asList("17600477102"));
            req.setAt(at);
            // 2-3 设置消息内容(必须匹配关键词),工作中这里就对应error日志
            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
            text.setContent("[告警]测试java代码消息");
            req.setText(text);
            // 3 消息发送
            OapiRobotSendResponse rsp = client.execute(req, "");
            System.out.println(rsp.getBody());
        } catch (ApiException e) {
            e.printStackTrace();
        }
    }
}

代码测试

4.工作中到底怎么用

上面我们完成了简单的告警通知,实际工作中也是这么来做,但是会做一点点优化

  • 将上述代码封装成一个工具类,如:DingTalkMessageUtil
  • 将token保存在nacos中,与代码解耦
  • 在有异常日志、慢SQL等关键场景中调用此工具类,将消息发送到群,让开发人员及时感知并处理

5.失败原因分析

  • 看看你发送消息中,是不是没有自己定义的关键词
  • 看看你消息的接收方,是不是userId或手机号不对
相关文章
|
消息中间件 存储 Kafka
RabbitMQ、RocketMQ和Kafka全面对决,谁是最佳选择?
1、应用场景 1.RabbitMQ: 适用于易用性和灵活性要求较高的场景 异步任务处理:RabbitMQ提供可靠的消息传递机制,适用于处理异步任务,例如将耗时的任务放入消息队列中,然后由消费者异步处理,提高系统的响应速度和可伸缩性。 解耦系统组件:通过使用RabbitMQ作为消息中间件,不同的系统组件可以通过消息进行解耦,实现松耦合的架构,提高系统的可维护性和灵活性。 事件驱动架构:RabbitMQ的发布-订阅模式可以用于构建事件驱动架构,将系统中的事件作为消息发布到相应的主题,不同的消费者可以订阅感兴趣的主题进行相应的处理。
1826 2
|
24天前
|
SQL 分布式计算 运维
XXLJOB:超长定时任务慢节点优化实践
本文针对ODPS大宽表任务运行慢的问题,通过定位耗时卡点、解决数据倾斜与计算堆积,提出视图落表、节点拆分、前置裁剪、中表关联等优化方案,显著提升任务效率,产出时间提前4小时以上,并降低回刷成本与资源消耗。
Java实现多文件打包成压缩包下载
Java实现多文件打包成压缩包下载
922 0
|
4月前
|
机器学习/深度学习 数据采集 算法
【人脸识别】基于PCA的人脸识别系统(Matlab代码实现)
【人脸识别】基于PCA的人脸识别系统(Matlab代码实现)
391 6
|
10月前
|
机器学习/深度学习 人工智能 DataWorks
《AI牵手DataWorks,实时数据分析“一路狂飙”》
在大数据时代,数据是企业的生命线,实时数据分析能力至关重要。阿里巴巴的DataWorks作为强大的数据中台工具,结合人工智能(AI)技术,彻底改写了实时数据分析格局。传统方法面临数据量增长、复杂结构及缺乏自适应能力等挑战,而AI通过机器学习和深度学习算法,实现了智能预警、个性化推荐和实时风险评估等应用场景,显著提升了数据分析的速度和精度。成功案例显示,某互联网公司引入AI赋能的DataWorks后,用户活跃度提升30%,购买转化率提高20%。未来,AI与新兴技术的融合将进一步推动实时数据分析的发展。
478 6
|
Linux 开发者
【阿里云镜像】配置阿里巴巴开源镜像站镜像——Epel镜像
【阿里云镜像】配置阿里巴巴开源镜像站镜像——Epel镜像
2719 0
|
小程序
微信小程序也可以实现定位打卡/签到打卡了(附源码)
本篇文章带你实现实时定位功能:包括实时定位监听、定位权限判断、经纬度间距计算、判断当前位置是否在目的地的范围区间。
4581 2
|
监控 安全 机器人
SpringBoot 实现自定义钉钉机器人
SpringBoot 实现自定义钉钉机器人
|
大数据
如何搭建自己的ip池
如何搭建自己的ip池
1047 0
|
缓存 分布式计算 Java
Hbase快速入门(安装部署)
Hbase快速入门(安装部署)
381 0

热门文章

最新文章