钉钉相关提醒接口

dingding.cs 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Serialization;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Net.Http;
  7. using System.Net.Http.Headers;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace ddAlter.Tools
  11. {
  12. public class dingding
  13. {
  14. private readonly IHttpClientFactory _httpClientFactory;
  15. ///<summary>
  16. ///调用webhook
  17. ///</summary>
  18. ///<typeparamname="T"></typeparam>
  19. ///<param name="url">webhook地址</param>
  20. ///<param name="data">消息</param>
  21. ///<returns></returns>
  22. public static async Task SendWebhooks<T>(string url, T data) where T : class
  23. {
  24. JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() => new JsonSerializerSettings()
  25. {
  26. NullValueHandling = NullValueHandling.Ignore,
  27. ContractResolver = new CamelCasePropertyNamesContractResolver()
  28. });
  29. var jsonData = JsonConvert.SerializeObject(data);
  30. using (var httpClient = new HttpClient())
  31. {
  32. var content = new StringContent(jsonData);
  33. content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
  34. var result = await httpClient.PostAsync(url, content);
  35. result.EnsureSuccessStatusCode();
  36. }
  37. }
  38. /// <summary>
  39. /// 执行发送消息
  40. /// </summary>
  41. /// <param name="sendMessage"></param>
  42. /// <returns></returns>
  43. public async Task<HttpResponseMessage> SendDingTalkMessage(string url, object value)
  44. {
  45. var sendMessage = JsonConvert.SerializeObject(value);
  46. var request = new HttpRequestMessage(HttpMethod.Post, url)
  47. {
  48. //钉钉文档需指定UTF8编码
  49. Content = new StringContent(sendMessage, Encoding.UTF8, "application/json")
  50. };
  51. var client = _httpClientFactory.CreateClient();
  52. var response = await client.SendAsync(request);
  53. return response;
  54. }
  55. }
  56. }