国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.Net Core對接釘釘群機器人的完整步驟記錄

Asp.Net Core對接釘釘群機器人的完整步驟記錄

2020-06-08 15:20微笑刺客D ASP.NET教程

這篇文章主要給大家介紹了關于Asp.Net Core對接釘釘群機器人的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

釘釘作為企業辦公越來越常用的軟件,對于企業內部自研系統提供接口支持,以此來打通多平臺下的數據,本次先使用最簡單的釘釘群機器人完成多種形式的消息推送,參考釘釘開發文檔中自定義機器人環節,此次嘗試所花的時間不多,但有幾個地方是需要注意的。

  Asp.Net Core對接釘釘群機器人的完整步驟記錄

一、釘釘群中建立機器人獲取WebHook地址

首先得有一個釘釘群,如果沒有得自行創建一個了,通過群內右上角菜單中找到群機器人然后添加一個自定義機器人

  Asp.Net Core對接釘釘群機器人的完整步驟記錄

并設置消息推送開啟(默認是開啟),復制下一行的webhook地址,該地址將作為后面消息推送的地址

  Asp.Net Core對接釘釘群機器人的完整步驟記錄

完成即可,如果不確定該地址是否有效可以用命令測試一下,比如在Linux平臺下,通過該命令并將自己的webhook_token替換

?
1
2
3
4
5
6
7
8
 -H 'Content-Type: application/json' \
 -d '
 {"msgtype": "text",
 "text": {
  "content": "我就是我, 是不一樣的煙火"
  }
 }'

然后回車進行測試,即刻收到群機器人推送的消息  

Asp.Net Core對接釘釘群機器人的完整步驟記錄

二、參考文檔完成基礎類的封裝并處理相關字段

接下來開始在代碼中完成對WebHook地址的調用,可以先分析一下群機器人的文檔,可以獲悉有五種消息類型:文本 (text)、連接 (link)、markdown(markdown)、ActionCard、FeedCard消息類型,其中的actionCard分整體和獨立兩類。針對這些類型及給出的參數要求完成基礎類的設計和封裝,以text類型為例:

Asp.Net Core對接釘釘群機器人的完整步驟記錄

其中的msgtype是五種消息類型的字符串,因此針對該部分設計一個枚舉,作為消息類型的區分。

?
1
2
3
4
5
6
7
8
9
10
11
/// <summary>
/// 釘釘群機器人消息類型枚舉
/// </summary>
public enum MsgTypeEnum
{
 text,
 link,
 markdown,
 actionCard,
 feedCard
}

設計一個text類并給定一個屬性Content,在設計時我們喜歡使用帕斯卡命名法,但是釘釘接口卻不允許,如果不做一些處理,直接使用Content屬性將會調用不通接口,這點需要注意,使用Newtonjson提供的打包成json時用指定的名稱替換來滿足釘釘接口需求。

?
1
2
3
4
5
6
7
8
9
10
11
/// <summary>
/// 文本類型
/// </summary>
public class Text
{
 /// <summary>
 /// 文本內容
 /// </summary>
 [JsonProperty(PropertyName = "content")]
 public string Content { get; set; }
}

其次對指定人群做一個類的封裝,同樣需要處理其中的屬性在序列化時的替換名稱。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// @指定人
/// </summary>
public class At
{
 /// <summary>
 /// @的聯系人
 /// </summary>
 [JsonProperty(PropertyName = "atMobiles")]
 public List<string> AtMobiles { set; get; }
 
 /// <summary>
 /// 是否@所有人
 /// </summary>
 [JsonProperty(PropertyName = "isAtAll")]
 public bool IsAtAll { set; get; }
}

通過分析五種消息類型,其中的一些參數可以完成共用,對自定義釘釘機器人文檔的一系列挖掘后,確定了這幾個類和枚舉

Asp.Net Core對接釘釘群機器人的完整步驟記錄

接下來可以完成對機器人調用了并使用不同消息類型推送到釘釘群中。

三、完成對釘釘群機器人的調用

首先在ConfigureService方法中完成對HttpClientFactory的注入

Asp.Net Core對接釘釘群機器人的完整步驟記錄

本次直接在Asp.Net Core WebApi下完成機器人的調用,新建一個DingTalk的控制器,然后完成對IHttpClientFactory的注入工作,便開始接下來的服務調用了,對于釘釘的WebHook_Token的存放可以選擇配置文件或是如果只是嘗試,可以直接用一個變量保存即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <summary>
/// 發送釘釘消息接口
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class DingTalkController : ControllerBase
{
 
 private readonly IHttpClientFactory _httpClientFactory;
 
 public DingTalkController(IHttpClientFactory httpClientFactory)
 {
  _httpClientFactory = httpClientFactory;
 }
}

再次以text文本為例并完成文本消息的推送,建立一個action,用來發送文本消息,在其中完成對釘釘接口需要參數的組裝工作,最終使用統一的發送方法完成消息推送。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/// <summary>
/// 調用釘釘機器人發送文本內容
/// </summary>
/// <returns></returns>
[HttpGet]
[Route(nameof(TextContent))]
public async Task<ActionResult> TextContent()
{
 //消息類型
 var msgtype = MsgTypeEnum.text.ToString();
 
 //文本內容
 var text = new Text
 {
  Content = "看萬山紅遍,層林盡染;漫江碧透,百舸爭流@15675120617"
 };
 
 //指定目標人群
 var at = new At()
 {
  AtMobiles = new List<string>() { "15675120617" },
  IsAtAll = false
 };
 
 var response = await SendDingTalkMessage(new { msgtype, text, at });
 
 return Ok(response);
}

對于發送方法內需要根據釘釘文檔的一些要求完成設計,如文檔指明需要使用Post提交請求并使用UTF8編碼,我直接在控制器內新建了一個方法(盡管不太合理),首先對內容進行序列化并封裝,然后通過HttpClientFactory新建client并完成發送消息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <summary>
/// 執行發送消息
/// </summary>
/// <param name="sendMessage"></param>
/// <returns></returns>
private async Task<HttpResponseMessage> SendDingTalkMessage(object value)
{
 var sendMessage = JsonConvert.SerializeObject(value);
 
 var request = new HttpRequestMessage(HttpMethod.Post, WebHook_Token)
 {
  //釘釘文檔需指定UTF8編碼
  Content = new StringContent(sendMessage, Encoding.UTF8, "application/json")
 };
 
 var client = _httpClientFactory.CreateClient();
 var response = await client.SendAsync(request);
 
 return response;
}

啟動程序并通過url訪問控制器內的相應方法完成消息推送,注意各屬性的命名方式或通過特性轉換后的命名方式需要滿足釘釘接口文檔(文檔中FeedCard類型后兩個參數不太標準)。

Asp.Net Core對接釘釘群機器人的完整步驟記錄

倉庫地址:https://gitee.com/530521314/koInstance/tree/master/src/koInstance.WebApi

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/CKExp/p/10416897.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩欧美在线视频 | 中文久久 | 欧美成人免费在线 | 午夜精品久久久久久久久久久久 | 国产欧美精品一区二区色综合 | 国产精品久久久久一区二区三区 | 亚洲精品99| 91精品国产色综合久久不卡蜜臀 | 99国产精品久久久久久久成人热 | 麻豆91在线观看 | 亚洲国产精品久久久久秋霞蜜臀 | 先锋av在线资源 | 尤物在线观看网站 | 一级a性色生活片久久毛片 国产精品久久久久久久久久免费看 | 国产精品不卡一区 | 91精品国产一区二区 | 欧美午夜一区二区福利视频 | 午夜av影视 | 99爱在线观看 | 成人欧美一区二区三区视频xxx | 国产高清在线精品一区二区三区 | 色播一区二区 | 午夜精品网站 | 欧美日韩国产精品一区二区 | 免费级毛片 | 久久99精品国产麻豆宅宅 | 韩日精品视频 | 欧美大片在线观看 | 成人欧美一区二区三区视频xxx | 丝袜久久| 在线成人www免费观看视频 | 久久福利 | 国产精品永久免费视频 | 亚洲一级毛片 | 天天看天天爽 | 欧美成人精品高清视频在线观看 | 福利黄色 | 99精品视频一区二区三区 | 久久免费视频观看 | 国产精品成人一区二区三区夜夜夜 | 天堂中文网 |