public GridPage <DingClassify> addNews([FromBody] DingNew newsDetail, int classifyId) { var ress = new GridPage <DingClassify>() { code = ResCode.Success }; //using (var mdReader = new StringReader(newsDetail.OriginalContent)) //{ // using (var html = new StringWriter()) // { // CommonMark.CommonMarkConverter.Convert(mdReader, html); // newsDetail.HtmlContent = html.ToString(); // } //} ress = DataBaseHelper <DingClassify> .Get(_uowProvider, ress, classifyId, x => x.Include(a => a.DingNews)); ress.data.DingNews.Add(newsDetail); ress = DataBaseHelper <DingClassify> .Create(_uowProvider, ress.data, ress, true); if (newsDetail.Status == 1) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain obj1 = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); obj1.Msgtype = "link"; OapiMessageCorpconversationAsyncsendV2Request.LinkDomain obj2 = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain(); obj2.PicUrl = newsDetail.Image; obj2.MessageUrl = "eapp://pages/detail/index?id=" + ress.data.Id; obj2.Text = newsDetail.SubTitle; obj2.Title = newsDetail.Title; obj1.Link = obj2; var res = DingTalkHelper.PushMessage("1814645351680963", null, "", obj1); } return(ress); }
/// <summary> /// 发送Ding消息 /// </summary> /// <param name="recvs"></param> /// <param name="msgContent"></param> /// <returns></returns> public bool SendDingMsg(string recvs, string msgContent) { if (string.IsNullOrEmpty(recvs) || string.IsNullOrEmpty(msgContent)) { return(false); } IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.UseridList = recvs; request.AgentId = agentid; request.ToAllUser = false; OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "text"; msg.Text = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain(); msg.Text.Content = msgContent; request.Msg_ = msg; OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, getDingAccessToken()); //logger.LogInformation(fastJSON.JSON.ToJSON(response)); return(response.IsError); }
/// <summary> /// 发送OA消息 /// </summary> /// <param name="messageUrl"></param> /// <param name="form"></param> /// <param name="pcMessageUrl"><see cref=" https://ding-doc.dingtalk.com/doc#/serverapi2/iat9q8"/> </param> /// <returns></returns> public DingMessage AddOA(Dictionary <string, string> form, string messageUrl = "", string pcMessageUrl = "") { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "oa"; //form var domains = new List <OapiMessageCorpconversationAsyncsendV2Request.FormDomain>(); foreach (var item in form) { domains.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = item.Key, Value = item.Value }); } msg.Oa = new OapiMessageCorpconversationAsyncsendV2Request.OADomain { MessageUrl = messageUrl, PcMessageUrl = pcMessageUrl, Head = new OapiMessageCorpconversationAsyncsendV2Request.HeadDomain(), Body = new OapiMessageCorpconversationAsyncsendV2Request.BodyDomain { Form = domains } }; AddMsg(msg); return(this); }
/// <summary> /// 发送文本消息 /// </summary> /// <param name="accessToken"></param> /// <param name="agentId">微应用agentId</param> /// <param name="sendtoType">接收者类型</param> /// <param name="userList">接收者的用户userid列表,最大列表长度:20</param> /// <param name="textmsg">文本消息</param> /// <returns></returns> public static SendWorkMessageResult SendMessagebyText(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, string textmsg) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "text"; msg.Text = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain(); msg.Text.Content = textmsg; return(SendMessage(accessToken, agentId, sendtoType, userList, msg)); }
/// <summary> /// 发送文件消息 /// </summary> /// <param name="accessToken"></param> /// <param name="agentId">微应用agentId</param> /// <param name="sendtoType">接收者类型</param> /// <param name="userList">接收者的用户userid列表,最大列表长度:20</param> /// <param name="media_id">媒体文件id。最大10MB</param> /// <returns></returns> public static SendWorkMessageResult SendMessagebyFile(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, string media_id) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "file"; msg.File = new OapiMessageCorpconversationAsyncsendV2Request.FileDomain(); msg.File.MediaId = media_id; return(SendMessage(accessToken, agentId, sendtoType, userList, msg)); }
/// <summary> /// 发送Markdown富文本消息 /// </summary> /// <param name="accessToken"></param> /// <param name="title">首屏会话透出的展示内容</param> /// <param name="text">markdown格式的富文本消息</param> /// <returns></returns> public static SendWorkMessageResult SendMessagebyMarkdown(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, string title, string text) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "markdown"; msg.Markdown = new OapiMessageCorpconversationAsyncsendV2Request.MarkdownDomain(); msg.Markdown.Title = title; msg.Markdown.Text = text; return(SendMessage(accessToken, agentId, sendtoType, userList, msg)); }
/// <summary> /// 发送文件 /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public DingMessage AddFile(string mediaId) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "file"; msg.File = new OapiMessageCorpconversationAsyncsendV2Request.FileDomain() { MediaId = mediaId }; AddMsg(msg); return(this); }
/// <summary> /// 发送链接消息 /// </summary> /// <param name="accessToken"></param> /// <param name="agentId">微应用agentId</param> /// <param name="sendtoType">接收者类型</param> /// <param name="userList">接收者的用户userid列表,最大列表长度:20</param> /// <param name="title">标题</param> /// <param name="text">描述文本</param> /// <param name="picUrl">图片地址</param> /// <param name="linkUrl">链接地址</param> /// <returns></returns> public static SendWorkMessageResult SendMessagebyLink(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, string title, string text, string picUrl, string linkUrl) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "link"; msg.Link = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain(); msg.Link.Title = title; msg.Link.Text = text; msg.Link.PicUrl = picUrl; msg.Link.MessageUrl = linkUrl; return(SendMessage(accessToken, agentId, sendtoType, userList, msg)); }
/// <summary> /// 发送语音 /// </summary> /// <param name="mediaId"></param> /// <param name="duration"></param> /// <returns></returns> public DingMessage AddVoice(string mediaId, string duration) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "voice"; msg.Voice = new OapiMessageCorpconversationAsyncsendV2Request.VoiceDomain { Duration = duration, MediaId = mediaId }; AddMsg(msg); return(this); }
/// <summary> /// 发送文本消息 /// </summary> /// <param name="content"></param> public DingMessage AddText(string content) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "text"; //消息体 msg.Text = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain() { Content = content }; AddMsg(msg); return(this); }
/// <summary> /// 发送图片 /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public DingMessage AddImage(string mediaId) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "image"; //消息体 msg.Image = new OapiMessageCorpconversationAsyncsendV2Request.ImageDomain() { MediaId = mediaId }; AddMsg(msg); return(this); }
/// <summary> /// 发送链接消息 /// </summary> /// <param name="messageUrl"></param> /// <param name="picUrl"></param> /// <param name="title"></param> /// <param name="text"></param> /// <returns></returns> public DingMessage AddLink(string messageUrl, string picUrl, string title, string text) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "link"; msg.Link = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain { MessageUrl = messageUrl, PicUrl = picUrl, Text = text, Title = title }; AddMsg(msg); return(this); }
/// <summary> /// 发送卡片消息ActionCard /// </summary> /// <param name="accessToken"></param> /// <param name="agentId">微应用agentId</param> /// <param name="sendtoType">接收者类型</param> /// <param name="userList">接收者的用户userid列表,最大列表长度:20 /// <param name="title">标题</param> /// <param name="text">markdown格式的消息</param> /// <param name="linkTitle">链接标题</param> /// <param name="linkUrl">连接地址</param> /// <returns></returns> public static SendWorkMessageResult SendMessagebyActionCard(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, string title, string text, string linkTitle, string linkUrl) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "action_card"; msg.ActionCard = new OapiMessageCorpconversationAsyncsendV2Request.ActionCardDomain(); msg.ActionCard.Title = title; msg.ActionCard.Markdown = text; if (!string.IsNullOrEmpty(linkTitle) && !string.IsNullOrEmpty(linkUrl)) { msg.ActionCard.SingleTitle = linkTitle; msg.ActionCard.SingleUrl = linkUrl; } return(SendMessage(accessToken, agentId, sendtoType, userList, msg)); }
public GridPage <DingNew> editNew([FromBody] DingNew newsDetail, int classifyId) { var res = new GridPage <DingClassify>() { code = ResCode.Success }; var ress = new GridPage <DingNew>() { code = ResCode.Success }; res = DataBaseHelper <DingClassify> .Get(_uowProvider, res, classifyId, x => x.Include(a => a.DingNews)); var model = res.data.DingNews.Where(a => a.Id == newsDetail.Id).FirstOrDefault(); if (model != null) { //model.Image = newsDetail.Image; //model.OriginalContent = newsDetail.OriginalContent; //model.Status = newsDetail.Status; //model.Title = newsDetail.Title; //model.UpdateTime = DateTime.Now; //model.HtmlContent = newsDetail.HtmlContent; //model.Editer = newsDetail.Editer; //model.SubTitle = newsDetail.SubTitle; newsDetail.DingClassify = res.data; newsDetail.CreateTime = model.CreateTime; newsDetail.UpdateTime = DateTime.Now; if (newsDetail.Status == 1) { OapiMessageCorpconversationAsyncsendV2Request.MsgDomain obj1 = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); obj1.Msgtype = "link"; OapiMessageCorpconversationAsyncsendV2Request.LinkDomain obj2 = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain(); obj2.PicUrl = newsDetail.Image; obj2.MessageUrl = "eapp://pages/detail/index?id=" + res.data.Id; obj2.Text = newsDetail.SubTitle; obj2.Title = newsDetail.Title; obj1.Link = obj2; var result = DingTalkHelper.PushMessage("1814645351680963", null, "", obj1); } ress = DataBaseHelper <DingNew> .Edit(_uowProvider, newsDetail, ress); } else { ress.code = ResCode.Error; ress.msg = "记录不存在"; } return(ress); }
public JObject SendText(string userid, string content) { var msgContent = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain { Content = content }; var msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain { Msgtype = "text", Text = msgContent }; return(SendWorkMsg(userid, msg)); }
public JObject SendLink(string userid, string messageUrl, string picUrl, string title, string text) { var msgContent = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain() { MessageUrl = messageUrl, PicUrl = picUrl, Title = title, Text = text }; var msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain { Msgtype = "link", Link = msgContent }; return(SendWorkMsg(userid, msg)); }
private void AddMsg(OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg) { if (!_isQueue) { if (_list != null && _list.Count > 0) { return; } } ////实例化请求 var request = new OapiMessageCorpconversationAsyncsendV2Request(); ////接受消息人员 request.UseridList = _userList; ////微应用凭证 request.AgentId = base.AgentId; ////是否发送给企业所有人 request.ToAllUser = false; //消息内容 request.Msg_ = msg; _list.Add(request); }
//private void DingTalkOAuth(string accessToken) //{ // IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get"); // OapiUserGetRequest req = new OapiUserGetRequest(); // req.Userid = "userid1"; // req.SetHttpMethod("GET"); // OapiUserGetResponse rsp = client.Execute(req, accessToken); //} /// <summary> /// 发送工作通知 /// </summary> /// <param name="userList"></param> /// <param name="content"></param> /// <returns></returns> public static bool sentMessageToUser(string userList, string content) { DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.UseridList = userList; request.AgentId = Convert.ToInt64(agentid); request.ToAllUser = false; request.SetHttpMethod("POST"); OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "text"; msg.Text = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain(); msg.Text.Content = content; request.Msg_ = msg; string accessToken = GetDingTalkAccessToken().AccessToken; OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, accessToken); return(!response.IsError); //return getSentMessageResult(response.TaskId); }
/// <summary> /// 钉钉发送OA模板消息 /// </summary> /// <param name="agentid">微应用id</param> /// <param name="userlist">推送指定人员多个用,分隔</param> /// <param name="accessToken">token</param> /// <param name="content"></param> /// <param name="keys">OA内容body字典集合</param> /// <returns></returns> public string Message(long agentid, string userlist, string accessToken, string content, Dictionary <string, string> keys) { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.UseridList = userlist; request.AgentId = agentid; request.ToAllUser = false; OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msg.Msgtype = "oa"; var domains = new List <OapiMessageCorpconversationAsyncsendV2Request.FormDomain>(); //body foreach (var item in keys) { domains.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain { Key = item.Key, Value = item.Value }); } //头部默认值 msg.Oa = new OapiMessageCorpconversationAsyncsendV2Request.OADomain { MessageUrl = "www.baidu.com", Head = new OapiMessageCorpconversationAsyncsendV2Request.HeadDomain(), Body = new OapiMessageCorpconversationAsyncsendV2Request.BodyDomain { Form = domains } }; request.Msg_ = msg; OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, accessToken); return(response.Body); }
//// /** * 同一个微应用相同消息内容同一个用户一天只能接收一次,重复发送会发送成功但用户接收不到。 * 该接口是异步发送消息,接口返回成功并不表示用户收到消息,需要通过“查询工作通知消息的发送结果”接口查询是否给用户发送成功。 */ /// <summary> /// 发送工作消息 /// </summary> /// <param name="parameters"></param> /// <returns></returns> public static ResponseParameters SendWorkNotificationMessage(RequestParameters parameters) { try { log.Info("发送工作消息"); DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); log.Info("UseridList:" + parameters.Userid_list + ";AgentId:" + parameters.Agent_id + ";ToAllUser:"******"text"; msg.Text = text; request.Msg_ = msg; log.Info("发送Text消息:" + parameters.Message); break; case SendMsgType.image: OapiMessageCorpconversationAsyncsendV2Request.ImageDomain image = new OapiMessageCorpconversationAsyncsendV2Request.ImageDomain(); image.MediaId = parameters.MediaId; msg.Msgtype = "image"; msg.Image = image; request.Msg_ = msg; log.Info("发送image:" + parameters.MediaId); break; case SendMsgType.file: OapiMessageCorpconversationAsyncsendV2Request.FileDomain file = new OapiMessageCorpconversationAsyncsendV2Request.FileDomain(); file.MediaId = parameters.MediaId; msg.Msgtype = "file"; msg.File = file; request.Msg_ = msg; log.Info("发送file:" + parameters.MediaId); break; case SendMsgType.link: OapiMessageCorpconversationAsyncsendV2Request.LinkDomain link = new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain(); link.Title = parameters.Title; link.Text = parameters.Text; link.MessageUrl = parameters.MessageUrl; link.PicUrl = parameters.PicUrl; msg.Link = link; msg.Msgtype = "link"; request.Msg_ = msg; log.Info("发送link:Title" + parameters.Title); break; case SendMsgType.markdown: OapiMessageCorpconversationAsyncsendV2Request.MarkdownDomain markdown = new OapiMessageCorpconversationAsyncsendV2Request.MarkdownDomain(); markdown.Text = parameters.Text; markdown.Title = parameters.Title; msg.Msgtype = "markdown"; msg.Markdown = markdown; request.Msg_ = msg; break; case SendMsgType.action_card: OapiMessageCorpconversationAsyncsendV2Request.ActionCardDomain actionCard = new OapiMessageCorpconversationAsyncsendV2Request.ActionCardDomain(); actionCard.Title = parameters.Title; actionCard.Markdown = parameters.Markdown; actionCard.SingleTitle = parameters.SingleTitle; actionCard.SingleUrl = parameters.SingleUrl; msg.ActionCard = actionCard; msg.Msgtype = "action_card"; request.Msg_ = msg; break; case SendMsgType.oa: OapiMessageCorpconversationAsyncsendV2Request.OADomain oA = new OapiMessageCorpconversationAsyncsendV2Request.OADomain(); OapiMessageCorpconversationAsyncsendV2Request.HeadDomain head = new OapiMessageCorpconversationAsyncsendV2Request.HeadDomain(); OapiMessageCorpconversationAsyncsendV2Request.BodyDomain body = new OapiMessageCorpconversationAsyncsendV2Request.BodyDomain(); head.Text = parameters.Text; body.Content = parameters.Message; oA.Head = head; oA.Body = body; msg.Oa = oA; msg.Msgtype = "oa"; request.Msg_ = msg; break; default: break; } OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, Get_Access_Token()); log.Info("请求完成" + response.ToString()); return(new ResponseParameters() { ErroCode = response.Errcode, ErroMsg = response.Errmsg, TaskId = response.TaskId }); } catch (Exception ex) { return(new ResponseParameters() { ErroCode = -1, ErroMsg = ex.Message }); } }
/// <summary> /// 发送消息 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public static string SendMessage(string agentId, string accessToken, string title, string body, string user) { try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.UseridList = user;// GetUserIdByPhone("15918514353", accessToken); request.AgentId = long.Parse(agentId); request.ToAllUser = false; OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msg = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); //msg.Msgtype = "text"; //msg.Text = new OapiMessageCorpconversationAsyncsendV2Request.TextDomain(); //msg.Text.Content = "test123"; //request.Msg_ = msg; //msg.Msgtype = "image"; //msg.Image = (new OapiMessageCorpconversationAsyncsendV2Request.ImageDomain()); //msg.Image.MediaId = "@lADOdvRYes0CbM0CbA"; //request.Msg_ = msg; //msg.Msgtype = "file"; //msg.File = (new OapiMessageCorpconversationAsyncsendV2Request.FileDomain()); //msg.File.MediaId = "@lADOdvRYes0CbM0CbA"; //request.Msg_ = msg; //msg.Msgtype = "link"; //msg.Link = (new OapiMessageCorpconversationAsyncsendV2Request.LinkDomain()); //msg.Link.Title = "test"; //msg.Link.Text = "test"; //msg.Link.MessageUrl = "https://www.baidu.com"; //msg.Link.PicUrl = "https://www.baidu.com"; //request.Msg_ = msg; //msg.Msgtype = "markdown"; //msg.Markdown = (new OapiMessageCorpconversationAsyncsendV2Request.MarkdownDomain()); //msg.Markdown.Text = "##### text"; //msg.Markdown.Title = "### Title"; //request.Msg_ = msg; //msg.Oa = (new OapiMessageCorpconversationAsyncsendV2Request.OADomain()); //msg.Oa.Head = (new OapiMessageCorpconversationAsyncsendV2Request.HeadDomain()); //msg.Oa.Head.Text = title; //msg.Oa.Body = (new OapiMessageCorpconversationAsyncsendV2Request.BodyDomain()); //msg.Oa.Body.Content = body; //msg.Oa.MessageUrl = "http://www.fxlweb.com/Web2018/DingLogin.aspx"; //msg.Oa.PcMessageUrl = "http://www.fxlweb.com/Web2018/DingLogin.aspx"; //msg.Msgtype = "oa"; //request.Msg_ = msg; msg.ActionCard = (new OapiMessageCorpconversationAsyncsendV2Request.ActionCardDomain()); msg.ActionCard.Title = title; msg.ActionCard.Markdown = body; msg.ActionCard.SingleTitle = "访问网站"; msg.ActionCard.SingleUrl = "http://www.fxlweb.com/Web2018/DingLogin.aspx"; msg.Msgtype = "action_card"; request.Msg_ = msg; OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, accessToken); log.Info("SendMessage: " + response.Body); return(response.Body); } catch (Exception ex) { log.Info(ex); return(""); } }
static void Main(string[] args) { //获取到AccessToken获取AccessToken需要Appkey和Appsecret,请求是GET DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); OapiGettokenRequest request = new OapiGettokenRequest(); request.Appkey = appKey; //Appkey request.Appsecret = appSecret; //Appsecret request.SetHttpMethod("GET"); OapiGettokenResponse response = client.Execute(request); //获取到AccessToken accessToken = response.AccessToken; // 创建员工 DefaultDingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/create"); OapiUserCreateRequest request1 = new OapiUserCreateRequest(); request1.Userid = "zhangsan"; request1.Mobile = "16657119236"; request1.Email = "*****@*****.**"; request1.Name = "张三"; List <long> departments1 = new List <long>(); departments1.Add(1L); request1.Department = JSON.ToJSON(departments1); OapiUserCreateResponse response1 = client1.Execute(request1, accessToken); Console.WriteLine("创建员工:"); Console.WriteLine(response1.Body); Console.WriteLine(); // 删除员工 DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/delete"); OapiUserDeleteRequest request2 = new OapiUserDeleteRequest(); request2.Userid = "zhangsan"; request2.SetHttpMethod("GET"); OapiUserDeleteResponse response2 = client2.Execute(request2, accessToken); Console.WriteLine("删除员工:"); Console.WriteLine(response2.Body); Console.WriteLine(); // 获取用户信息 DefaultDingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get"); OapiUserGetRequest request3 = new OapiUserGetRequest(); request3.Userid = userId; request3.SetHttpMethod("GET"); OapiUserGetResponse response3 = client3.Execute(request3, accessToken); Console.WriteLine("获取用户信息:"); Console.WriteLine(response3.Body); Console.WriteLine(); // 获取管理员信息 DefaultDingTalkClient client4 = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get_admin"); OapiUserGetAdminRequest request4 = new OapiUserGetAdminRequest(); request4.SetHttpMethod("GET"); OapiUserGetAdminResponse response4 = client4.Execute(request4, accessToken); Console.WriteLine("获取管理员信息:"); Console.WriteLine(response4.Body); Console.WriteLine(); // 创建角色 DefaultDingTalkClient client5 = new DefaultDingTalkClient("https://oapi.dingtalk.com/role/add_role"); OapiRoleAddRoleRequest request5 = new OapiRoleAddRoleRequest(); request5.RoleName = "Test"; request5.GroupId = groupId; OapiRoleAddRoleResponse response5 = client5.Execute(request5, accessToken); Console.WriteLine("创建角色:"); Console.WriteLine(response5.Body); Console.WriteLine(); //更新角色,有bug,提示需要修改为GET,修改后依然报错称缺少CorId和APPkey,但是新版本小程序已经没有CorId了。 DefaultDingTalkClient client6 = new DefaultDingTalkClient("https://oapi.dingtalk.com/role/update_role"); OapiRoleUpdateRoleRequest request6 = new OapiRoleUpdateRoleRequest(); request6.RoleName = "AnyThing"; request6.RoleId = 1; request6.SetHttpMethod("GET"); OapiRoleUpdateRoleResponse response6 = client.Execute(request6, accessToken); Console.WriteLine("更新角色"); Console.WriteLine(response6.Body); Console.WriteLine(); // 删除角色 DefaultDingTalkClient client7 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/role/deleterole"); OapiRoleDeleteroleRequest request7 = new OapiRoleDeleteroleRequest(); request7.RoleId = response5.RoleId; OapiRoleDeleteroleResponse response7 = client7.Execute(request7, accessToken); Console.WriteLine("删除角色:"); Console.WriteLine(response7.Body); Console.WriteLine(); // 添加外部联系人 官方代码有问题(已解决,需要在OpenExtContactDomain前加上request名 // 然而又有新问题:还是和上面“更新角色”的报错一样,提示:缺少参数 corpid or appkey DefaultDingTalkClient client8 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/extcontact/create"); OapiExtcontactCreateRequest request8 = new OapiExtcontactCreateRequest(); OapiExtcontactCreateRequest.OpenExtContactDomain contacter = new OapiExtcontactCreateRequest.OpenExtContactDomain { Title = "CFO", Name = "测试的外部联系人", StateCode = "86", CompanyName = "钉钉", Mobile = "15295778118" }; request8.Contact_ = contacter; OapiExtcontactCreateResponse response8 = client8.Execute(request8, accessToken); Console.WriteLine("添加外部联系人:"); Console.WriteLine(response6.Body); Console.WriteLine(); // 获取外部联系人列表 DefaultDingTalkClient client9 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/extcontact/list"); OapiExtcontactListRequest request9 = new OapiExtcontactListRequest(); request9.Size = 20L; request9.Offset = 0L; OapiExtcontactListResponse response9 = client9.Execute(request9, accessToken); Console.WriteLine("获取外部联系人列表:"); Console.WriteLine(response9.Body); Console.WriteLine(); // 创建群会话 //DefaultDingTalkClient client10 = new DefaultDingTalkClient("https://oapi.dingtalk.com/chat/create"); //OapiChatCreateRequest request10 = new OapiChatCreateRequest(); //request10.Name = "TestCreate"; //request10.Owner = userId; //request10.Useridlist ??= new List<string>(); //request10.Useridlist.Add(userId); //OapiChatCreateResponse response10 = client10.Execute(request10, accessToken); //Console.WriteLine("创建群会话"); //Console.WriteLine(response10.Body); //Console.WriteLine(); //// 获取群会话 //DefaultDingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/chat/get"); //OapiChatGetRequest request11 = new OapiChatGetRequest(); //request11.Chatid = response10.Chatid; //request11.SetHttpMethod("GET"); //OapiChatGetResponse response11 = client11.Execute(request11, accessToken); //Console.WriteLine("获取群会话"); //Console.WriteLine(response11.Body); //Console.WriteLine(); //// 更新群对话 //DefaultDingTalkClient client12 = new DefaultDingTalkClient("https://oapi.dingtalk.com/chat/update"); //OapiChatUpdateRequest request12 = new OapiChatUpdateRequest(); //request12.Chatid = response10.Chatid; //request12.Name = "TestUpdate"; //OapiChatUpdateResponse response12 = client12.Execute(request12, accessToken); //Console.WriteLine("更新群对话"); //Console.WriteLine(response12.Body); //Console.WriteLine(); // 发送工作通知 DefaultDingTalkClient client13 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request13 = new OapiMessageCorpconversationAsyncsendV2Request(); request13.AgentId = agentId; request13.ToAllUser = true; OapiMessageCorpconversationAsyncsendV2Request.MsgDomain msgDomain = new OapiMessageCorpconversationAsyncsendV2Request.MsgDomain(); msgDomain.Msgtype = "oa"; msgDomain.Oa = new OapiMessageCorpconversationAsyncsendV2Request.OADomain(); msgDomain.Oa.MessageUrl = "http://dingtalk.com"; msgDomain.Oa.Head = new OapiMessageCorpconversationAsyncsendV2Request.HeadDomain(); msgDomain.Oa.Head.Bgcolor = "FFBBBBBB"; msgDomain.Oa.Head.Text = "头部标题"; msgDomain.Oa.Body = new OapiMessageCorpconversationAsyncsendV2Request.BodyDomain(); msgDomain.Oa.Body.Title = "正文标题"; msgDomain.Oa.Body.Form = new List <OapiMessageCorpconversationAsyncsendV2Request.FormDomain>(); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "姓名", Value = "张三" }); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "年龄", Value = "20" }); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "身高", Value = "1.8米" }); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "体重", Value = "130斤" }); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "学历", Value = "本科" }); msgDomain.Oa.Body.Form.Add(new OapiMessageCorpconversationAsyncsendV2Request.FormDomain() { Key = "爱好", Value = "打球、听音乐" }); msgDomain.Oa.Body.Rich = new OapiMessageCorpconversationAsyncsendV2Request.RichDomain(); msgDomain.Oa.Body.Rich.Num = "15.6"; msgDomain.Oa.Body.Rich.Unit = "元"; msgDomain.Oa.Body.Content = "大段文本大段文本大段文本大段文本大段文本"; msgDomain.Oa.Body.Image = "@lADOADmaWMzazQKA"; msgDomain.Oa.Body.FileCount = "3"; msgDomain.Oa.Body.Author = "李四"; request13.Msg_ = msgDomain; //request13.Msg = @"{ // ""msgtype"": ""oa"", // ""oa"": { // ""message_url"": ""http://dingtalk.com"", // ""head"": { // ""bgcolor"": ""FFBBBBBB"", // ""text"": ""头部标题"" // }, // ""body"": { // ""title"": ""正文标题"", // ""form"": [ // {""key"": ""姓名:"", ""value"": ""张三""}, // {""key"": ""年龄:"", ""value"": ""20""}, // {""key"": ""身高:"", ""value"": ""1.8米""}, // {""key"": ""体重:"", ""value"": ""130斤""}, // {""key"": ""学历:"", ""value"": ""本科""}, // {""key"": ""爱好:"", ""value"": ""打球、听音乐""} // ], // ""rich"": {""num"": ""15.6"", ""unit"": ""元""}, // ""content"": ""大段文本大段文本大段文本大段文本大段文本大段文本"", // ""image"": ""@lADOADmaWMzazQKA"", // ""file_count"": ""3"", // ""author"": ""李四"" // } // } //}"; OapiMessageCorpconversationAsyncsendV2Response response13 = client13.Execute(request13, accessToken); Console.WriteLine("发送工作通知:"); Console.WriteLine(response13.Body); Console.WriteLine(); //获取工作通知消息的发送进度 DefaultDingTalkClient client14 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/getsendprogress"); OapiMessageCorpconversationGetsendprogressRequest request14 = new OapiMessageCorpconversationGetsendprogressRequest(); request14.AgentId = agentId; request14.TaskId = response13.TaskId; OapiMessageCorpconversationGetsendprogressResponse response14 = client14.Execute(request14, accessToken); Console.WriteLine("获取工作通知消息的发送进度"); Console.WriteLine(response14.Body); Console.WriteLine(); //获取工作通知消息的发送结果 DefaultDingTalkClient client15 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/getsendresult"); OapiMessageCorpconversationGetsendresultRequest request15 = new OapiMessageCorpconversationGetsendresultRequest(); request15.AgentId = agentId; request15.TaskId = response13.TaskId; OapiMessageCorpconversationGetsendresultResponse response15 = client15.Execute(request15, accessToken); Console.WriteLine("获取工作通知消息的发送结果"); Console.WriteLine(response15.Body); Console.WriteLine(); ////发送消息到企业群(使用时需将client10注释恢复) //DefaultDingTalkClient client16 = new DefaultDingTalkClient("https://oapi.dingtalk.com/chat/send"); //OapiChatSendRequest request16 = new OapiChatSendRequest(); //request16.Chatid = response10.Chatid; //request16.Msg = @"{ // ""msgtype"":""text"", // ""text"": { // ""content"": ""测试发送消息到企业群: 还在coding吗兄弟?"", // } //}"; //OapiChatSendResponse response16 = client16.Execute(request16, accessToken); //Console.WriteLine("发送消息到企业群"); //Console.WriteLine(response16.Body); //Console.WriteLine(); //发起代办 IDingTalkClient client17 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/workrecord/add"); OapiWorkrecordAddRequest request17 = new OapiWorkrecordAddRequest(); request17.Userid = userId; request17.CreateTime = 1496678400000L; request17.Title = "title"; request17.Url = "https://oa.dingtalk.com"; List <OapiWorkrecordAddRequest.FormItemVoDomain> formItemList = new List <OapiWorkrecordAddRequest.FormItemVoDomain>(); OapiWorkrecordAddRequest.FormItemVoDomain formItem = new OapiWorkrecordAddRequest.FormItemVoDomain(); formItemList.Add(formItem); formItem.Title = "标题"; formItem.Content = "内容 "; request17.FormItemList_ = formItemList; request17.BizId = "TestRecord"; OapiWorkrecordAddResponse response17 = client17.Execute(request17, accessToken); Console.WriteLine("发起代办"); Console.WriteLine(response17.Body); Console.WriteLine(); //更新代办 IDingTalkClient client18 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/workrecord/update"); OapiWorkrecordUpdateRequest request18 = new OapiWorkrecordUpdateRequest(); request18.Userid = userId; request18.RecordId = "TestRecord"; request18.SetHttpMethod("GET"); OapiWorkrecordUpdateResponse response18 = client.Execute(request18, accessToken); Console.WriteLine("更新代办"); Console.WriteLine(response18.Body); Console.WriteLine(); ////根据部门获取到Urid //DefaultDingTalkClient clie = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getDeptMember"); //OapiUserGetDeptMemberRequest req = new OapiUserGetDeptMemberRequest(); //req.DeptId = "1"; //req.SetHttpMethod("GET"); //OapiUserGetDeptMemberResponse rsp = clie.Execute(req, AccessToken); //List<string> userid = rsp.UserIds; ////获取到Urid就是在公司里要发送到那个人的id //string Urid = userid[0]; ////发送消息 //IDingTalkClient cl = new DefaultDingTalkClient("https://eco.taobao.com/router/rest"); //CorpMessageCorpconversationAsyncsendRequest req1 = new CorpMessageCorpconversationAsyncsendRequest(); //req1.Msgtype = "oa";//发送消息是以oa的形式发送的,其他的还有text,image等形式 //req1.AgentId = 917416506;//微应用ID //req1.UseridList = Urid;//收信息的userId,这个是by公司来区分,在该公司内这是一个唯一标识符 //req1.ToAllUser = false;//是否发给所有人 // //消息文本 ////req1.Msgcontent = "{\"message_url\": \"http://dingtalk.com\",\"head\": {\"bgcolor\": \"FFBBBBBB\",\"text\": \"头部标题\"},\"body\": {\"title\": \"拿钱学习\",\"form\": [{\"key\": \"姓名:\", \"value\": \"hong\" },{\"key\": \"年龄:\", \"value\": \"18\" },{\"key\": \"身高:\", \"value\": \"1.6米\"},{\"key\": \"体重:\",\"value\": \"90斤\"},{\"key\": \"学历:\",\"value\": \"硕士\"},{\"key\": \"爱好:\",\"value\": \"学习\"}],\"rich\": {\"num\": \"10000\",\"unit\": \"元\"},\"content\": \"快去学习!!!\",\"file_count\": \"1\",\"author\": \"小白\"}}"; ////CorpMessageCorpconversationAsyncsendResponse rsp1 = cl.Execute(req1, AccessToken);//发送消息 //req1.Msgcontent = @"{ // ""message_url"": ""http://dingtalk.com"", // ""head"": {""bgcolor"": ""FFBBBBBB"",""text"": ""头部标题""}, // ""body"": { // ""title"": ""拿钱学习"", // ""form"": [ // {""key"": ""姓名:"", ""value"": ""hong"" }, // {""key"": ""年龄:"", ""value"": ""18"" }, // {""key"": ""身高:"", ""value"": ""1.6米""}, // {""key"": ""体重:"", ""value"": ""90斤""}, // {""key"": ""学历:"", ""value"": ""硕士""}, // {""key"": ""爱好:"", ""value"": ""学习""}], // ""rich"": {""num"": ""10000"",""unit"": ""元""}, // ""content"": ""快去学习!!!"", // ""file_count"": ""1"", // ""author"": ""小白"" // } //}"; //CorpMessageCorpconversationAsyncsendResponse rsp1 = cl.Execute(req1, AccessToken);//发送消息 //Console.WriteLine(rsp1.Body); Console.ReadLine(); }
/// <summary> /// 通知消息发送基础方法 /// </summary> /// <param name="accessToken"></param> /// <param name="agentId"></param> /// <param name="sendtoType"></param> /// <param name="userList"></param> /// <param name="_msg"></param> /// <returns></returns> private static SendWorkMessageResult SendMessage(string accessToken, long agentId, EnumClass.RecvType sendtoType, List <string> userList, OapiMessageCorpconversationAsyncsendV2Request.MsgDomain _msg) { SendWorkMessageResult result = new SendWorkMessageResult(); try { IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); request.AgentId = agentId; StringBuilder listStr = new StringBuilder(); foreach (string value in userList) { if (!string.IsNullOrEmpty(value)) { listStr.Append(value + ","); } } listStr.Remove(listStr.Length - 1, 1); switch (sendtoType) { case EnumClass.RecvType.UseridList: request.UseridList = listStr.ToString(); request.ToAllUser = false; break; case EnumClass.RecvType.DeptList: request.DeptIdList = listStr.ToString(); request.ToAllUser = false; break; case EnumClass.RecvType.AllUser: request.ToAllUser = true; break; } request.Msg_ = _msg; OapiMessageCorpconversationAsyncsendV2Response response = client.Execute(request, accessToken); if (response.Errcode == 0) { result = SendWorkMessageResult.CreateSuccessResult(response.Errcode, response.Errmsg, response.TaskId ); } else { result = SendWorkMessageResult.CreateFailResult(response.Errcode, response.Errmsg ); } return(result); } catch (Exception ex) { return(SendWorkMessageResult.CreateFailResult(ex.Message)); } }