日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

打造钉钉事件分发平台之钉钉审批等事件处理

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打造钉钉事件分发平台之钉钉审批等事件处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上講和上上講我們說到了釘釘的審批和釘釘通訊錄的一個簡單示例,這次我們講下如何快速打造一個自己的釘釘事件分發平臺。讓你能夠通過監聽用戶在釘釘上的操作,然后進行對應的業務處理,比如釘釘流程審批完后業務處理、通訊錄員工增加后對應自己系統的業務處理等等

為什么要做一套自己的釘釘事件分發平臺?
之前我們講過通過釘釘提供的通訊錄接口進行同步自己OA系統和釘釘通訊錄,這種同步的方式為:OA系統通訊錄更改-》釘釘通訊錄同步。這種方式只解決了單向同步,所以如果我們把釘釘通訊錄的事件監聽起來,這樣釘釘通訊錄更改-》OA系統通訊錄同步就能實現雙向同步的過程。
再說回上講的釘釘審批,我們講了如果通過接口進行釘釘的流程發起,但是審批的操作都是在釘釘上進行,所以也必須把釘釘上的審批動作事件進行監聽,然后將結果返回給自己的系統進行業務處理。
釘釘官方明確注明了,一個企業只能注冊一個接收回調的URL地址?,所以我們必須將事件的回調進行統一管理,做一套屬于自己的釘釘事件分發平臺,注冊對應的事件,然后只提供一個回調地址給釘釘,然后在自己的回調地址中進行轉發。我簡單畫了一個圖,如下:

釘釘的事件回調
回調是開發者在釘釘開放平臺注冊一個HTTP接口,并訂閱相關的事件,當事件發生時,釘釘會主動調用開發者注冊的HTTP接口,推送對應的事件信息。比如訂閱審批事件回調后,當審批狀態變更時,會向注冊的HTTP接口推送事件信息。

針對所有的回調事件,在收到事件推送后,務必返回包含經過加密的字符串“success”的json數據,只有返回了對應的json數據,釘釘才會判斷此事件推送成功。具體返回的數據格式為:

{"msg_signature":"111108bb8e6dbce3c9671d6fdb69d15066227608","timeStamp":"1783610513","nonce":"123456","encrypt":"1ojQf0NSvw2WPvW7LijxS8UvISr8pdDP+rXpPbcLGOmIBNbWetRg7IP0vdhVgkVwSoZBJeQwY2zhROsJq/HJ+q6tp1qhl9L1+ccC9ZjKs1wV5bmA9NoAWQiZ+7MpzQVq+j74rJQljdVyBdI/dGOvsnBSCxCVW0ISWX0vn9lYTuuHSoaxwCGylH9xRhYHL9bRDskBc7bO0FseHQQasdfghjkl"}

先來注冊釘釘事件回調

注冊回調接口時,釘釘服務器會向URL發起【測試回調URL】事件,來驗證填寫url的合法性,url服務器需要在接收到回調之后返回字符串“success”的加密json數據,才能完成注冊。流程如下圖:

請求地址(POST):

https://oapi.dingtalk.com/call_back/register_call_back?access_token=ACCESS_TOKEN

請求包結構體?:

{"call_back_tag": ["user_add_org", "user_modify_org", "user_leave_org"],"token": "123456","aes_key": "xxxxxxxxlvdhntotr3x9qhlbytb18zyz5zxxxxxxxxx","url":"http://test001.vaiwan.com/eventreceive"}

測試事件回調URL
在注冊事件回調接口的時候,釘釘服務器會向您“注冊回調接口”時候設置的url(接收回調的url)發起POST請求,用來測試url的合法性。收到消息后,需要返回經過加密后的字符串“success”的json數據,否則釘釘服務器將認為url不合法。

msg_signature?:消息體簽名
timeStamp?:時間戳
nonce?:隨機字符串
encrypt?:字符串“success”加密值,加解密說明:https://ding-doc.dingtalk.com/doc#/faquestions/ltr370

這里我已經注冊好了,直接用查詢接口看看

再來看下審批的事件回調

我們自己寫的測試回調接口:

/// <summary>/// 響應釘釘事件/// </summary>/// <param name="value"></param>/// <returns></returns>[HttpPost("DingEventReceive")]public async Task<IActionResult> DingEventReceive([FromBody] string value){var dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(value);var eventType = dic["EventType"]?.ToString();//事件類型 bpms_instance_change、bpms_task_changevar processInstanceId = dic["processInstanceId"]?.ToString();//審批實例idvar corpId = dic["corpId"]?.ToString();//審批實例對應的企業var createTime = dic["createTime"].ToString();//流程創建事件var title = dic["title"].ToString();//標題// type為start表示審批實例開始,審批正常結束(同意或拒絕)的type為finish,審批終止(發起人撤銷審批單)的type為terminatevar type = dic["type"].ToString();var staffId = dic["staffId"].ToString();//發起流程實例的員工var url = dic["url"].ToString();//審批實例url,可在釘釘內跳轉到審批頁面var processCode = dic["processCode"].ToString();//審批模板的唯一碼var result = dic["result"].ToString();//同意時result為agree,拒絕時result為refuse,只有審批任務結束、審批任務轉交時才有var remark = dic["remark"].ToString();//remark表示操作時寫的評論內容return Ok(1);}

再說回事件分發平臺,這里我們只需要將需要接受回調的業務系統A的回調地址告訴分發平臺,由分發平臺接收到釘釘回調后根據需要分別通知即可,這里就不做代碼展示了。

上講的時候我們是的流程發起,其實填單是在自己的內部系統填寫的然后通過接口像釘釘發起流程,實現這次的事件分發平臺后,我們可以將一些簡單的表單由釘釘上直接填寫,然后通過事件回調,然后傳給我們內部系統進行歸檔。

內部系統填寫表單?(由于自己內部系統,可以支持各種復雜的表單填寫,數據關聯操作等):

釘釘系統填寫表單?(適合簡單的表單填寫):

好了,到此結束,更多的大家可以多關注下釘釘官方文檔:https://ding-doc.dingtalk.com/doc#/personnal/fdzxvg

如果大家有疑問或者更好的想法建議,評論區見~

總結

以上是生活随笔為你收集整理的打造钉钉事件分发平台之钉钉审批等事件处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。