钉钉通知

简介: 本文介绍如何通过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.创建钉钉机器人
创建告警群聊
就拉一个普通群聊就可以
护士站对接群普通群群成员4人设置群身份
image.png

创建机器人

群设置选择机器人
群设置消息免打扰群管理泊舟群权限相关设置群主标签普通群群类型普通群无组织归属,推荐升级为内部群等其他类型,功能更丰富,安全更有保障.机器人AI实时翻译清空聊天记录退出群聊解散该群
image.png

机器人管理小钉钉钉官方机器人,提供丰富的技能已开启的技能投票提醒日程提醒添加机器人十多款丰富的精选机器人
image.png


选择自定义机器人
极狐GITLABTRAVISJIRA极狐GITLABGITHUB基于GIT的代码托管服基于ROR的开源代码出色的项目与事务跟出色的项目与事务跟托管软件踪工具踪工具务自定义TRELLO通过WEBHOOK接入自实时的卡片墙,管理定义服务任何事情企业机器人阿里云开-阿里云开发者社区发者社区训练营训练营BOT平三勇阿里云开发者
image.png


定义机器人相关信息,重点关注关键词
取个名护士站告警小瓦力机器人名字:护士站对接群添加到群组:异常消息关键词,完全是用户自定义,只要你在发送消息中有这些关键词,就可以发送到群里安全设置自定义关键词说明文档告警这里我模拟了四个失败异常限流
image.png

保存Webhook
1.添加机器人Y2.设置WEBHOOK,点击设置说明查看如何配置以使机器人生效HTTPS://OAPI.DINGTALK.COM/ROBOT/SEND?ACCESS TOKWEBHOOK:复制*请保管好此WEBHOOK地址,不要公布在外部网站上,泄露有安全风险使用WEBHOOK 地址,向钉群推送消息非常重要,是发送必须的参数完成设置说明
image.png

2.PostMan测试发送API
基于官方提供的API,我们可以做下述测试
官方请求示例
请求示例(HTTP)

下面的token需要替换成webhook中的地址
请求正文

下面消息类型支持多种,通过msgtype声明你要哪种

at,标识群里@哪些人,如果isAtAll就标识@群里所有人,@atMobiles标识指定手机号,其余参数同理
测试@所有人
SENDPOSTAUTHORIZATIONPRE-REQUEST SCRIPTSETTINGSCOOKIESBODYHEADERS(8)TESTSPARAMSX-WWW-FORM-URLENCODEDGRAPHQLFORM-DATAJSONBEAUTIFYNONEBINARYRAW323"AT":"ISATALL":"TRUE",4"ATUSERIDS":["17600477102","USER002"],"ATMOBILES":["17600477102","18XXX"]567"MSGTYPE":"TEXT",8//文本消息9"TEXT":10"CONTENT":"测试预警消息告警通知"子1112
image.png

琦舟护士站对接群HI JX WU YAYEIT ZIT护士站告警小瓦力机器人测试预警消息告警通知@所有人
image.png

测试@指定人
HTIPS//OAPLLINGTALKCON/OBOTJSENDRACCESS.FOKENE8765208F3EOD6AACC137D1525E4D962161C301FICBACA17BC12ABE7SENDPOSTPRE-REQUEST SCRIPTSETTINGSAUTHORIZATIONBODYHEADERS(8)COOKIESTESTSPARAMSFORM-DATAJSONX-WWW-FORM-URLENCODEDBEAUTIFYGRAPHQLBINARYRAWNONE'AT":'3456780"FALSE"."ISATA11IDS":["17600477102","USER002"],"ATUSERIDS["17600477102"18XXX"]"ATMOBILES子"MSGTYPE":"TEXT",//文本消息890NNTEXT":"CONTENT":"测试预警消息告警通知"子
image.png

护士站告警小瓦力机器人09:19测试预警消息告警通知@泊舟收到回复
image.png

测试卡片消息
燕HTTSAVEHTPS/0APLDINGTAKCON/_ONOVSEND了B2T1C8AC4JOKEN-8520AF360D53E0D5AACC1370152564DSB211C8AC4FO5A170C128BE77SENDPOSTCOOKIESPARAMSHEADERS(8PRE-REQUEST SCRIPTTESTSSETTINGSBODYAUTHORIZATIONJSONBEAUTIFYFORM-DATAGRAPHQLBINARYX-WWW-FORM-URLENCODEDNONERAW"ISATALL":"FALSE","ATUSERIDS":["17600477102","USER002"],"ATMOBILES":["17600477102","18XX"]595,,"MSGTYPE":"ACTIONCARD",78"ACTIONCARD":9."TITLE":"我-20-年前想打造一向苹果咖啡厅,而它正是-APPLE-的前身",10ANIN APPLE STORE.的设计在从政采满调的科技感走向生活化,商共生消化的走向其交可以而调制,26,年商平果一个建立期呼行的吉弯计划""BTNORIENTATION":"O","O",11"BTNS":12子13"TITLE":"内容不错",14"ACTIONURL":"HTTPS://WWW.DINGTALK.COM/"15子16马17"TITLE":"不感兴趣",18,"ACTIONURL":"HTTPS://WWW.DINGTALK.COM/"1920
image.png

护士站告警小瓦力09:26机器人咨询定制定制专属钉钉专有云服务系统集成服务云化咨询星身定制工作合皮肤与欢迎雨,自宠为企业设立南全属于自己的独立数据张托打专家技术国队,为企业统一出租织有爱规划爱上战略,钉钉专家捏以面向业务晚状和发展目标的战略义晓天背景,提丹员工白尾感移动办公应用,个入口打送企业所服务器私机房,让企业数据与公有效调料,分析,规划,帮助差悦实现云奖完全限离有应用化升最告警乔布斯20年前想打造的苹果咖啡厅APPLESTORE的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到20年前苹果一个建立咖啡馆的告警计划内容不错不感兴趣
image.png

3.编写发送代码
有了上述PostMan的测试,下面的java代码编写对于我们来说就很简单了
引入pom依赖
公司内网则直接下载好:https://open-dev.dingtalk.com/sdk/download/java
编写java代码
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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();
    }
}

}
代码测试
2分钟前护士站告警小瓦力09:48机器人[告警]测试JAVA代码消息@泊舟收到回复
image.png

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

将上述代码封装成一个工具类,如:DingTalkMessageUtil

将token保存在nacos中,与代码解耦

在有异常日志、慢SQL等关键场景中调用此工具类,将消息发送到群,让开发人员及时感知并处理
5.失败原因分析

看看你发送消息中,是不是没有自己定义的关键词

看看你消息的接收方,是不是userId或手机号不对

目录
相关文章
|
2月前
|
SQL 监控 机器人
|
应用服务中间件 nginx
JavaWeb - 获取客户端真实 IP(通过反向代理 Nginx)非服务器 IP(二)
JavaWeb - 获取客户端真实 IP(通过反向代理 Nginx)非服务器 IP(二)
834 0
|
Ubuntu
【报错】解决Ubuntu环境下VsCode无法输入中文
【报错】解决Ubuntu环境下VsCode无法输入中文
948 0
|
人工智能 并行计算 openCL
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
随着 Llama2 的开源,以及通义千问、百川、智谱等国内大模型的问世,很多用户有了本地部署去尝试大模型的需求,然而硬件的需求阻碍了很多人的尝试,并不是所有人都拥有一块英伟达显卡的,所以 Llama2 问世不久,大神 Andrej Karpathy 的一个 weekend project 爆火——llama2.c。
魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署
|
6月前
|
前端开发 数据处理
芋道审批流配置流程表单超详细介绍
芋道审批流配置流程表单超详细介绍
1278 62
|
10月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
736 28
|
负载均衡 前端开发 应用服务中间件
FastDFS+Nginx+fastdfs-nginx-module集群搭建
FastDFS+Nginx+fastdfs-nginx-module集群搭建
|
Linux 虚拟化 Docker
Docker在windows安装(Win11,docker20.10.23)
Docker在windows安装(Win11,docker20.10.23)
2005 0
【面试问题】StampedLock 理解与使用
【1月更文挑战第27天】【面试问题】StampedLock 理解与使用