C# markdown 實操(用於釘釘的消息通知)


先上效果:

 

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

StringBuilder content = new StringBuilder();
            content.Append("**銷售訂單系統提醒:**");
            content.Append("\n\n");//換行
            content.Append("------"); //下划線
            content.Append("\n\n");//換行            
            content.Append(txtSendContent.Text);
            content.Append("\n\n  ");//多個\n只能換一行,加上一個空格即可輔助完成換行
            content.Append("\n\n");
            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
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM