电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python公司內項目對接釘釘審批流程的實現

瀏覽:79日期:2022-07-28 13:08:29

最近把組內的一個項目對接釘釘審批接口,通過python3.6。

釘釘官方文檔

廢話不多說了,上代碼:

import requestsimport jsonimport timefrom dingtalk.crypto import DingTalkCryptofrom django.conf import settings# settings.BASE_DIRclass Crypto(object): def __init__(self, token):# 隨便填的字符串self.token = token# 自己生成的43位隨機字符串self.aes_key = settings.DINGDING.get('DINGTALK_AES_TOKEN')# 釘釘企業IDself.corp_id = settings.DINGDING.get('CorpId') #print('corp_id:', self.corp_id)self.nonce = settings.DINGDING.get('nonce')self.crypto = DingTalkCrypto( token=self.nonce, encoding_aes_key=self.aes_key, corpid_or_suitekey=self.corp_id) def encrypt_success(self):# 返回加密successresult = self.crypto.encrypt_message( msg='success', nonce=self.nonce, timestamp=int(time.time()*1000))return resultclass DING(object): def __init__(self, approve_process):self.AgentId = settings.DINGDING.get('AgentId')self.AppKey = settings.DINGDING.get('AppKey')self.AppSecret = settings.DINGDING.get('AppSecret')self.dingding_url = settings.DINGDING.get('URL')self.process_code = settings.DINGDING.get('APPROVE_PROCESS').get(approve_process)[’process_code’]self.aes_key = settings.DINGDING.get('DINGTALK_AES_TOKEN')self.nonce = settings.DINGDING.get('nonce') def get_token(self):’’’獲取釘釘的token:return: 釘釘token’’’url = self.dingding_url + ’/gettoken?appkey={}&appsecret={}’.format(self.AppKey, self.AppSecret)req = requests.get(url)req = json.loads(req.text)return req[’access_token’]# def createCallbackDd():# ’’’# 注冊釘釘回調函數# :return:# ’’’# url = ’https://oapi.dingtalk.com/call_back/register_call_back?access_token=’ + self.getToken()# data = {# 'call_back_tag': ['bpms_task_change', 'bpms_instance_change'], #這兩個回調種類是審批的# 'token': TOKEN, #自定義的字符串# 'aes_key': AES_KEY, #自定義的43位字符串,密鑰# 'url': URL #回調地址# }# requests.post(url, data=json.dumps(data))# return (’OK’) def create_process(self, originator_user_id, dept_id, form_component_value_vo, approvers, cc_list, has_cc=0):’’’創建釘釘審批approvers為list 元素為釘釘userid cc_list同理’’’url = self.dingding_url + ’/topapi/processinstance/create?access_token=’ + self.get_token()print('form_component_value_vo:', form_component_value_vo)if has_cc == 0: data = {’agent_id’: self.AgentId,’process_code’: self.process_code, #工單id’originator_user_id’: originator_user_id,’dept_id’: dept_id, #創建人的釘釘部門id’form_component_values’: str(form_component_value_vo), #釘釘后臺配置的需要填寫的字段,’approvers’: approvers,’cc_list’: cc_list,’cc_position’: ’START_FINISH’ # 發起和完成時與抄送 }else: data = {’agent_id’: self.AgentId,’process_code’: self.process_code, #工單id’originator_user_id’: originator_user_id, #創建人的釘釘userid’dept_id’: dept_id, #創建人的釘釘部門id’form_component_values’: str(form_component_value_vo), #釘釘后臺配置的需要填寫的字段,’approvers’: approvers, }print('dingding_utils:', data)response = requests.post(url, data=data)return response.json() def get_status(self, process_instance_id):url = self.dingding_url + ’/topapi/processinstance/get?access_token=’ + self.get_token()data = { 'process_instance_id': process_instance_id}response = requests.post(url, data=data)return response.json() def register_callback(self, call_back_url):# 注冊回調url = self.dingding_url + ’/call_back/register_call_back?access_token=’ + self.get_token()print('self.get_token():', self.get_token())data = { 'call_back_tag': [’bpms_task_change’, ’bpms_instance_change’], 'token': self.nonce, 'aes_key': self.aes_key, 'url': call_back_url,}response = requests.post(url, data=json.dumps(data))return response.json() def get_callback(self):url = self.dingding_url + ’/call_back/get_call_back?access_token=’ + self.get_token()req = requests.get(url)req = json.loads(req.text)return req def create_process_approver_v2(self, originator_user_id, dept_id, form_component_value_vo, approvers, cc_list):’’’創建釘釘審批’’’url = self.dingding_url + ’/topapi/processinstance/create?access_token=’ + self.get_token()data = { ’agent_id’: self.AgentId, ’process_code’: self.process_code, ’originator_user_id’: originator_user_id, ’dept_id’: dept_id, ’form_component_values’: str(form_component_value_vo), ’approvers_v2’: json.dumps(approvers)}if cc_list: data[’cc_list’] = cc_list data[’cc_position’] = ’FINISH’response = requests.post(url, data=data)return response.json() def create_process_approver_v2_test(self, originator_user_id, dept_id, form_component_value_vo):’’’創建釘釘審批’’’url = self.dingding_url + ’/topapi/processinstance/create?access_token=’ + self.get_token()data = { ’agent_id’: self.AgentId, ’process_code’: self.process_code, ’originator_user_id’: originator_user_id, ’dept_id’: dept_id, ’form_component_values’: str(form_component_value_vo), ’approvers_v2’: json.dumps([{ 'task_action_type': 'NONE', 'user_ids': ['dingding_id'], # 單獨審批人},{ 'task_action_type': 'OR', 'user_ids': ['dingding_id1', 'dingding_id2'], # 或簽},{ 'task_action_type': 'AND', 'user_ids': ['dingding_id1', 'dingding_id2'], # 會簽} ])}response = requests.post(url, data=data)return response.json()if __name__ == '__main__': import django, os, sys sys.path.append(’xxxxxx’) # 項目路徑 os.environ[’DJANGO_SETTINGS_MODULE’] = ’xx.settings’ # print('settings.DINGDING', settings.DINGDING) ding = DING('create_xx') # print(ding.get_token()) # info = [{’name’: ’單行輸入框’,’value’: ’testixxxxxxxx’}] # # print(ding.create_process(’11’, 11, info)) a = [{’name’: '輸入框1', ’value’: 'value1'},{’name’: '輸入框2', ’value’: 'value2'}, ] # print(ding.create_process_test(’11’, 11, a)) # print(ding.create_process_approver_v2_test(’11’, 11, a)) # print(ding.create_process_test2()) # print(ding.get_status(’xxx’)) print(ding.get_status(’xx’)) # # 驗證 回調 # a = ding.get_token() # print(a) # c = Crypto(a) # print(c.encrypt_success()) # 注冊回調 # print(ding.register_callback('http://xxxx.vaiwan.com/xxx')) # print(ding.get_callback())

說明:

1 Crypto類用于對接釘釘回調用的。一個公司只有一個corpId,并且一個corpid只能注冊一個回調地址。我司有公共組注冊好了回調。只要接入公司內的回調即可。所以我實際沒有使用到Crypto。

2 在釘釘管理后臺中創建應用后會有這三個東西:AgentId、AppKey,AppSecret 。在創建釘釘審批流程,可以從審批流程瀏覽器中獲取到APPROVE_PROCESS。別忘啦給這個流程審批接口權限。這些官方文檔有說。

3 配置setting變量:

DINGDING = { 'AgentId': 123, 'AppKey': 'xx', 'AppSecret': 'xx', 'URL': 'https://oapi.dingtalk.com', 'APPROVE_PROCESS': { # process_code'create_xx': { 'process_code': 'abc', # 審批流程的id }, 'DINGTALK_AES_TOKEN': 'abc', 'nonce': 'abc', 'CorpId': 'abc',}

 4 接口形式創建的審批流程,與釘釘管理后臺創建的流程有一些不同:

1 不能在不同的審批環節設置不同的抄送人

2 不能審批流程前后有相同的人,不能自動顯示成 “自動同意”(管理后臺設置成去重后,但是接口指定審批人場景,不支持)

 5 其他如:審批內容、或簽,會簽代碼里都有示例。

到此這篇關于python公司內項目對接釘釘審批流程的實現的文章就介紹到這了,更多相關python對接釘釘審批內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 釘釘 Python
相關文章:
主站蜘蛛池模板: 书信之家_书信标准模板范文大全 最新范文网_实用的精品范文美文网 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 搬运设备、起重设备、吊装设备—『龙海起重成套设备』 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 楼承板设备-楼承板成型机-免浇筑楼承板机器厂家-捡来 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 学习虾-免费的学习资料下载平台| 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 |