Asp.Net Core对接钉钉群机器人
釘釘作為企業辦公越來越常用的軟件,對于企業內部自研系統提供接口支持,以此來打通多平臺下的數據,本次先使用最簡單的釘釘群機器人完成多種形式的消息推送,參考釘釘開發文檔中自定義機器人環節,此次嘗試所花的時間不多,但有幾個地方是需要注意的。
?
一、釘釘群中建立機器人獲取WebHook地址
首先得有一個釘釘群,如果沒有得自行創建一個了,通過群內右上角菜單中找到群機器人然后添加一個自定義機器人
并設置消息推送開啟(默認是開啟),復制下一行的webhook地址,該地址將作為后面消息推送的地址
完成即可,如果不確定該地址是否有效可以用命令測試一下,比如在Linux平臺下,通過該命令并將自己的webhook_token替換
然后回車進行測試,即刻收到群機器人推送的消息
?
二、參考文檔完成基礎類的封裝并處理相關字段
接下來開始在代碼中完成對WebHook地址的調用,可以先分析一下群機器人的文檔,可以獲悉有五種消息類型:文本 (text)、連接 (link)、markdown?(markdown)、ActionCard、FeedCard消息類型,其中的actionCard分整體和獨立兩類。針對這些類型及給出的參數要求完成基礎類的設計和封裝,以text類型為例:
其中的msgtype是五種消息類型的字符串,因此針對該部分設計一個枚舉,作為消息類型的區分。
? 設計一個text類并給定一個屬性Content,在設計時我們喜歡使用帕斯卡命名法,但是釘釘接口卻不允許,如果不做一些處理,直接使用Content屬性將會調用不通接口,這點需要注意,使用Newtonjson提供的打包成json時用指定的名稱替換來滿足釘釘接口需求。
其次對指定人群做一個類的封裝,同樣需要處理其中的屬性在序列化時的替換名稱。
通過分析五種消息類型,其中的一些參數可以完成共用,對自定義釘釘機器人文檔的一系列挖掘后,確定了這幾個類和枚舉
?
接下來可以完成對機器人調用了并使用不同消息類型推送到釘釘群中。
?
三、完成對釘釘群機器人的調用
首先在ConfigureService方法中完成對HttpClientFactory的注入
本次直接在Asp.Net Core WebApi下完成機器人的調用,新建一個DingTalk的控制器,然后完成對IHttpClientFactory的注入工作,便開始接下來的服務調用了,對于釘釘的WebHook_Token的存放可以選擇配置文件或是如果只是嘗試,可以直接用一個變量保存即可。
? 再次以text文本為例并完成文本消息的推送,建立一個action,用來發送文本消息,在其中完成對釘釘接口需要參數的組裝工作,最終使用統一的發送方法完成消息推送。?
對于發送方法內需要根據釘釘文檔的一些要求完成設計,如文檔指明需要使用Post提交請求并使用UTF8編碼,我直接在控制器內新建了一個方法(盡管不太合理),首先對內容進行序列化并封裝,然后通過HttpClientFactory新建client并完成發送消息。
啟動程序并通過url訪問控制器內的相應方法完成消息推送,注意各屬性的命名方式或通過特性轉換后的命名方式需要滿足釘釘接口文檔(文檔中FeedCard類型后兩個參數不太標準)。
倉庫地址:https://gitee.com/530521314/koInstance/tree/master/src/koInstance.WebApi
原文地址:https://www.cnblogs.com/CKExp/p/10416897.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的Asp.Net Core对接钉钉群机器人的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dotnetcore-officeadd
- 下一篇: .NET Core开源行动:一键创建Ex