Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
 /// <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));
 }
Example #5
0
 /// <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));
 }
Example #6
0
 /// <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));
 }
Example #7
0
 /// <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);
 }
Example #8
0
 /// <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));
 }
Example #9
0
 /// <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);
 }
Example #10
0
 /// <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);
 }
Example #11
0
 /// <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);
 }
Example #12
0
 /// <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);
 }
Example #13
0
 /// <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));
 }
Example #14
0
        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);
        }
Example #15
0
        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));
        }
Example #16
0
        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));
        }
Example #17
0
        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);
        }
Example #18
0
        //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);
        }
Example #19
0
        /// <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);
        }
Example #20
0
        ////

        /**
         * 同一个微应用相同消息内容同一个用户一天只能接收一次,重复发送会发送成功但用户接收不到。
         * 该接口是异步发送消息,接口返回成功并不表示用户收到消息,需要通过“查询工作通知消息的发送结果”接口查询是否给用户发送成功。
         */
        /// <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
                });
            }
        }
Example #21
0
        /// <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("");
            }
        }
Example #22
0
        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();
        }
Example #23
0
        /// <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));
            }
        }