欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年03月03日 11:13:54   作者:微笑刺客D  
這篇文章主要給大家介紹了關于Asp.Net Core對接釘釘群機器人的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

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

  

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

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

  

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

  

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

curl 'https://oapi.dingtalk.com/robot/send?access_token=cd1eb120c459ced6a65491af7b1eebbc84790fb672077a969bae8bb203aa1c52' \
 -H 'Content-Type: application/json' \
 -d '
 {"msgtype": "text", 
 "text": {
  "content": "我就是我, 是不一樣的煙火"
  }
 }'

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

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

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

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

/// <summary>
/// 釘釘群機器人消息類型枚舉
/// </summary>
public enum MsgTypeEnum
{
 text,
 link,
 markdown,
 actionCard,
 feedCard
}

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

/// <summary>
/// 文本類型
/// </summary>
public class Text
{
 /// <summary>
 /// 文本內(nèi)容
 /// </summary>
 [JsonProperty(PropertyName = "content")]
 public string Content { get; set; }
}

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

/// <summary>
/// @指定人
/// </summary>
public class At
{
 /// <summary>
 /// @的聯(lián)系人
 /// </summary>
 [JsonProperty(PropertyName = "atMobiles")]
 public List<string> AtMobiles { set; get; }

 /// <summary>
 /// 是否@所有人
 /// </summary>
 [JsonProperty(PropertyName = "isAtAll")]
 public bool IsAtAll { set; get; }
}

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

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

三、完成對釘釘群機器人的調(diào)用

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

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

/// <summary>
/// 發(fā)送釘釘消息接口
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class DingTalkController : ControllerBase
{
 private readonly string WebHook_Token = "https://oapi.dingtalk.com/robot/send?access_token=cd1eb120c459ced6a65491af7b1eebbc84790fb672077a969bae8bb203aa1c52";

 private readonly IHttpClientFactory _httpClientFactory;

 public DingTalkController(IHttpClientFactory httpClientFactory)
 {
  _httpClientFactory = httpClientFactory;
 }
}

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

/// <summary>
/// 調(diào)用釘釘機器人發(fā)送文本內(nèi)容
/// </summary>
/// <returns></returns>
[HttpGet]
[Route(nameof(TextContent))]
public async Task<ActionResult> TextContent()
{
 //消息類型
 var msgtype = MsgTypeEnum.text.ToString();

 //文本內(nèi)容
 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);
}

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

/// <summary>
/// 執(zhí)行發(fā)送消息
/// </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訪問控制器內(nèi)的相應方法完成消息推送,注意各屬性的命名方式或通過特性轉(zhuǎn)換后的命名方式需要滿足釘釘接口文檔(文檔中FeedCard類型后兩個參數(shù)不太標準)。

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

總結

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

您可能感興趣的文章:

相關文章

  • 淺析.net core 拋異常對性能影響

    淺析.net core 拋異常對性能影響

    在.net項目中使用自定義異常來處理業(yè)務很爽,但是又擔心大量拋業(yè)務異常存在性能問題,下面通過本文介紹.net core 拋異常對性能影響的求證之路,需要的朋友可以參考下
    2022-06-06
  • asp.net css控制打印功能方法實例

    asp.net css控制打印功能方法實例

    這篇文章介紹了asp.net css控制打印功能方法實例,有需要的可以參考一下
    2013-10-10
  • ASP.NET?Core在Task中使用IServiceProvider的問題解析

    ASP.NET?Core在Task中使用IServiceProvider的問題解析

    這篇文章主要介紹了解決ASP.NET?Core在Task中使用IServiceProvider的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • ASP.NET MVC生成靜態(tài)頁面的方法

    ASP.NET MVC生成靜態(tài)頁面的方法

    對于網(wǎng)站來說,生成純html靜態(tài)頁面除了有利于seo外,還可以減輕網(wǎng)站的負載能力和提高網(wǎng)站性能。本篇文章主要介紹了ASP.NET MVC生成靜態(tài)頁面的方法,有興趣的可以了解一下。
    2017-03-03
  • asp.net采集網(wǎng)頁圖片的具體方法

    asp.net采集網(wǎng)頁圖片的具體方法

    采集網(wǎng)頁上圖片的主要關鍵是在怎么解析出頁面代碼里那些img標簽的src屬性
    2013-06-06
  • asp.net Cookie值中文亂碼問題解決方法

    asp.net Cookie值中文亂碼問題解決方法

    cookie里面不能寫中文,是由于cookie先天的編碼方式造成的,所以有必要存在一種中間的編碼方式:URLEncode是最好的選擇,感興趣的你可千萬不要錯過了哈,或許本文提供的知識點對你學習cookie有所幫助
    2013-02-02
  • Asp.Net中索引器的用法分析

    Asp.Net中索引器的用法分析

    這篇文章主要介紹了Asp.Net中索引器的用法,以實例形式詳細分析了Asp.Net中索引器的定義、屬性與具體使用方法,并附帶說明了相關的注意事項,在asp.net項目開發(fā)中有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • Asp.Net Core添加請求頭自定義認證的示例

    Asp.Net Core添加請求頭自定義認證的示例

    這篇文章主要介紹了Asp.Net Core添加請求頭自定義認證的示例,幫助大家更好的理解和學習使用.net技術,感興趣的朋友可以了解下
    2021-04-04
  • ASP.NET Core擴展庫的相關功能介紹

    ASP.NET Core擴展庫的相關功能介紹

    這篇文章主要介紹了ASP.NET Core擴展庫的相關功能,幫助大家更好的理解和學習使用.Net技術,感興趣的朋友可以了解下
    2021-03-03
  • 基于自定義Unity生存期模型PerCallContextLifeTimeManager的問題

    基于自定義Unity生存期模型PerCallContextLifeTimeManager的問題

    本篇文章小編將為大家介紹,基于自定義Unity生存期模型PerCallContextLifeTimeManager的問題。需要的朋友參考下
    2013-04-04

最新評論