钉钉告警机器人Java接入指南

简介: 本文讲实现Java代码调用钉钉机器人API,发送指定告警消息的效果,以满足用户对于系统的实时监控。API:https://open.dingtalk.com/document/orgapp/custom-robots-send-group-messages每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。重要如果有大量发消息的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群

本文讲实现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=8****7");


           // 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或手机号不对
相关文章
|
3月前
|
安全 机器人 API
简单几步,钉钉机器人秒变通义千问对话机器人
通过阿里云计算巢AppFlow平台,无需编码,只需简单几步,即可将钉钉机器人转化为通义千问对话机器人。首先在灵积模型服务平台获取API Key,然后在AppFlow中配置连接器,授权并保存Webhook Url。在钉钉中创建自定义机器人,选择Outgoing功能,填写签名和Webhook地址。最后,@机器人即可开始对话。此外,还提供了通过钉钉开放平台创建机器人的步骤。AppFlow简化了集成过程,加速了企业自动化服务流程。
|
3月前
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
69 1
|
3月前
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
84 1
|
12天前
|
JSON 机器人 Go
go接收alertmanager告警并发送钉钉
go接收alertmanager告警并发送钉钉
|
12天前
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
|
2月前
|
数据管理 机器人 BI
数据管理DMS产品使用合集之如何让报表自动更新推送到钉钉机器人
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
56 3
|
2月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
100 1
|
2月前
|
JSON 分布式计算 DataWorks
DataWorks产品使用合集之能否支持从结果表取出示警信息并且打通钉钉进行告警
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
Java API
java提交钉钉审批的一个流程例子
java提交钉钉审批的一个流程例子
118 0
|
3月前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
47 0

热门文章

最新文章