最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net Core對(duì)接釘釘群機(jī)器人的完整步驟記錄

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

前言

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

  

一、釘釘群中建立機(jī)器人獲取WebHook地址

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

  

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

  

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

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

然后回車進(jìn)行測(cè)試,即刻收到群機(jī)器人推送的消息  

二、參考文檔完成基礎(chǔ)類的封裝并處理相關(guān)字段

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

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

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

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

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

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

/// <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ù)可以完成共用,對(duì)自定義釘釘機(jī)器人文檔的一系列挖掘后,確定了這幾個(gè)類和枚舉

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

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

首先在ConfigureService方法中完成對(duì)HttpClientFactory的注入

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

/// <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文本為例并完成文本消息的推送,建立一個(gè)action,用來發(fā)送文本消息,在其中完成對(duì)釘釘接口需要參數(shù)的組裝工作,最終使用統(tǒng)一的發(fā)送方法完成消息推送。

/// <summary>
/// 調(diào)用釘釘機(jī)器人發(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 = "看萬山紅遍,層林盡染;漫江碧透,百舸爭(zhēng)流@15675120617"
 };

 //指定目標(biāo)人群
 var at = new At()
 {
  AtMobiles = new List<string>() { "15675120617" },
  IsAtAll = false
 };

 var response = await SendDingTalkMessage(new { msgtype, text, at });

 return Ok(response);
}

對(duì)于發(fā)送方法內(nèi)需要根據(jù)釘釘文檔的一些要求完成設(shè)計(jì),如文檔指明需要使用Post提交請(qǐng)求并使用UTF8編碼,我直接在控制器內(nèi)新建了一個(gè)方法(盡管不太合理),首先對(duì)內(nèi)容進(jìn)行序列化并封裝,然后通過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;
}

啟動(dòng)程序并通過url訪問控制器內(nèi)的相應(yīng)方法完成消息推送,注意各屬性的命名方式或通過特性轉(zhuǎn)換后的命名方式需要滿足釘釘接口文檔(文檔中FeedCard類型后兩個(gè)參數(shù)不太標(biāo)準(zhǔn))。

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

總結(jié)

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

相關(guān)文章

  • .NET8中g(shù)RPC的使用方法詳解

    .NET8中g(shù)RPC的使用方法詳解

    gRPC是一種高性能、開源的遠(yuǎn)程過程調(diào)用(RPC)框架,基于 HTTP/2 協(xié)議,支持雙向流、頭部壓縮等特性,下面我們就來看看.NET8下gRPC的具體使用吧
    2025-03-03
  • .NET Core系列之MemoryCache 緩存選項(xiàng)

    .NET Core系列之MemoryCache 緩存選項(xiàng)

    這篇文章主要介紹了.NET Core系列之MemoryCache 緩存選項(xiàng),詳細(xì)的介紹一下 MSCache 中的 Options,由此來介紹一些 MSCache 中的內(nèi)部機(jī)制,感興趣的小伙伴們可以參考一下
    2018-08-08
  • asp.net2.0中css失效的解決方法

    asp.net2.0中css失效的解決方法

    經(jīng)常有人遇到ASP.NET 2.0(ASP.NET 1.x中可能是有效的)中CSS失效的問題,現(xiàn)將主要原因和解決方法羅列如下
    2014-01-01
  • .NET微信公眾號(hào)開發(fā)之準(zhǔn)備工作

    .NET微信公眾號(hào)開發(fā)之準(zhǔn)備工作

    本文是.NET微信公眾號(hào)開發(fā)系列文章的第一篇,主要給大家簡(jiǎn)單介紹下微信公眾號(hào)的一些操作,有需要的小伙伴可以參考下。
    2015-07-07
  • 一步一步asp.net ajax類別Tree生成

    一步一步asp.net ajax類別Tree生成

    關(guān)于類別樹的多級(jí)是一個(gè)剛接觸ajax和多級(jí)類別很頭痛的問題,針對(duì)那種商品種類繁多,級(jí)別層次多更是麻煩的問題,去年剛學(xué)asp.net,實(shí)驗(yàn)室的同學(xué)曾經(jīng)這樣做過,遞歸sql,現(xiàn)在看了驚心動(dòng)魄
    2012-05-05
  • 關(guān)于.NET Attribute在數(shù)據(jù)校驗(yàn)中的應(yīng)用教程

    關(guān)于.NET Attribute在數(shù)據(jù)校驗(yàn)中的應(yīng)用教程

    這篇文章主要給大家介紹了關(guān)于.NET Attribute在數(shù)據(jù)校驗(yàn)中的應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • ASP.NET?MVC使用Session會(huì)話保持表單狀態(tài)

    ASP.NET?MVC使用Session會(huì)話保持表單狀態(tài)

    這篇文章介紹了ASP.NET?MVC使用Session會(huì)話保持表單狀態(tài)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • C# CUR類實(shí)現(xiàn)代碼

    C# CUR類實(shí)現(xiàn)代碼

    C# CUR類 實(shí)現(xiàn)代碼,對(duì)于希望了解 cur類的朋友可以有所幫助。
    2009-06-06
  • .NET Core3.1發(fā)布(翻譯)

    .NET Core3.1發(fā)布(翻譯)

    這篇文章主要介紹了.NET Core3.1發(fā)布(翻譯),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • asp.net開發(fā)與web標(biāo)準(zhǔn)的沖突問題的一些常見解決方法

    asp.net開發(fā)與web標(biāo)準(zhǔn)的沖突問題的一些常見解決方法

    Visual Studio .net從2003到現(xiàn)在的2008,一路走來慢慢強(qiáng)大……從以前的vs2003能自動(dòng)改亂你的html代碼到現(xiàn)在在vs2008中都能直接對(duì)html代碼進(jìn)行w3c標(biāo)準(zhǔn)驗(yàn)證并提示了,非常不易。
    2009-02-02

最新評(píng)論

颍上县| 保山市| 景东| 宝清县| 方山县| 忻城县| 河东区| 玉田县| 明水县| 临漳县| 方山县| 红河县| 土默特左旗| 红河县| 柞水县| 承德市| 诸城市| 左权县| 临泽县| 泸州市| 康定县| 两当县| 吉木萨尔县| 乐亭县| 滦南县| 永丰县| 会理县| 全南县| 喀喇沁旗| 安化县| 合肥市| 加查县| 广元市| 临泽县| 盐城市| 苗栗县| 确山县| 福海县| 股票| 金乡县| 读书|