先上效果:
再上代碼(只有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 } }