钉钉通知

简介: 本文介绍如何通过Java调用钉钉机器人API实现系统告警消息发送。涵盖机器人创建、Webhook配置、PostMan测试及Java代码实现,并提供封装建议与常见失败原因分析,助力高效构建实时监控通知机制。(238字)

本文讲实现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


com.aliyun
alibaba-dingtalk-service-sdk
2.0.0


com.aliyun
dingtalk
2.0.18

编写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或手机号不对

相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
631 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
348 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
358 155

热门文章

最新文章