钉钉告警机器人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或手机号不对
相关文章
|
4天前
|
安全 机器人 API
简单几步,钉钉机器人秒变通义千问对话机器人
通过阿里云计算巢AppFlow平台,无需编码,只需简单几步,即可将钉钉机器人转化为通义千问对话机器人。首先在灵积模型服务平台获取API Key,然后在AppFlow中配置连接器,授权并保存Webhook Url。在钉钉中创建自定义机器人,选择Outgoing功能,填写签名和Webhook地址。最后,@机器人即可开始对话。此外,还提供了通过钉钉开放平台创建机器人的步骤。AppFlow简化了集成过程,加速了企业自动化服务流程。
|
4天前
|
Java API
java提交钉钉审批的一个流程例子
java提交钉钉审批的一个流程例子
|
4天前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
11 0
|
4天前
|
Serverless Go API
Serverless 应用引擎产品使用之在阿里云Serverless中,我想在钉钉机器人中使用函数计算的签名认证如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
21 0
|
4天前
|
监控 安全 机器人
SpringBoot 实现自定义钉钉机器人
SpringBoot 实现自定义钉钉机器人
|
4天前
|
数据采集 DataWorks 监控
DataWorks常见问题之监控规则是数据质量配置好钉钉机器人不报警如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
35 5
|
4天前
|
SQL DataWorks 机器人
DataWorks常见问题之导致钉钉群的机器人发报警消息如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
53 7
|
4天前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
49 3
|
7月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.