工作中需要借用釘釘的審批流哲嘲,在審批事件發(fā)生時作一些調用罢低,必須用到釘釘的“事件與回調”查辩。
1 配置應用
登陸開放平臺:
https://open-dev.dingtalk.com/
去企業(yè)內部開發(fā)里面,先創(chuàng)建個應用,后面都借用這個應用來調接口宜岛。
image.png
自己設置下长踊,本文不研究應用怎么開發(fā)。
image.png
點進去應用萍倡,這里有很有價值的信息身弊。
image.png
然后在事件與回調里面,配置下遣铝。這里的請求網址佑刷,是后面需要開發(fā)的,這個地址可以不用域名酿炸,也可以不是80端口瘫絮。
image.png
2 接口開發(fā)
在配置上面的請求網址如http://yourserver/api/callback
時,需要把這個網址的接口開發(fā)好填硕。釘釘會發(fā)送一個類似這樣的請求:
curl -X 'POST' \
'http://yourserver:80/api/callback?signature=369beedea8d1c8d1ad18936e827d29d0c8415baf&msg_signature=369beedea8d1c8d1ad18936e827d29d0c8415baf×tamp=1660634610203&nonce=kBms4hUF' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"encrypt": "4Q4JHq88OCR3P+8v2mcFHLT6dmaaYAckaUBVk1spJnCx7u9raGZVAxVUIuQg3loL8LjIQj+5YC3+HJcehTsJXu1qMOv5TKdb4+koO55g8WCYZP/vebg2RZQC2gBlN2zv"
}'
請求的路徑參數包括signature麦萤、msg_signature、timestamp扁眯、nonce壮莹,請求體只有一個encrypt的json。Python偽代碼如下:
# DingCallbackCrypto3是官方提供的demo: https://github.com/open-dingtalk/dingtalk-callback-Crypto
ding = DingCallbackCrypto3(token='第四個圖的簽名token',
encodingAesKey='第四個圖的加密aes_key',
key='第三個圖的AppKey')
# 路徑參數
signature = args.signature
msg_signature = args.msg_signature
timestamp = args.timestamp
nonce = args.nonce
# 請求體
info = request.get_json()
encrypt_msg = info.get('encrypt')
# 解密回調事件
decrypt_msg = ding.getDecryptMsg(msg_signature, timestamp, nonce, encrypt_msg)
print(decrypt_msg) # {"EventType":"check_url"}
# 必須返回一個加密的success
success_map = ding.getEncryptedMap("success")
return success_map
官方提供的demo還在用Crypto
這個老坑包姻檀,有問題搜一下就行了命满。
開發(fā)好后,就可以保存了绣版,并且在下面的事件里訂閱胶台。一切OK!
image.png
比如:
image.png
3 參考
https://open.dingtalk.com/document/org/configure-event-subcription