调用钉钉接口发送消息

news/2024/12/23 22:00:00/

调用钉钉接口发送消息

通过创建钉钉开放平台创建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/news/1557569.html

相关文章

陪诊小程序搭建,打造一站式陪诊服务

当下,陪诊市场正在持续火热发展,在全国医疗行业中,陪诊师成为了一个重要的就医方式。陪诊师的出现在快节奏生活下显得尤为重要,为不少没有时间陪老人去医院的家庭以及对医院不熟悉的提供了便利,满足了众多患者及其家属…

springmvc跳转不经过视图解析器,controller保存数据,controller层返回json数据,拦截器,全局异常处理,文件上传含本地和阿里oss

1.跳转不经过视图解析器 return "forward:/main.jsp";//使用转发跳转到指定路径,无需经过视图解析器 return "redirect:/main.jsp";//使用重定向跳转到指定路径,无需经过视图解析器 2.controller保存数据 request session M…

JavaSE 总复习:夯实基础,迈向进阶之路

我的个人主页 一、数据类型与变量 二、控制语句 三、数组 四、面向对象编程(OOP) 五、异常处理 六、常用类库 七、输入输出流 八、总结 在 Java 编程的学习旅程中,JavaSE(Java 标准版)是基石般的存在。它涵盖…

软件工程复习重点(第一章 软件工程概述)

1.什么是软件?软件有什么特点? 软件分类? 计算机软件--计算机系统中的程序、数据及其文档的统称。 软件=程序数据文档 表现形式:逻辑实体、抽象性 生产方式:与硬件不同、无明显的制造过程、定制 维护机制&a…

【WiFi】WiFi6 5G 802.11ax 最大速率对应表

5GHz 频段 1x1 MIMO 速率 20MHz 信道宽度 MCS 0: 8.6 MbpsMCS 1: 17.2 MbpsMCS 2: 25.8 MbpsMCS 3: 34.4 MbpsMCS 4: 51.6 MbpsMCS 5: 68.8 MbpsMCS 6: 77.4 MbpsMCS 7: 86.0 MbpsMCS 8: 103.2 MbpsMCS 9: 114.7 MbpsMCS 10: 129.0 MbpsMCS 11: 143.4 Mbps 40MHz 信道宽度 …

STM32 HAL库之串口接收不定长字符

背景 在项目开发过程中,经常会使用MCU的串口与外界进行通信,例如两个单片机之间TTL电平型串口通信,单片机与成熟电路模块之间的串口通信等等.... 如何高效的使用串口是开发人员必须关注的问题。 STM32的HAL库为我们提供了三种串口通信机制&am…

大数据新视界 -- Hive 数据仓库:架构深度剖析与核心组件详解(上)(1 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Mono里运行C#脚本1

前面已经知道怎么样把C#的源码通过MCS编译器生成exe的文件,然后我们还把 exe的文件进行反汇编查看,知道我们需要处理的目标,就是这些汇编的代码。接着下来,我们就将要来探究mono是怎么样去运行这些代码的。 一般来说,要运行这些代码,要经历几个阶段:建立垃圾回收内存…