調用釘釘接口發送消息
通過創建釘釘開放平臺創建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