调用钉钉接口发送消息

devtools/2024/12/24 3:49:14/

调用钉钉接口发送消息

通过创建钉钉开放平台创建H5小程序,通过该小程序可以实现向企业内的钉钉用户发送消息(消息是以工作通知的形式发送)

1、目前仅支持发送文本消息,相同内容的文本只能成功发送一次,但是接口返回发送成功

2、需要给小程序开放各种权限

import jsonimport objectpath
import requests# 在钉钉开放平台上创建应用后获取
AGENT_ID = None
APP_KEY = ""
APP_SECRET = ""dd_domain = "https://oapi.dingtalk.com"class DingtalkHelper():def __init__(self):self.access_token = self.get_token()def get_token(self):"""获取token:return:"""url = f"{dd_domain}/gettoken"data = {"appkey": APP_KEY,"appsecret": APP_SECRET,}res_json = requests.get(url=url, params=data).json()return objectpath.Tree(res_json).execute("$.access_token")def get_depList(self):"""获取部门列表:return:"""url = f"{dd_domain}/department/list"data = {"access_token": self.access_token,}res_json = requests.get(url=url, params=data).json()departmentIds_list = list(objectpath.Tree(res_json).execute("$..*[@.name is not null].id"))return departmentIds_listdef get_memberList(self, depId: str):"""获取部门用户userid列表:param depId::return:"""url = f"{dd_domain}/user/getDeptMember"data = {"access_token": self.access_token,"deptId": depId,}res_json = requests.get(url=url, params=data).json()return res_jsondef get_userInfo(self, userId):"""获取部门用户userid列表:param userId::return:"""url = f"{dd_domain}/user/get"data = {"access_token": self.access_token,"userid": userId,}res_json = requests.get(url=url, params=data).json()userIds_list = list(objectpath.Tree(res_json).execute("$..*[@.userid is not null].(mobile, userid)"))userInfo = userIds_list[0]return {userInfo.get("mobile"): userInfo.get("userid")}def send_ddMsg(self, userId, content):"""向企业个人发送钉钉通知:param userId::return:"""url = f"{dd_domain}/message/send?access_token={self.access_token}"body_dict = {"touser": userId,"agentid": AGENT_ID,"msgtype": "text","text": {"content": content}}res = requests.post(url=url, data=json.dumps(body_dict))print(res.text)def getAll_userIds(self):"""获取公司内所有人员的userId:return:"""deptIds_list = self.get_depList()userIds_list = list()for deptId in deptIds_list:res_json = self.get_memberList(deptId)userIds = objectpath.Tree(res_json).execute("$.userIds")userIds_list.extend(userIds)return userIds_listdef getAll_usersInfo(self):"""获取公司内所有人员的mobile和userId的映射关系表:return:"""userIds_list = self.getAll_userIds()usersInfo_dict = dict()for userId in userIds_list:userInfo = self.get_userInfo(userId)usersInfo_dict.update(userInfo)return usersInfo_dict

http://www.ppmy.cn/devtools/144883.html

相关文章

一起学Git【第一节:Git的安装】

Git是什么? Git是什么?相信大家点击进来已经有了初步的认识,这里就简单的进行介绍。 Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目版本管理。Git是目前世界上最流行…

王佩丰24节Excel学习笔记——第十六讲:简单文本函数

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 如果已知要取数据的固定起始位,可使用此小技巧,如:MID(A3,4,100),知道从第4位取,后面不知道有多少,我就多取&…

springmvc的拦截器,全局异常处理和文件上传

拦截器: 拦截不符合规则的,放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。 如何定义拦截器。 定义一个类并实现拦截器接口 public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest reque…

实现路由懒加载的方式有哪些?

1函数式懒加载 使用vue的异步组件和webpack的代码分割功能,通过()>import()这种函数形式来定义路由组件,示例如下: const Home () > import(/views/Home.vue); const router new VueRouter({routes: [{ path…

RFdiffusion get_torsions函数解读

函数功能 get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。 输入参数 xyz…

安卓开发实现图像处理相关功能

彩色图像转换黑白图像实验 基本图形绘制与填充实验 Mat像素操作实验 图像滤波实验 图像轮廓特征检测实验 图像局部特征检测实验 人脸美颜

websocket 局域网 webrtc 一对一 多对多 视频通话 的示例

基本介绍 WebRTC(Web Real-Time Communications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和&am…

Redis——缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 1、 缓存预热2、 缓存雪崩3、 缓存击穿4、 缓存穿透总结 1、 缓存预热 什么是预热: mysql加入新增100条记录,一般默认以mysql为准作为底单数据,如何同步给redis(布隆过滤器)这100条新数据。 为什么需要预热…