我發了個朋友圈,Swagger真他媽的牛B,解放了開發API的碼農,麻麻再也不用擔心我們寫API文檔耽誤回家吃飯了。
/// <summary> /// 發送釘釘消息 /// </summary> /// <param name="toUser">Employee的userid,多個使用|分隔</param> /// <param name="title">標題</param> /// <param name="content">發送內容</param> /// <param name="sourceUrl">消息向導地址</param> /// <returns></returns> private ApiResult SendCardMessageToEmployee(string toUser, string title, string content, string sourceUrl) { var result = new ApiResult { Success = false, ResponseDatetime = DateTime.Now.ToString(), ResultMessage = "操作失敗!", ResultObject = null }; try { toUser = toUser.Trim('|'); string JSONData = "{\"touser\":\"" + toUser + "\",\"toparty\":\"\",\"agentid\":\"" + _settings.Value.sendmessage_agentid + "\",\"msgtype\":\"action_card\",\"action_card\":{\"title\":\"" + title + "\",\"markdown\":\"<font size=7 face=\'黑體\'>DingTalk中間件提醒: </font> \n \n " + content + "\r \n " + "\r \n " + "\r \n " + DateTime.Now.ToString() + "\",\"single_title\": \"查看詳情\",\"single_url\": \"" + sourceUrl + "\"}}"; var access_token = GetAccessToke(); var tokenObj = access_token.ResultObject as AccessToken; string url = "https://oapi.dingtalk.com/message/send?access_token=" + tokenObj.access_token; string response = GetResponseData(JSONData, url); result.ResultObject = response; result.Success = string.IsNullOrEmpty(response); result.ResultMessage = "API調用成功!Requst Url:[" + url + "],Content:[" + JSONData + "]"; } catch (Exception ex) { result.ResultObject = ex; _logger.LogError(ex, ex.Message, new object[] { }); } return result; } /// <summary> /// 發送釘釘消息 /// </summary> /// <param name="toUser">Employee的userid,多個使用|分隔</param> /// <param name="content">發送內容</param> /// <param name="sourceUrl">發送內容</param> /// <returns></returns> private ApiResult SendMediaMessageToEmployee(string toUser, string content, string sourceUrl) { var result = new ApiResult { Success = false, ResponseDatetime = DateTime.Now.ToString(), ResultMessage = "操作失敗!", ResultObject = null }; try { toUser = toUser.Trim('|'); string JSONData = "{\"touser\":\"" + toUser + "\",\"toparty\":\"\",\"agentid\":\"" + _settings.Value.sendmessage_agentid + "\",\"" + content + ",\"single_title\": \"查看詳情\",\"single_url\": \"" + sourceUrl + "\"}}"; var access_token = GetAccessToke(); var tokenObj = access_token.ResultObject as AccessToken; string url = "https://oapi.dingtalk.com/message/send?access_token=" + tokenObj.access_token; string response = GetResponseData(JSONData, url); result.ResultObject = response; result.Success = string.IsNullOrEmpty(response); result.ResultMessage = "API調用成功!Requst Url:[" + url + "],Content:[" + JSONData + "]"; } catch (Exception ex) { result.ResultObject = ex; _logger.LogError(ex, ex.Message, new object[] { }); } return result; } /// <summary> /// 給指定員工發送釘釘消息1 /// </summary> /// <param name="userid">指定員工的職員ID</param> /// <param name="title">標題</param> /// <param name="content">發送內容</param> /// <param name="sourceUrl">消息向導地址</param> /// <returns></returns> [HttpGet] [HttpPost] public ApiResult SendDingTalkMessage(string userid, string title, string content, string sourceUrl = "http://www.cquni.com") { if (string.IsNullOrEmpty(title)) title = "通知"; var result = new ApiResult { Success = false, ResponseDatetime = DateTime.Now.ToString(), ResultMessage = "操作失敗!", ResultObject = null }; try { var rs = SendCardMessageToEmployee(userid, title, content, sourceUrl); result.Success = rs.Success; result.ResultMessage = rs.ResultMessage; result.ResultObject = rs.ResultObject; } catch (Exception ex) { result.ResultObject = ex; } return result; }
/// <summary> /// 給指定員工發送釘釘消息2 /// </summary> /// <param name="departmentName">部門名稱</param> /// <param name="employeeName">人員姓名</param> /// <param name="title">消息標題</param> /// <param name="content">消息內容</param> /// <param name="sourceUrl">url</param> /// <returns></returns> [HttpGet] [HttpPost] public ApiResult SendDingTalkMessageExt(string departmentName, string employeeName, string title, string content, string sourceUrl = "http://www.cquni.com") { var result = new ApiResult { Success = false, ResponseDatetime = DateTime.Now.ToString(), ResultMessage = "操作失敗!", ResultObject = null }; if (string.IsNullOrEmpty(title)) title = "通知"; var deptment = GetDepartmentInfo().department; if (deptment != null && deptment.Count > 0) { var currDept = deptment.Where(d => d.name.Contains(departmentName)).FirstOrDefault(); if (currDept == null) { result.ResultMessage = "獲取人員的部門信息出錯,輸入部門名稱:" + departmentName; } else { var employeeList = GetDepartmentEmployeeList(currDept).userlist; if (employeeList != null && employeeList.Count > 0) { var currentEmp = employeeList.Where(e => e.name.Contains(employeeName)).FirstOrDefault(); try { var rs = SendCardMessageToEmployee(currentEmp.userid, title, content, sourceUrl); return rs; } catch (Exception ex) { _logger.LogError(ex.Message, new object[] { ex, ex.InnerException }); } } else { result.ResultMessage = string.Format("很奇怪,這個部門'{0}'一個人也沒有!", departmentName); } } } else { result.ResultMessage = "獲取公司部門信息出錯!"; } return result; } /// <summary> /// 給指定員工發送釘釘消息(支持圖文,文件,圖片等格式) /// </summary> /// <param name="departmentName">部門名稱</param> /// <param name="employeeName">人員姓名</param> /// <param name="mediaContent">消息內容 eg: "msgtype": "voice","voice": {"media_id": "MEDIA_ID","duration": "10" } /// 格式說明請看釘釘官網文檔 https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup </param> /// <param name="sourceUrl"></param> /// <returns></returns> [HttpGet] [HttpPost] public ApiResult SendDingTalkMediaMessage(string departmentName, string employeeName, string mediaContent, string sourceUrl = "http://www.cquni.com") { var result = new ApiResult { Success = false, ResponseDatetime = DateTime.Now.ToString(), ResultMessage = "操作失敗!", ResultObject = null }; var deptment = GetDepartmentInfo().department; if (deptment != null && deptment.Count > 0) { var currDept = deptment.Where(d => d.name.Contains(departmentName)).FirstOrDefault(); if (currDept == null) { result.ResultMessage = "獲取人員的部門信息出錯,輸入部門名稱:" + departmentName; } else { var employeeList = GetDepartmentEmployeeList(currDept).userlist; if (employeeList != null && employeeList.Count > 0) { var currentEmp = employeeList.Where(e => e.name.Contains(employeeName)).FirstOrDefault(); try { var rs = SendMediaMessageToEmployee(currentEmp.userid, mediaContent, sourceUrl); return rs; } catch (Exception ex) { _logger.LogError(ex.Message, new object[] { ex, ex.InnerException }); } } else { result.ResultMessage = string.Format("很奇怪,這個部門'{0}'一個人也沒有!", departmentName); } } } else { result.ResultMessage = "獲取公司部門信息出錯!"; } return result; }