钉钉通知

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文介绍如何通过Java代码调用钉钉机器人API,实现系统告警消息的实时发送。涵盖机器人创建、Webhook配置、Postman测试及Java代码实现,并提供限流提示与常见失败原因分析,助力高效集成钉钉通知。

本文讲实现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=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或手机号不对
相关文章
|
消息中间件 Kafka 程序员
kafka的Docker镜像使用说明(wurstmeister/kafka)
wurstmeister/kafka是镜像市场上很受欢迎的一个kafka镜像,今天来聊聊它的多种用法
7198 0
kafka的Docker镜像使用说明(wurstmeister/kafka)
|
6月前
|
人工智能 自然语言处理 运维
2025揭秘:7大Agent赛道,哪些值得企业重点布局?
在AI深度融入的今天,Agent已从概念走向广泛应用。具备自主决策、任务拆解与工具协同能力的智能体,正重塑工作与生活。2025年全球85%组织已部署Agent,市场规模达73.8亿美元。本文盘点企业通用、客服、医疗、工业、个人助理、教育科研及金融七大类Agent,解析其如何成为数字化转型核心引擎,释放人类创造力。
1892 1
|
3月前
|
人工智能 Linux API
OpenClaw 阿里云/本地部署无人值守社媒内容流水线实战:+Skills全自动生成公众号+小红书草稿教程
在日常公众号、小红书内容运营中,大量时间消耗在素材搜集、选题整理、初稿撰写、格式排版等重复工作上。借助OpenClaw(Clawdbot)的Skill体系与任务调度能力,可搭建一套无人值守、每日自动运行的社媒内容流水线:AI自动抓取灵感、生成选题、撰写公众号长文草稿、输出小红书图文笔记,并按日期归档保存,人工仅需最后润色即可发布。本文基于2026年最新环境,完整提供阿里云服务器、本地MacOS/Linux/Windows11部署流程、阿里云百炼通义千问API配置、免费大模型Coding Plan对接、四大核心Skill开发、Python脚本保存草稿、定时任务设置及高频问题一站式解答,所有代码可
553 2
|
3月前
|
人工智能 Serverless Go
打通智能体孤岛:用 AgentRun 构建生产级 A2A 多 Agent 管理协作系统
本文详解A2A(Agent-to-Agent)协议原理及AgentRun的生产级落地实践:通过AgentCard实现智能体自描述,服务发现动态感知可用Agent,结合JSON-RPC 2.0与Task模型完成可靠通信;AgentRun在此基础上构建工作空间、多环境发现端点、权限管控等完整管理体系,并以「希希咖啡厅」为例,演示Go SDK全链路调用流程。
|
5月前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
1366 9
n8n:流程自动化、智能化利器
|
5月前
|
存储 安全 文件存储
2026阿里云文件存储NAS详解:收费价格、功能优势、使用及问题解答FAQ
阿里云文件存储NAS是一款面向ECS、容器、HPC等场景的分布式文件系统,支持POSIX接口,具备弹性扩展、高可靠共享、多协议兼容等特性。提供通用型与极速型两类存储,适配热、冷数据及低时延业务需求,结合按量付费与资源包模式,实现成本优化。广泛应用于容器集群、企业办公、AI计算、媒体处理等场景,支持跨区域共享与全链路安全防护,是企业数字化转型的理想存储方案。
|
人工智能 自然语言处理 数据可视化
89.4K star!这个开源LLM应用开发平台,让你轻松构建AI工作流!
Dify 是一款开源的 LLM 应用开发平台,通过直观的可视化界面整合 AI 工作流、RAG 管道、智能代理等功能,助你快速实现从原型到生产的跨越。支持本地部署和云端服务,提供企业级功能与完整 API 接口。
941 4
|
11月前
|
机器学习/深度学习 人工智能 程序员
MiniMind:3小时训练26MB微型语言模型,开源项目助力AI初学者快速入门
在大型语言模型(LLaMA、GPT等)日益流行的今天,一个名为MiniMind的开源项目正在AI学习圈内引起广泛关注。项目让初学者能够在3小时内从零开始训练出一个仅26.88MB大小的微型语言模型。
783 1
什么是 NAT?
NAT 是网络地址转换。这是一种协议,为公共网络上的多台计算机提供一种方式来共享到 Internet 的单一连接。
|
存储 人工智能 自然语言处理
基于LLamaIndex构建企业级私有知识库:RAG Workflow工作流详解
【11月更文挑战第12天】随着生成式AI的快速发展,企业对智能化信息检索和生成的需求日益增加。传统的知识库系统往往局限于静态的数据存储和查询,难以满足复杂多变的业务需求。而检索增强生成(RAG, Retrieval-Augmented Generation)技术的出现,为企业级私有知识库的建设提供了新的解决方案。LLamaIndex作为专为LLMs(大型语言模型)设计的私有知识索引工具,结合RAG Workflow工作流,能够构建高效、智能的企业级私有知识库,满足企业对于知识管理和智能问答的多样化需求。
2573 4