日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:35日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
手机在线电影一区| 日韩精品免费观看视频| 亚洲精品系列| 99久久亚洲精品| 亚洲精品2区| 视频一区国产视频| 久久亚洲电影| 免费在线看一区| 亚洲激情欧美| 欧美日韩激情| 亚洲区第一页| 久久久免费人体| 中文字幕系列一区| 蜜桃视频免费观看一区| 日韩高清电影免费| 久久影视三级福利片| 性欧美videohd高精| 欧美午夜不卡| 免费日本视频一区| 九九九精品视频| 日韩久久电影| 国产亚洲精品久久久久婷婷瑜伽| 亚洲永久精品唐人导航网址| 欧美日韩在线播放视频| 亚洲综合中文| 激情不卡一区二区三区视频在线| 国产 日韩 欧美 综合 一区| 亚洲性色视频| 综合欧美精品| 日韩在线精品| 日韩专区欧美专区| 麻豆国产91在线播放| 天堂网av成人| 国产亚洲高清在线观看| 三级精品视频| 亚洲综合色婷婷在线观看| 国产精品一线天粉嫩av| 91精品亚洲| 婷婷激情综合| 欧美精品不卡| 中文字幕系列一区| 日韩专区在线视频| 美女视频黄免费的久久| 亚洲免费婷婷| 国产精品jk白丝蜜臀av小说| 1024精品一区二区三区| 中文字幕一区二区av| 国产精品二区不卡| 香蕉久久夜色精品国产| 久久亚洲道色| 亚洲精品在线二区| 日本国产精品| 久久99影视| 亚洲激情精品| 手机在线电影一区| 国产精品分类| 另类av一区二区| 青青久久av| 久久精品资源| 欧美视频精品全部免费观看| 在线亚洲观看| 亚洲不卡av不卡一区二区| 国产精品1luya在线播放| 亚洲青青久久| 中日韩男男gay无套| 岛国av在线网站| 日韩精品视频在线看| 国精品一区二区三区| 国产精品最新| 日韩毛片一区| 中文字幕亚洲精品乱码| 亚洲在线观看| 欧美不卡视频| 亚洲精品在线影院| 麻豆视频在线看| 成人日韩av| 卡一卡二国产精品| 国产精品乱战久久久| 日韩精品免费视频一区二区三区| 六月丁香综合| 丝袜美腿一区二区三区| 最新国产拍偷乱拍精品| 91精品一区二区三区综合在线爱 | 蜜桃视频一区二区三区 | 国产欧美一区二区三区米奇| 亚洲综合激情在线| 免费看黄色91| 免费久久精品视频| 亚洲专区欧美专区| 9国产精品视频| 伊人久久亚洲美女图片| 欧美搞黄网站| 亚洲精品中文字幕乱码| 欧美freesex黑人又粗又大| 狠狠躁少妇一区二区三区| 久久影院一区二区三区| 国产精品1区| 精品视频一区二区三区四区五区| 蜜桃精品视频| 91综合网人人| 久久久久国产精品一区二区| 国产专区一区| 国产亚洲永久域名| 一级成人国产| 欧美日韩精品一区二区三区在线观看| 欧美日韩一区二区三区不卡视频| 欧美日一区二区在线观看| 国产欧美日韩精品一区二区免费| 亚洲一区二区三区久久久| 一区二区国产在线观看| 日韩高清在线一区| 久久免费福利| 国产精品原创| 狠狠操综合网| 深夜福利亚洲| 麻豆91在线播放| 日韩高清不卡| 午夜亚洲精品| 日韩国产在线不卡视频| 国产精品极品国产中出| а√在线中文在线新版| 在线精品小视频| 亚洲1区在线观看| 日韩激情av在线| 久久免费视频66| 欧美日韩黑人| 69精品国产久热在线观看| 国产成人久久精品麻豆二区 | 国产黄色一区| 秋霞影院一区二区三区| 久久最新视频| 精品视频国内| 在线一区欧美| 国产精品地址| 欧美日中文字幕| 欧美久久精品| 欧美一区网站| 久久久一本精品| 亚洲精品字幕| 高清日韩欧美| 红桃视频欧美| 日本欧美在线| 国产精选在线| 99视频一区| 国产精品www.| 米奇777超碰欧美日韩亚洲| 亚洲精品在线a| 福利一区二区三区视频在线观看| 亚洲作爱视频| 成人国产精品一区二区网站| 亚洲在线网站| 麻豆免费精品视频| 久久久久国产| 日韩免费精品| 日韩欧美国产精品综合嫩v| 日韩黄色av| 欧美日韩在线网站| 国产精久久久| 日韩精品一级中文字幕精品视频免费观看 | 一级成人国产| 欧美国产一级| 日韩精品一区二区三区免费视频 | 美女亚洲一区| 精品国产黄a∨片高清在线| 亚洲高清毛片| 久久激五月天综合精品| 国产美女精品| 久久网站免费观看| 国产福利资源一区| 国产一区久久| 国产在线观看91一区二区三区| 亚洲人成亚洲精品| 激情久久中文字幕| 国产精品精品| 国产精品一区二区三区四区在线观看| 中文精品视频| 亚洲二区在线| 色偷偷偷在线视频播放| 麻豆国产一区| 国产伦精品一区二区三区在线播放| 国产精品试看| 亚洲黄色在线| 蜜臀av免费一区二区三区| 欧美香蕉视频| 麻豆免费精品视频| 欧美一级二级三级视频| 日韩制服丝袜av| 亚洲激情二区| 亚洲午夜黄色| 亚洲成人二区| 亚洲啊v在线| 国产精品13p| 中文在线а√在线8| 福利片在线一区二区| 国产精品久久久久久久久久白浆 | 久久亚洲精品中文字幕| 国产丝袜一区| 国产麻豆一区二区三区精品视频| 日本伊人午夜精品| 久久福利毛片|