• C# markdown 实操(用于钉钉的消息通知)


    先上效果:

     再上代码(只有markdown的部分):

    StringBuilder content = new StringBuilder();
                content.Append("**销售订单系统提醒:**");
                content.Append("
    
    ");//换行
                content.Append("------"); //下划线
                content.Append("
    
    ");//换行            
                content.Append(txtSendContent.Text);
                content.Append("
    
      ");//多个
    只能换一行,加上一个空格即可辅助完成换行
                content.Append("
    
    ");
                content.Append("<br>"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
    
                var sr = m_DingDingHelper.SendActionCardMessageToUser("销售订单管理系统", content.ToString(), "查看详情", "https://ding-doc.dingtalk.com/", txtusesid.Text);
                

    DingDingHelper类自己封装的,仅用于参考,功能很少,大家见谅

    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace DingDingAPP
    {
        public class DingDingHelper
        {
            
            string appkey = "*****";
            string appsecret = "******";
            string agentid = "*****";  
            string corpId = "******";//企业号
            string AccessToken = String.Empty;
    
            #region 通过免登授权码和access_token获取用户的userid
            public string GetUserIdByCode(string code)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(code))
                    return "";
    
                try
                {
                    string AccessUrl = string.Format("https://oapi.dingtalk.com/user/getuserinfo?access_token={0}&code={1}", AccessToken, code);
                    //请求获取token  GET方式
                    Newtonsoft.Json.Linq.JToken json = Newtonsoft.Json.Linq.JToken.Parse(HttpHelper.HttpGet(AccessUrl, null));
                    return json["userid"].ToString();
                }
                catch (Exception ex)
                {
                    return "";
                }
            }
            #endregion
    
            #region 根据手机号获取用户id
            /// <summary>
            /// 根据手机号获取用户id
            /// </summary>
            /// <param name="phoneNumber">用户手机号</param>
            /// <returns></returns>
            public string GetUserIdByPhoneNumber(string phoneNumber)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(phoneNumber))
                    return "";
    
                string MessageUrl = String.Format("https://oapi.dingtalk.com/user/get_by_mobile?access_token={0}&mobile={1}", AccessToken, phoneNumber);
                
                try
                {
                    var sr = HttpHelper.HttpGet(MessageUrl, null);
                    //Newtonsoft.Json.Linq.JToken json = Newtonsoft.Json.Linq.JToken.Parse(sr);
                    return sr;// json["userid"].ToString();
                }
                catch (Exception ex)
                {
                    return "";
                }
                
            }
            #endregion
    
            #region 根据用户id获取用户详细信息
            /// <summary>
            /// 根据用户id获取用户详细信息
            /// </summary>
            /// <param name="userid">用户id</param>
            /// <returns></returns>
            public string GetUseInfoByUid(string userid)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(userid))
                    return "";
    
                try
                {
                    string AccessUrl = string.Format("https://oapi.dingtalk.com/user/get?access_token={0}&userid={1}", AccessToken, userid);
                    //请求获取token  GET方式
                    return HttpHelper.HttpGet(AccessUrl, null);               
                }
                catch (Exception ex)
                {
                    return "";
                }
            }
            #endregion
    
            #region 获取TOKEN
            public void GetToken()
            {
                if (string.IsNullOrWhiteSpace(AccessToken))
                {
                    string AccessUrl = string.Format("https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}", appkey, appsecret);
                    //请求获取token  GET方式
                    Newtonsoft.Json.Linq.JToken json = Newtonsoft.Json.Linq.JToken.Parse(HttpHelper.HttpGet(AccessUrl, null));
                    AccessToken = json["access_token"].ToString();
                }
            }
            #endregion
    
            #region 消息推送
            /// <summary>
            /// 文本消息推送(Text格式)
            /// </summary>
            /// <param name="text">推送内容</param>
            /// <param name="userid_list">用户id,多个用户用,隔开(如:123,456)</param>
            public string SendTextMessageToUser(string text,string userid_list)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(text)|| string.IsNullOrWhiteSpace(userid_list))
                    return "";
    
                string MessageUrl = String.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={0}", AccessToken);
                
    
                var json_req = SendCommonText(text, userid_list);
                //var json_req = SendCommonTextAndTitle("销售订单管理系统", content.ToString(), txtusesid.Text);
                //var json_req = SendCardMsg("销售订单管理系统", content.ToString(), "查看详情", "https://ding-doc.dingtalk.com/", txtusesid.Text);
    
                string jsonRequest = JsonConvert.SerializeObject(json_req);//将对象转换为json
                //POST请求 消息推送
                var sr = HttpHelper.HttpPost(MessageUrl, jsonRequest);
                return sr;
            }
    
            /// <summary>
            /// 文本消息推送(MarkDown格式)
            /// </summary>
            /// <param name="title">提醒用户的标题</param>
            /// <param name="text">提醒内容(支持markdown文本解析)</param>
            /// <param name="userid_list">用户id,多个用户用,隔开(如:123,456)</param>
            /// <returns></returns>
            public string SendMarkDownMessageToUser(string title,string text, string userid_list)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(text) || string.IsNullOrWhiteSpace(userid_list))
                    return "";
    
                string MessageUrl = String.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={0}", AccessToken);
    
    
                //var json_req = SendCommonText(text, userid_list);
                var json_req = SendCommonTextAndTitle(title, text, userid_list);
                //var json_req = SendCardMsg("销售订单管理系统", content.ToString(), "查看详情", "https://ding-doc.dingtalk.com/", txtusesid.Text);
    
                string jsonRequest = JsonConvert.SerializeObject(json_req);//将对象转换为json
                //POST请求 消息推送
                var sr = HttpHelper.HttpPost(MessageUrl, jsonRequest);
                return sr;
            }
    
            /// <summary>
            /// 文本消息推送(MarkDown格式)
            /// </summary>
            /// <param name="title">提醒用户的标题</param>
            /// <param name="text">提醒内容(支持markdown文本解析)</param>
            /// <param name="linkText">链接文本</param>
            /// <param name="linkUrl">链接地址</param>
            /// <param name="userid_list">用户id,多个用户用,隔开(如:123,456)</param>
            /// <returns></returns>
            public string SendActionCardMessageToUser(string title, string text,string linkText,string linkUrl ,string userid_list)
            {
                GetToken();
                if (string.IsNullOrWhiteSpace(AccessToken) || string.IsNullOrWhiteSpace(text)                 
                    || string.IsNullOrWhiteSpace(userid_list))
                    return "";
    
                string MessageUrl = String.Format("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={0}", AccessToken);
    
                var json_req = SendCardMsg(title, text, linkText, linkUrl, userid_list);
    
                string jsonRequest = JsonConvert.SerializeObject(json_req);//将对象转换为json
                //POST请求 消息推送
                var sr = HttpHelper.HttpPost(MessageUrl, jsonRequest);
                return sr;
            }
            #endregion
    
            #region 推送消息类型
            /// <summary>
            /// 推送普通文本内容
            /// </summary>
            /// <param name="content"></param>
            /// <param name="usesid"></param>
            /// <returns></returns>
            public object SendCommonText(string content, string usesid)
            {
                return new
                {
                    userid_list = usesid,  //接受推送userid,不同用户用|分割
                    //dept_id_list = "127577105",   //接受推送部门id
                    agent_id = agentid,//应用Id
                    msgtype = "text", //推送类型
                    msg = new
                    {
                        msgtype = "text",
                        text = new { content = content.ToString() }//内容text
    
                    }
                };
            }
            /// <summary>
            /// 推送markdown内容
            /// </summary>
            /// <param name="_title"></param>
            /// <param name="_content"></param>
            /// <param name="usesid"></param>
            /// <returns></returns>
            public object SendCommonTextAndTitle(string _title, string _content, string usesid)
            {
                return new
                {
                    userid_list = usesid,  //接受推送userid,不同用户用|分割
                    dept_id_list = "",   //接受推送部门id
                    agent_id = agentid,//应用Id                
                    msg = new
                    {
                        msgtype = "markdown",//推送类型
                        markdown = new
                        {
                            title = _title,
                            text = _content//内容text
                        }
                    }
                };
            }
            /// <summary>
            /// 推送action_card格式内容
            /// </summary>
            /// <param name="_title">标题</param>
            /// <param name="_content">内容</param>
            /// <param name="_single_title">链接标题</param>
            /// <param name="_single_url">链接地址</param>
            /// <param name="usesid"></param>
            /// <returns></returns>
            public object SendCardMsg(string _title, string _content, string _single_title, string _single_url, string usesid)
            {
                return new
                {
                    userid_list = usesid,  //接受推送userid,不同用户用|分割
                    //dept_id_list = "",   //接受推送部门id
                    agent_id = agentid,//应用Id               
                    msg = new
                    {
                        msgtype = "action_card",
                        action_card = new
                        {
                            title = _title,//提示信息
                            markdown = _content,
                            single_title = _single_title,
                            single_url = _single_url
                        }
                    }
                };
            }
    
            #endregion
        }
        
    }
  • 相关阅读:
    CDN内容交付网络学习
    mysql高可用架构了解
    coredump了解
    NTP协议了解
    mysql主从复制学习
    Go中json的marshal解析
    go基础系列~基础环境相关
    leetcode(c++)(背包问题)
    arcsin是反正弦。
    设计模式的六大原则。简称:SOLID
  • 原文地址:https://www.cnblogs.com/qiupiaohujie/p/13272498.html
Copyright © 2020-2023  润新知