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(); })); }
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)); }