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

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

python注冊釘釘回調事件的實現

瀏覽:7日期:2022-07-28 13:09:10
目錄1、注冊端2、回調端:以下示例代碼為python2,django 框架

釘釘API文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/skn8ld

釘釘有回調事件流程,有哪些回調?比如:通訊錄回調、審批回調等等,拿通訊錄回調來說,就是當你公司組織架構發生變動時,會自動觸發你自己注冊的回調地址,然后根據回調信息做一些自定義的處理,不得不說,釘釘真的是解決了協同辦公的很多問題,非常nice,但就回調事件來說,每個企業只能注冊一個回調地址,即使你要監聽的是不同的事件、即使還有其他業務線需要用到回調,也只能不多于一個回調,當然這都是出于人家服務多方面考慮的設計,廢話不多說,

好,流程:

一個注冊端向釘釘發送注冊請求,釘釘callback你自己的服務url,必須是公網訪問的地址,并且該地址返回釘釘json數據來告訴釘釘回調成功

注冊成功之后這個地址就可以接收釘釘的回調post請求,做一些自定義處理,記得返回json

好,代碼

1、注冊端

mport requests, jsonclass DingDingCallBack(object): def __init__(self):self.appsecret=’’self.appkey=’’self.api_url = 'https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s'%(self.appkey,self.appsecret)self.aes_key = ''self.callbackUrl = '回調url'self.headers = { ’Content-Type’: ’application/json’, ’User-Agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36’, ’username’:’zhangsan’, ’password’:’123456’} def get_token(self):res = requests.get(self.api_url)if res.status_code == 200: str_res = res.text token = (json.loads(str_res)).get(’access_token’) return token def regist_call_back(self):url = ’https://oapi.dingtalk.com/call_back/register_call_back?access_token={ACCESS_TOKEN}’.format(ACCESS_TOKEN=self.get_token())data = { 'call_back_tag': ['bpms_task_change', 'bpms_instance_change'], # 審批回調 'token': 'qxN3cm', 'aes_key': self.aes_key, 'url':self.callbackUrl, }data1 = json.dumps(data)response = requests.post(url, headers=self.headers, data=data1)print(response)print(response.text) def query_callback(self):url = ’https://oapi.dingtalk.com/call_back/get_call_back?access_token={ACCESS_TOKEN}’.format(ACCESS_TOKEN=self.get_token())response = requests.get(url, headers=self.headers, )print(response)print(response.text) def update_call_back(self):url = ’https://oapi.dingtalk.com/call_back/update_call_back?access_token={}’.format(self.get_token())data = { 'call_back_tag': ['bpms_task_change', 'bpms_instance_change','user_add_org','user_leave_org','org_dept_create','org_dept_modify','org_dept_remove'], 'token': '自定義字符串', 'aes_key': self.aes_key, 'url':self.callbackUrl }data1 = json.dumps(data)response = requests.post(url, headers=self.headers, data=data1)print(response)print(response.text) def get_fail(self):url = ’https://oapi.dingtalk.com/call_back/get_call_back_failed_result?access_token={}’.format(self.get_token())response = requests.get(url, headers=self.headers, )print(response.text)# todo 刪除回調 def delete_callback(self):url = ’https://oapi.dingtalk.com/call_back/delete_call_back?access_token={ACCESS_TOKEN}’.format(ACCESS_TOKEN=self.get_token())result = requests.get(url)print(result)print(result.text)#if __name__ == ’__main__’: dingOBJ = DingDingCallBack() # todo 獲取釘釘token# # dingOBJ.get_token() # todo 獲取回調失敗# dingOBJ.get_fail() # todo 注冊回調 # dingOBJ.regist_call_back() # todo 查詢回調事件 dingOBJ.query_callback() # todo 修改回調事件# dingOBJ.update_call_back() # todo 刪除回調 # dingOBJ.delete_callback()2、回調端:以下示例代碼為python2,django 框架

# -*- coding:utf-8 -*-from django.shortcuts import renderfrom django.http import JsonResponse,HttpResponsefrom django.views.generic import Viewfrom django.views.decorators.csrf import csrf_exemptfrom DingCrypto import DingCryptoimport random,string,time,json,requests,simplejson# Create your views here.from ast import literal_evalencodingAesKey = ’’key = ’’token = ’自定義字符串’appsecret = ’’appkey = ’’api_url = 'https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s'%(appkey,appsecret)def randam_string(n): ran_str = ’’.join(random.sample(string.ascii_letters + string.digits, n)) return ran_str# 注冊回調@csrf_exemptdef workOrderCallback(request): if request.method == ’GET’:return JsonResponse({’code’:200,’msg’:’ok’}) if request.method == ’POST’:print request.GETdingCrypto = DingCrypto(encodingAesKey,key)nonce = randam_string(8)timestamp = str(int(round(time.time())))encrpyt = dingCrypto.encrypt(’success’)# print nonce,timestamp,token,encrpytsignature = dingCrypto.generateSignature(nonce=nonce,timestamp=timestamp,token=token,msg_encrypt=encrpyt)new_data = { ’data’: {’msg_signature’: signature,’timeStamp’: timestamp,’nonce’: nonce,’encrypt’: encrpyt },}encrpyt11 = dingCrypto.decrypt(encrpyt)return JsonResponse(new_data.get(’data’))# 響應回調class CallBack(View): def get(self,request,*args,**kwargs):return JsonResponse({’code’:200,’msg’:’ok’}) def get_token(self):res = requests.get(api_url)if res.status_code == 200: str_res = res.text token = (json.loads(str_res)).get(’access_token’) return token def post(self,request,*args,**kwargs):# data = request.GETdingCrypto = DingCrypto(encodingAesKey, key)nonce = randam_string(8)timestamp = str(int(round(time.time())))encrpyt = dingCrypto.encrypt(’success’)# signature = dingCrypto.generateSignature(nonce=nonce,timestamp=timestamp,token=token,msg_encrypt=encrpyt)callback = json.loads(dingCrypto.decrypt(json.loads(request.body).get(’encrypt’)))if callback[’EventType’] == ’bpms_instance_change’: # 審批實例開始,結束 url = ’https://oapi.dingtalk.com/topapi/processinstance/get?access_token={ACCESS_TOKEN}’.format(ACCESS_TOKEN=self.get_token()) instace_ = {'process_instance_id': callback[’processInstanceId’] } data2 = json.dumps(instace_) req = requests.post(url,data=data2) data = literal_eval(str(req.text)).get(’process_instance’) excute_workorder(callback[’processInstanceId’],data)elif callback[’EventType’] == ’bpms_task_change’: # 審批任務開始,結束,轉交 print ’bpms_task_change’elif callback[’EventType’] == ’user_add_org’: print ’用戶增加’elif callback[’EventType’] == ’user_leave_org’: print ’用戶離職’elif callback[’EventType’] == ’org_dept_create’: print ’組織架構添加’elif callback[’EventType’] == ’org_dept_modify’: print ’組織架構變更’elif callback[’EventType’] == ’org_dept_remove’: print ’組織架構刪除’return HttpResponse(encrpyt)

到此這篇關于python注冊釘釘回調事件的實現的文章就介紹到這了,更多相關python注冊釘釘回調事件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 釘釘 Python
相關文章:
主站蜘蛛池模板: 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 科威信洗净科技,碳氢清洗机,超声波清洗机,真空碳氢清洗机 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 海南在线 海南一家| 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 好杂志网-首页| 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 变压器配件,变压器吸湿器,武强县吉口变压器配件有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 水篦子|雨篦子|镀锌格栅雨水篦子|不锈钢排水篦子|地下车库水箅子—安平县云航丝网制品厂 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 上海网站建设-上海网站制作-上海网站设计-上海做网站公司-咏熠软件 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 没斑啦-专业的祛斑美白嫩肤知识网站-去斑经验分享 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 |