从0到1接入钉钉消息通知

news2024/11/25 0:04:19

前段时间给项目接入监控告警,消息通知渠道选了钉钉。预算的原因内部办公刚从飞书转回钉钉,飞书消息通知之前就有一套了,测试钉钉从应用授权到消息测试花了不少时间。这里记录下从钉钉开放平台权限申请到消息接收全流程,给后面有同样需求的人少踩坑。

申请开发者权限

让组织管理员在OA管理后台给你分配权限
在这里插入图片描述
或者自己新建一个测试主体,你就是管理员。因为没有组织架构,后面部门群组都要新建。
参考:https://open.dingtalk.com/document/dashboard/become-a-dingtalk-developer

创建应用

登录后台创建企业内部应用
在这里插入图片描述
在这里插入图片描述
建完你可以拿到AgentId、AppKey和AppSecret,后面对接开放平台接口的时候都要用到。

获取授权

拿到accessToken。
https://api.dingtalk.com/v1.0/oauth2/accessToken
入参

{
	"appKey":"xx",
	"appSecret":"xxx"
}

返回

{
	"expireIn":7200,
	"accessToken":"xxx"
}

接下来创建组织架构

创建部门

比如创建一级部门,技术部。
https://oapi.dingtalk.com/topapi/v2/department/create?access_token=xxx

{
	"name":"技术部",
	"parent_id":1
}

会返回部门ID

{
	"errcode":0,
	"result":{
		"dept_id":xxx
	},
	"errmsg":"ok",
	"request_id":"16mgjgpq1o4az"
}

用户信息创建

往架构里面添加人,需要绑定手机号。
https://oapi.dingtalk.com/topapi/v2/user/create?access_token=xxx

{
	"name":"Mary",
	"mobile":"168xxx",
	"dept_id_list":"xxx"
}

返回用户ID

{
	"errcode":0,
	"result":{
		"unionId":"xxx",
		"userid":"xxx"
	},
	"errmsg":"ok",
	"request_id":"16m7cylmugy2d"
}

钉钉发送消息有两种方式,一种是工作通知,后面接收人列表如果要加入,就需要单独把对应的用户id加进来。
另一种是发送群聊消息,在群聊里面加个机器人虚拟用户,后面如果需要添加接收人,只需要把对应的人拉到群里就行了,消息是直接发群里的。

发送工作通知

https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=xx
比如发送一句文本通知

{
	"msg":{
		"msgtype":"text",
		"oa":{
			"body":{
				"content":"Linda监控告警消息测试"
			}
		},
		"text":{
			"content":"Linda监控告警消息测试"
		}
	},
	"to_all_user":false,
	"agent_id":xx,
	"userid_list":"xx"
}

agent_id是前面创建应用的时候,在应用详情的应用凭证AgentId,userid_list是目标用户ID列表。
发送完会返回任务ID,如果消息没触达,可以用于回溯排查问题。

{
	"errcode":0,
	"errmsg":"ok",
	"task_id":xx,
	"request_id":"16m2lh8dy44el"
}

接收到是这样的
在这里插入图片描述
还可以创建更复杂一点的工作通知

{
	"msg":{
		"msgtype":"oa",
		"oa":{
			"body":{
				"file_count":"2",
				"title":"技术度量",
				"author":"Linda",
				"content":"需求交付率(%)\t需求总工时(h)\t需求平均工时(h)\t冒烟通过率(%)\tBUG日清率(%)\tBUG完成率(%)\tBUG总工时(h)\tBUG平均工时(h)"
			},
			"head":{
				"bgcolor":"FFBBBBBB",
				"text":"季度缺陷报告"
			}
		},
		"text":{
			"content":"Linda监控告警消息测试"
		}
	},
	"to_all_user":false,
	"agent_id":xx,
	"userid_list":"xxx"
}

在这里插入图片描述
这里也支持Markdown格式的工作通知,但是测试的显示效果不理想,排版直接乱掉。

{
	"agent_id":xx,
	"msg":{
		"link":{
			"title":"Nacos使用手册",
			"text":"# Nacos-examples [中文](./README.md)  > 这是 Nacos java 程序样例,你可以通过 Nacos 原生SDK / Spring 操作服务和配置 ## 启动 Nacos  你可以本机启动单机模式Nacos  https://nacos.io/zh-cn/docs/deployment.html  你也可以从阿里云上购买Nacos开发版  https://help.aliyun.com/document_detail/139460.html  https://www.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0"
		},
		"markdown":{
			"title":"Nacos使用手册",
			"text":"# Nacos-examples [中文](./README.md)  > 这是 Nacos java 程序样例,你可以通过 Nacos 原生SDK / Spring 操作服务和配置 ## 启动 Nacos  你可以本机启动单机模式Nacos  https://nacos.io/zh-cn/docs/deployment.html  你也可以从阿里云上购买Nacos开发版  https://help.aliyun.com/document_detail/139460.html  https://www.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0"
		},
		"oa":{
			"body":{
				"title":"Nacos使用手册"
			},
			"head":{
				"text":"# Nacos-examples [中文](./README.md)  > 这是 Nacos java 程序样例,你可以通过 Nacos 原生SDK / Spring 操作服务和配置 ## 启动 Nacos  你可以本机启动单机模式Nacos  https://nacos.io/zh-cn/docs/deployment.html  你也可以从阿里云上购买Nacos开发版  https://help.aliyun.com/document_detail/139460.html  https://www.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0"
			}
		},
		"msgtype":"markdown",
		"action_card":{
			"title":"Nacos使用手册",
			"btn_json_list":[
				{
					"title":"Nacos使用手册"
				}
			]
		}
	},
	"userid_list":"xx"
}

在这里插入图片描述

获取工作通知消息的发送结果

https://oapi.dingtalk.com/topapi/message/corpconversation/getsendresult?access_token=xx

{
	"agent_id":xx,
	"task_id":xx
}

有时发完没收到消息,可能不是传参的问题,仅仅是发送频率被限制了。

{
	"errcode":41045,
	"errmsg":"超过发送全员消息的次数上限,每天最多3次",
	"request_id":"15rostv26oohc"
}

如果是发送群聊消息,需要先创建群会话。

创建群会话

https://oapi.dingtalk.com/chat/create?access_token=xx
owner指定群主,useridlist为群用户列表

{
	"owner":"xxx",
	"mentionAllAuthority":0,
	"showHistoryType":1,
	"validationType":0,
	"name":"Linda消息通知",
	"useridlist":"[\"xxx\"]",
	"searchable":1,
	"chatBannedType":0,
	"managementType":0
}

返回群ID

{
	"errcode":0,
	"chatid":"xx",
	"conversationTag":2,
	"errmsg":"ok",
	"openConversationId":"xx"
}

应用添加机器人

进入应用,在消息推送开启机器人配置,拿到RobotCode在这里插入图片描述

机器人发送群聊消息

header
{
	"x-acs-dingtalk-access-token":"xx"
}
body
{
	"msgParam":"{\"content\": \"Linda monitor notify\"}",
	"msgKey":"sampleText",
	"robotCode":"xx",
	"openConversationId":"xx"
}

返回

{
	"processQueryKey":"xx"
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP-MM-采购申请字段解析

采购申请抬头以及行项目字段解析 1、采购申请类型: 对PR进行分类; 控制PR行项目的编号间隔; 控制PR编号范围,以及是否内/外部给号; 控制PR的屏幕选择格式; 控制PR是否允许凭证抬头审批,如果允…

mybatis-plus实现逻辑删除(详细!)

文章目录 什么是逻辑删除?为什么用到逻辑删除?在springboot使用Mybatis-Plus提供的逻辑删除1、在application.yml配置2、 实体类字段上加上TableLogic注解演示 什么是逻辑删除? 逻辑删除的本质是修改操作,并不是真正的删除&#…

2023/5/28周报

目录 摘要 论文阅读 1、标题和现存问题 2、使用GNN进行文本分类 3、INDUCT-GCN 4、实验准备 5、实验结果 深度学习 1、时空图的种类 2、图在环境中的应用 3、STGNN 总结 摘要 本周在论文阅读上,阅读了一篇InducT-GCN:归纳图卷积文本分类网络的论文。基…

AWVS使用手册

目录 AWVS基本操作 AWVS工具介绍 AWVS界面介绍 AWVS主要操作区域简介 AWVS的功能及特点的功能及特点 AWVS的菜单栏,工具栏简介 AWVS基本功能介绍 AWVS的蜘蛛爬虫功能 AWVS目标目标探测工具 AWVS的子域名探测工具 AWVS的的HTTP嗅探工具 AWVS的的HTTP模糊…

排序算法的时间复杂度、空间复杂度对比总结

参考:八大排序算法的稳定性和时间复杂度

【linux】守护进程(精灵进程)

文章目录 一、TCP服务器日志二、守护进程预备知识2.1 守护进程概念2.2 前台任务和后台任务2.3 进程组与组长ID2.4 前台进程后台进程的切换2.5 自成会话 三、实现守护进程3.1 自建会话setsid3.2 守护进程的条件3.3 代码实现 一、TCP服务器日志 上一章我们写了一个TCP网络服务器…

SAP-MM-计算方案字段解析

01、 “步骤”:标识此条件类型在计算方案中的顺序编号,此编号会影响到后续业务中条件类型的排序,不同条件类型之间的编号最好间隔大一些,这样设置便于以后对计算方案进行扩展; 02、 “计数器”&#xff1…

(哈希表 ) 349. 两个数组的交集 ——【Leetcode每日一题】

❓349. 两个数组的交集 难度:简单 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[…

Hbase学习笔记

1 HBase介绍 (1) HBase是什么 HBase是一个开源的非关系型分布式、实时数据库(Nosql),运行于HDFS文件系统之上,因此key容错地存储海量稀疏的数据。 海量稀疏就是说不能保证每一个key它的列都有value。 关系型数据库:mysql、oracle 非关系…

Midjourney AI绘画咒语与生成的作品(实例)

据说Midjourney出来后,有一大批设计师抱着电脑,哭晕了~~ 有兴趣的朋友,可以看一下我前两天发的,地址如下: Midjourney AI绘画中文教程详解(完整版)模型、命令、参数与各种高级用法https://blog…

马斯洛的的五层需求完美吗 不

马斯洛五层需求难道就很完美吗?不! 我很佩服的复旦大学哲学王德峰教授批判 对马斯洛的自我实现,他认为 中国人没有西方意义上的自我实现 比如儒家成人达己、圆满、道问学和尊德性,比如孔子的学生颜回 比如佛家的渡人、觉悟。比如弘…

使用sklearn进行机器学习案例(1)

文章目录 案例一. 加州房价预测案例二. MNIST手写数字识别案例三. 波士顿房价预测 案例一. 加州房价预测 线性回归通过对训练集进行训练,拟合出一个线性方程,使得预测值与实际值之间的平均误差最小化。这个过程可以使用梯度下降法等优化算法来实现。即通…

使用curl命令传输数据

文章目录 一、curl命令二、举例和注意事项Reference 一、curl命令 curl是传输数据的命令行工具,可以通过命令行发送HTTP请求和接收HTTP响应。它的名字是“client for URLs”,意为URL的客户端,表示该工具主要用于处理URL相关的任务。curl可以…

Mysql数据库对表的基本操作

一.表基本操作 1.当前数据库内创建表 2.查看表 3.删除表 4.修改表结构 5.复制表(结构) 二.表约束创建 1.约束的作用 2.约束的类型 3.演示 一.表基本操作 1.当前数据库内创建表 CREATE TABLE 表名( 列名 列数据类型, 列名 列…

如何在华为OD机试中获得满分?Java实现【寻找关键钥匙】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

使用compose desktop构建桌面应用

使用compose desktop构建桌面应用时遇到的一些坑 官方指导移步:多平台开发说明,我这里只写一些自己遇到问题 我在mac机器开发,然后使用githubAction构建的win平台的包,现记录一下遇到的问题 构建文件build.gradle编写不同平台的程…

SAM-MM-配额协议字段解析

1、有效起始日:配额协议的生效日期,系统默认为当前创建日期,灰色,不可更改; 2、有效至:配额协议的失效日期,要手动填一个日期; 3、最小数量拆分:如果要按照配额比例&am…

.NET面向AI编程——SK框架(SemanticKernel)的简易入门实践

前言:随着ChatGPT开始在各个领域遍地开花,有关的应用也开始层出不穷。随着微软开源SK框架,无疑是给.NET开发者带来面向AI应用的新机遇。以下内容,通过创建一个简单的prompt开始,开发一个使用SK框架进行开发的入门教程&…

xss跨站之waf绕过及安全修复(28)

手工探针xss绕过waf规则 打开靶场 写入跨站测试语句发现拦截 这里就做一个最经典的方法,做一个关键字拆分来确立拦截的是什么东西。 去掉最后字符串,访问还是拦截,再去掉alert(1),访问还是拦截&#xff…

八大排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(上)

目录 前言 直接插入排序(Insertion Sort) 一、概念及其介绍 二、过程图示 三、代码 四、复杂度 希尔排序(Shell Sort) 一、概念 二、实现思路 三、图示过程 四、代码 4.1代码 4.2运行结果 4.3解释 五、复杂度 堆排…