Exemple #1
0
        private static string SendDingDingMsg(RobotSetting setting, string content)
        {
            long   timestamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
            string strSign   = timestamp + "\n" + setting.Secret;
            string sign      = string.Empty;

            using (var hmacsha256 = new HMACSHA256(Encoding.UTF8.GetBytes(setting.Secret)))
            {
                byte[] hashmessage = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(strSign));
                sign = HttpUtility.UrlEncode(Convert.ToBase64String(hashmessage), Encoding.UTF8);
            }

            IDingTalkClient client = new DefaultDingTalkClient($"{setting.SendUrl}&timestamp={timestamp}&sign={sign}");

            OapiRobotSendRequest.TextDomain text = new OapiRobotSendRequest.TextDomain()
            {
                Content = content
            };
            OapiRobotSendRequest request = new OapiRobotSendRequest()
            {
                Msgtype = "text",
                Text_   = text
            };
            OapiRobotSendResponse response = client.Execute(request);

            return(response.Body);
        }
        /// <summary>
        /// 发送钉钉消息
        /// </summary>
        /// <param name="serverUrl">服务地址</param>
        /// <param name="message">消息内容</param>
        /// <param name="atMobiles">@手机号</param>
        /// <returns></returns>
        public static string SendMessage(string serverUrl, string message, params string[] atMobiles)
        {
            try
            {
                if (!message.IsValid())
                {
                    return("消息内容不能为空");
                }

                var client = GetClient(serverUrl);
                if (null == client)
                {
                    return("获取客户端实例失败");
                }

                var textDomain = new OapiRobotSendRequest.TextDomain
                {
                    Content = message.GetValue(),
                };

                var request = new OapiRobotSendRequest
                {
                    Msgtype = "text",
                    Text_   = textDomain,
                };

                if (!atMobiles.IsEmpty())
                {
                    request.At_ = new OapiRobotSendRequest.AtDomain
                    {
                        AtMobiles = atMobiles.ToList(),
                    };
                }

                var response = client.Execute(request);
                if (null == response || response.IsError)
                {
                    return($"发送消息失败:{(response?.ErrMsg).GetValue("未知")}");
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Exemple #3
0
        /// <summary>
        /// 发送自定义机器人消息(text类型)
        /// </summary>
        /// <param name="access_token"></param>
        /// <param name="content"></param>
        /// <param name="mobiles"></param>
        public static bool SendTextMsg(string access_token, string content, List <string> mobiles)
        {
            IDingTalkClient      client  = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=" + access_token);
            OapiRobotSendRequest request = new OapiRobotSendRequest();

            request.Msgtype = "text";
            OapiRobotSendRequest.TextDomain text = new OapiRobotSendRequest.TextDomain();
            text.Content  = content;
            request.Text_ = text;
            OapiRobotSendRequest.AtDomain at = new OapiRobotSendRequest.AtDomain();
            at.AtMobiles = mobiles;
            request.At_  = at;
            OapiRobotSendResponse response = client.Execute(request);

            if (response.Errcode == 0)
            {
                return(true);
            }
            return(false);
        }