示例#1
0
        public async Task <ResponseData <SmsCalledResult> > SendAsync(SendCloudSmsMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (string.IsNullOrWhiteSpace(_sendCloudAccount.SmsUser))
            {
                throw new ArgumentNullException(nameof(_sendCloudAccount.SmsUser));
            }
            if (string.IsNullOrWhiteSpace(_sendCloudAccount.SmsKey))
            {
                throw new ArgumentNullException(nameof(_sendCloudAccount.SmsKey));
            }

            message.CheckParameters();

            var timestamp = await GetTimeStampAsync();

            var bizParams = new SortedDictionary <string, string>
            {
                { "smsUser", _sendCloudAccount.SmsUser },
                { "msgType", message.MsgType.ToString() },
                { "phone", message.GetPhoneString() },
                { "templateId", message.TemplateId.ToString() },
                { "timestamp", timestamp.Info.Timestamp.ToString() }
            };

            if (message.Vars?.Count > 0)
            {
                bizParams.Add("vars", message.GetVarsString());
            }

            var signature = SignatureHelper.GetApiSignature(bizParams, _sendCloudAccount.SmsKey);

            bizParams.Add("signature", signature);

            var content = new FormUrlEncodedContent(bizParams);

            return(await _proxy.SendMessageAsync(content)
                   .Retry(_config.RetryTimes)
                   .Handle().WhenCatch <Exception>(e =>
            {
                _exceptionHandler?.Invoke(e);
                return ReturnAsDefautlResponse();
            }));
        }
示例#2
0
        public async void SendSmsTest()
        {
            var message = new SendCloudSmsMessage {
                Phone = new List <string> {
                    ""
                },
                TemplateId = 12570,
                Vars       = new Dictionary <string, string> {
                    { "cluster", "021-上海第一人民医院" },
                    { "service", "DB" },
                    { "time", DateTime.Now.ToString() }
                }
            };

            var response = await _client.SendAsync(message);

            Assert.True(response.StatusCode == 200, JsonConvert.SerializeObject(response));
        }