钉钉告警机器人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或手机号不对
相关文章
|
机器人 异构计算
10分钟,用RAG搭建专业钉钉/飞书客服机器人
只需10分钟,快速搭建专属客服机器人,大幅提升工作效率!通过魔搭社区注册账号、绑定阿里云账号获取免费算力资源,并选择GPU模式运行教程脚本。按照食用指引操作,完成机器人部署并进行对话测试,前5位在评论区提交作业的用户将获赠魔搭社区时尚咖啡杯一个。立即点击教程脚本链接开始体验吧!
246 0
|
4月前
|
弹性计算 自然语言处理 Ubuntu
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
|
5月前
|
存储 人工智能 监控
钉钉对话机器人实现赞踩收集
本文介绍如何通过AppFlow记录钉钉AI对话卡片的用户反馈情况。首先确保已接入钉钉AI机器人,然后分三步实现:1) 修改钉钉AI消息卡片,添加点赞按钮并配置回调参数;2) 配置钉钉卡片点赞消息接收连接流,更新卡片状态;3) 设置日志收集节点,存储用户反馈数据。完成配置后,用户可在群聊中与机器人互动,并使用点踩点赞功能,反馈数据将被有效记录和分析。
409 6
钉钉对话机器人实现赞踩收集
|
8月前
|
人工智能 机器人 API
AppFlow:无代码部署Dify作为钉钉智能机器人
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将其配置到钉钉中作为智能机器人使用。首先,在钉钉开放平台创建应用,获取Client ID和Client Secret。接着,创建消息卡片模板并授予应用发送权限。然后,使用AppFlow模板创建连接流,配置Dify鉴权凭证及钉钉连接凭证,完成连接流的发布。最后,在钉钉应用中配置机器人,发布应用版本,实现与Dify应用的对话功能。
1738 7
AppFlow:无代码部署Dify作为钉钉智能机器人
|
监控 机器人 Shell
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
431 1
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
|
数据管理 机器人 BI
数据管理DMS产品使用合集之如何让报表自动更新推送到钉钉机器人
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
247 3
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
657 1
|
Java API
java提交钉钉审批的一个流程例子
java提交钉钉审批的一个流程例子
463 0
|
Serverless Go API
Serverless 应用引擎产品使用之在阿里云Serverless中,我想在钉钉机器人中使用函数计算的签名认证如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
124 0
|
4月前
|
运维 监控 网络协议
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
118 11
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡

热门文章

最新文章