public void FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context) { context.Logger.LogLine($"Beginning to process {dynamoEvent.Records.Count} records..."); IServiceProvider sp = DI.ServiceProvider; IBaseRepository <Message> messageRepo = sp.GetService <IBaseRepository <Message> >(); ISmsWorker smsWorker = sp.GetService <ISmsWorker>(); foreach (var record in dynamoEvent.Records) { //because the stream parser strategy seems an overkill //to be introduced of all object long Id = Convert.ToInt64(record.Dynamodb.Keys.First().Value.N); context.Logger.LogLine($"Requesting record Id : {Id}"); Message msg = messageRepo.Get(Id); context.Logger.LogLine(JsonConvert.SerializeObject(msg)); if (msg.Phone != null) { SmsResponse smsResponse = smsWorker.SendSMS(msg.Phone, msg.Content); string log = smsResponse.success ? $"SMS Message send : {msg.Phone}" : "SMS Message was unable to be sent"; context.Logger.LogLine(log); } } context.Logger.LogLine("Stream processing complete."); }
public async Task <OTPSendResponse> SendCodeAsync(OTPSendRequest request) { SmsData smsData = new SmsData() { MessageBody = string.Format("کد فعال سازی روزانه: {0}", (object)request.Code), MobileNo = request.UserMobile, EntityID = request.UserId.ToString(), EntityName = "OTPSendRequest", RecieverID = new int?(request.UserId), SmsReceiverType = SmsReceiverType.User }; SmsResponse response = await SmsManager.SendSmsAsync(smsData); if (response.Status == SmsResponseStatus.Failed) { return new OTPSendResponse() { Status = OTPSendStatus.Failed } } ; return(new OTPSendResponse() { Status = OTPSendStatus.Succeed }); }
private async void btnSendSMS_Click(object sender, RoutedEventArgs e) { statusProgress.Visibility = Visibility.Visible; txtResult.Visibility = Visibility.Collapsed; btnSendSMS.IsEnabled = false; try { clientId = "your_att_app_key"; clientSecret = "your_att_secret_key"; uriString = "https://api.att.com"; SmsService smsService = new SmsService(new AttServiceSettings(clientId, clientSecret, new Uri(uriString))); List <string> phoneNumbers = txtPhone.Text.Split(';').ToList <string>(); SmsResponse response = await smsService.SendSms(phoneNumbers, txtMessage.Text); if (null != response) { txtResult.Visibility = Visibility.Visible; txtResult.Text = "Message has been sent"; } } catch (Exception ex) { txtResult.Visibility = Visibility.Visible; txtResult.Text = ex.Message; } statusProgress.Visibility = Visibility.Collapsed; btnSendSMS.IsEnabled = true; }
public SmsResponse SendSms(Sms sms) { if (sms.Addresses.Count == 0 || string.IsNullOrEmpty(sms.Message)) { throw new ArgumentException("Invalid sms format."); } foreach (var address in sms.Addresses) { sms.TelAdresses = new List <string>(); sms.TelAdresses.Add(this.IsValidMSISDN(address)); } var smsForSending = new OutBoundSms { Address = sms.TelAdresses, Message = sms.Message }; string body = JsonParser <OutBoundSms> .SerializeToJson(smsForSending); string relativeUri = string.Format("{0}{1}", EndPoint.AbsoluteUri, "/rest/sms/2/messaging/outbox"); var head = new StringBuilder(); this.GetClientCredentials(); head.Append(string.Format("?Authorization=Bearer {0}", this.ClientCredential.AccessToken)); return(SmsResponse.Parse(this.Send(relativeUri, head, body))); }
public JsonResult SendVeryCode(string mobile) { ResultDto <string> result = new ResultDto <string>(); try { Random rnd = new Random(); int veryCode = rnd.Next(100000, 999999); string smsContent = "短信验证码:VeryCode【兴塘荟】"; smsContent = smsContent.Replace("VeryCode", veryCode.ToString()); SmsResponse rlt = JisuAPI.SmsSend(mobile, smsContent); if (rlt.status == 0 && rlt.msg == "ok") { Session["VeryCode"] = veryCode; result.code = 100; } else { result.code = 500; result.message = rlt.msg; } } catch (Exception ex) { result.code = 100; result.message = ex.Message; } return(Json(result)); }
public SmsResponse PingmePleasebySms(SmsRequest smsRequest) { SmsResponse smsResponse = new SmsResponse(); DatabaseStuff databaseStuff = new DatabaseStuff(); string request, response, streamResponse; try { #region for wcf basic auth services var hostIdentity = WindowsIdentity.GetCurrent().Name; var primaryIdentity = ServiceSecurityContext.Current.PrimaryIdentity.Name; var windowsIdentity = ServiceSecurityContext.Current.WindowsIdentity.Name; var threadIdentity = Thread.CurrentPrincipal.Identity.Name; //var isAdmin = Thread.CurrentPrincipal.IsInRole("admin"); #endregion //todo: Implement the sms stuff in the wcf service } catch (Exception ex) { smsResponse.Success = false; smsResponse.Message = "An error has occurred: " + ex.Message; smsResponse.ApiMessageId = null; smsResponse.SubmittedDateTime = null; } return(smsResponse); }
/// <summary> /// This function is called with user clicks on send SMS /// This validates the access token and then calls sendSMS method to invoke send SMS API. /// </summary> /// <param name="sender">Sender Information</param> /// <param name="e">List of Arguments</param> protected void BtnSendSMS_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtmsisdn.Text)) { this.DrawPanelForFailure(sendSMSPanel, "Specify phone number"); return; } if (string.IsNullOrEmpty(txtmsg.Text)) { this.DrawPanelForFailure(sendSMSPanel, "Specify message to send"); return; } SmsResponse resp = this.requestFactory.SendSms(txtmsisdn.Text.Trim(), txtmsg.Text.Trim()); txtSmsId.Text = resp.Id; this.DrawPanelForSuccess(sendSMSPanel, resp.Id); } catch (ArgumentException ex) { this.DrawPanelForFailure(sendSMSPanel, ex.ToString()); } catch (InvalidResponseException ex) { this.DrawPanelForFailure(sendSMSPanel, ex.Body); } catch (Exception ex) { this.DrawPanelForFailure(sendSMSPanel, ex.ToString()); } }
public SmsResponse SendSMS(string phone, string content) { SmsResponse smsResponse = default(SmsResponse); using (HttpClient client = new HttpClient()) { FormUrlEncodedContent encodedContent = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("phone", phone), new KeyValuePair <string, string>("message", content), new KeyValuePair <string, string>("key", Key), }); HttpResponseMessage message = client.PostAsync("https://textbelt.com/text", encodedContent).Result; if (message.IsSuccessStatusCode) { string response = message.Content.ReadAsStringAsync().Result; smsResponse = JsonConvert.DeserializeObject <SmsResponse>(response); } else { smsResponse = new SmsResponse { success = false }; } return(smsResponse); } }
public HttpResponseMessage Receive(SmsResponse smsResponse) { var twilioResponse = new TwilioResponse(); _smsBotService.Receive(smsResponse); //twilioResponse.Sms("Test"); // Todo: Reply here return(Request.CreateResponse(HttpStatusCode.OK, twilioResponse.Element, new MediaTypeHeaderValue("text/xml"))); }
/// <summary> /// 短信功能余额不足发送短信提醒 /// </summary> /// <param name="smsResponse"></param> public void BalanceInsufficient(SmsResponse smsResponse) { string sendEmail = "*****@*****.**"; if (smsResponse.Message == "短信功能余额不足") { SendEmail(sendEmail, "【短信发送功能】", smsResponse.Message, ""); } }
public void SmsWorkerWorks() { IServiceProvider sp = StartUp.ServiceProvider; ISmsWorker smsWorker = sp.GetService <ISmsWorker>(); SmsResponse response = smsWorker.SendSMS("4023509079", "test"); Assert.IsTrue(response.success); }
public JsonResult SendSms(string sms, string format) { Ctx ctx = Session["ctx"] as Ctx; List <SmsHelper> smss = JsonConvert.DeserializeObject <List <SmsHelper> >(sms); SmsModel model = new SmsModel(ctx); SmsResponse result = model.Send(smss, format); return(Json(JsonConvert.SerializeObject(result), JsonRequestBehavior.AllowGet)); }
public ServiceResult <MessageResponse> Send(string originator, List <Message> messages, bool includeSpecialTurkishCharacters = false) { ServiceResult <MessageResponse> result = new ServiceResult <MessageResponse>(); if (String.IsNullOrEmpty(originator)) { result = new ServiceResult <MessageResponse>() { Success = false, Message = "You need to provider an originator." }; } if (messages == null || !messages.Any()) { return(new ServiceResult <MessageResponse>() { Success = false, Message = "You need to provide at least 1 Message to send." }); } if (_phoneNumberValidator != null) { messages = GetValidMessages(messages); } if (messages == null || !messages.Any()) { return(new ServiceResult <MessageResponse>() { Success = false, Message = "You need to provide at least 1 valid Message to send. Check your phone numbers and message texts." }); } SmsRequest smsRequest = new SmsRequest(_userName, _password, originator, messages, includeSpecialTurkishCharacters); SmsResponse smsResponse = Post <SmsResponse>("http://api.mesajpaneli.com/json_api/", smsRequest); if (smsResponse.Success) { result.Success = true; result.Data = new MessageResponse() { SmsReferenceNo = smsResponse.SmsReferenceNo.ToString() }; } else { result.Success = false; result.Message = smsResponse.ErrorMessage; result.ErrorCode = GetErrorCode(smsResponse); } return(result); }
private ErrorCodeEnum GetErrorCode(SmsResponse smsResponse) { // TODO. We don't know error codes yet. if (smsResponse.ErrorMessage == "") { return(ErrorCodeEnum.InsufficientCredits); } return(ErrorCodeEnum.None); }
/// <summary> /// Sends SMS message to multiple recipients. /// </summary> /// <param name="sms">instance of <see cref="SmsMessage"/> to send</param> /// <returns>SMS message sent</returns> /// <exception cref="System.ArgumentNullException">sms is null</exception> public async Task <SmsMessage> Send(SmsMessage sms) { Argument.ExpectNotNull(() => sms); SmsResponse resp = await _smsServiceWrapper.SendSms(sms.PhoneNumbers.Select(p => p.Number).ToList(), sms.Body); sms.MessageId = resp.Id; return(sms); }
public void OnGetSmsFinished(SmsResponse smsResponse) { this.smsCoroutine = null; if (smsResponse == null || smsResponse.code != 0) { Debug.Log("Ошибка смс кода"); } else { Toolbox.Instance.authToken = smsResponse.token; Debug.Log("Смс код принят"); } }
//[Authorize(Roles ="SAdmin")] public HttpResponseMessage MessageToWhatsapp(Whatsapp whatsapp) { SmsResponse Response = new SmsResponse(); try { var message = Objwhatsapp.SendMessageWithWhatsapp(whatsapp); Response.Message = con.MessageSuccess;; Response.Status = con.StatusSuccess; } catch (Exception ex) { Response.Status = con.StatusFailed; Response.Message = con.MessageFailed + ", Exception : " + ex.Message; } return(ConvertToJSON(Response)); }
//[Authorize(Roles ="SAdmin")] public HttpResponseMessage SendSMS(Sms sms) { SmsResponse Response = new SmsResponse(); try { var message = Objsms.SendSMS(sms); Response.Message = $"<Response><Message>{message}</Message></Response>".ToString(); Response.Status = con.StatusSuccess; } catch (Exception ex) { Response.Status = con.StatusFailed; Response.Message = con.MessageFailed + ", Exception : " + ex.Message; } return(ConvertToJSON(Response)); }
private async void btnSendSMS_Click(object sender, RoutedEventArgs e) { txtResult.Text = string.Empty; if (string.IsNullOrEmpty(txtSpeechOutput.Text)) { txtResult.Text = "Specify message"; return; } if (string.IsNullOrEmpty(txtPhoneNumber.Text)) { txtResult.Text = "Specify Phone Number"; return; } statusProgress.Visibility = Visibility.Visible; txtResult.Visibility = Visibility.Collapsed; btnSendSMS.IsEnabled = false; btnRecord.IsEnabled = false; try { //clientId = "your client id here"; //clientSecret = "your client secret"; SmsService smsService = new SmsService(new AttServiceSettings(clientId, clientSecret, new Uri(uriString))); List <string> phoneNumbers = txtPhoneNumber.Text.Split(';').ToList <string>(); SmsResponse response = await smsService.SendSms(phoneNumbers, txtSpeechOutput.Text); if (null != response) { txtResult.Visibility = Visibility.Visible; txtResult.Text = "Message has been sent"; } } catch (Exception ex) { txtResult.Visibility = Visibility.Visible; txtResult.Text = ex.Message; } statusProgress.Visibility = Visibility.Collapsed; btnSendSMS.IsEnabled = true; btnRecord.IsEnabled = true; }
private static void SendThroughPrimaryApi(string phoneNumber, string activationCode) { if (_nexmoApiKey == null) { _nexmoApiKey = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiKey].ToString(); } if (_nexmoApiSecret == null) { _nexmoApiSecret = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiSecret].ToString(); } NexmoClient nexmoClient = new NexmoClient(_nexmoApiKey, _nexmoApiSecret); SmsResponse smsResponse = nexmoClient.SendMessage(phoneNumber, NeeoConstants.AppName, _smsBody.Replace(_activationCodeMask, activationCode)); MessageStatus messageStatus = (MessageStatus)Convert.ToUInt16(smsResponse.Messages[0].Status); switch (messageStatus) { case MessageStatus.InvalidMessage: LogManager.CurrentInstance.ErrorLogger.LogError( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Nexmo - Phone # : " + phoneNumber + " Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]); throw new ApplicationException(CustomHttpStatusCode.InvalidNumber.ToString("D")); break; case MessageStatus.Throttled: case MessageStatus.MissingParams: case MessageStatus.InvalidParams: case MessageStatus.InvalidCredentials: case MessageStatus.InternalError: case MessageStatus.NumberBarred: case MessageStatus.PartnerAccountBarred: case MessageStatus.PartnerQuotaExceeded: case MessageStatus.CommunicationFailed: case MessageStatus.InvalidSignature: case MessageStatus.InvalidSenderAddress: LogManager.CurrentInstance.ErrorLogger.LogError( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Nexmo - Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]); SendThroughSecondaryApi(phoneNumber, activationCode); break; } }
private static SmsResponse SendSMS(string[] auth, SmsRequest smsRequest) { using (WebClient wb = new WebClient()) { // Setting the encoding is required when sending UTF8 characters! wb.Encoding = System.Text.Encoding.UTF8; wb.Headers.Set(HttpRequestHeader.ContentType, "application/json"); wb.Headers.Add("user_key", auth[0]); wb.Headers.Add("session_key", auth[1]); string json = JsonHelper.Serialize(smsRequest); string responseBody = wb.UploadString(BASEURL + "sms", "POST", json); SmsResponse smsResponse = JsonHelper.Deserialize <SmsResponse>(responseBody); return(smsResponse); } }
internal static void SendSms(string message, long number) { string skebbyUsername = Settings.Get("Skebby.Username"); string skebbyPassword = Settings.Get("Skebby.Password"); string[] auth = Authenticate(skebbyUsername, skebbyPassword); SmsRequest smsRequest = new SmsRequest(); smsRequest.Message = message; smsRequest.MessageType = MESSAGE_HIGH_QUALITY; smsRequest.Recipient = new string[] { $"+{number}" }; SmsResponse smsResponse = SendSMS(auth, smsRequest); if (!"OK".Equals(smsResponse.Result)) { throw new SmsSendException($"Error sending sms for user {number} \n\r {smsResponse.Result}"); } }
public void Send(String _targetNumber, String Message, String _sender, ServiceEnvironment SMSType = ServiceEnvironment.Premium) { targetNumber = "tel:" + _targetNumber; senderAddress = "tel:" + _sender; //! [client] SendSmsClient client = new SendSmsClient(authentication, SMSType); //! [prepare] List <String> receiverNumbers = new List <String>(); receiverNumbers.Add(targetNumber); SendSmsRequest request = new SendSmsRequest(); request.Numbers = receiverNumbers; request.Message = Message; request.SenderAddress = senderAddress; request.SMSType = OutboundSMSType.TEXT; request.Account = subAccountId; //! [prepare] //Console.Write("Sending SMS..."); //! [send] SmsResponse response = client.SendSms(request); if (!response.Success) { throw new Exception(string.Format("error {0}: {1} - {2}", response.requestError.policyException.messageId, response.requestError.policyException.text.Substring(0, response.requestError.policyException.text.Length - 2), response.requestError.policyException.variables[0])); } //! [send] //Console.WriteLine("ok"); //Console.WriteLine("End of demo. Press Enter to exit."); //Console.ReadLine(); }
/// <summary> /// Sends the SMS message. /// </summary> /// <param name="phoneNumbers">Phone numbers to send SMS message to.</param> /// <param name="message">Message body to send.</param> /// <returns>Instance of <see cref="SmsResponse"/> with sent SMS response information.</returns> /// <exception cref="System.ArgumentNullException">phoneNumbers is null.</exception> /// <exception cref="System.ArgumentException">phoneNumbers count equals zero.</exception> public async Task <SmsResponse> SendSms(IEnumerable <string> phoneNumbers, string message) { Argument.ExpectNotNull(() => phoneNumbers); Argument.Expect(() => phoneNumbers.Any(), "phoneNumbers", "at least one phone number required"); List <string> isdnAddresses = phoneNumbers .Select(a => PhoneNumberConverter.ConvertToIsdn(a)) .ToList(); var body = String.Empty; if (isdnAddresses.Count == 1) { var raw = new OutboundSmsRaw(isdnAddresses[0], message); body = JsonParser <OutboundSmsRaw> .SerializeToJson(raw); } else { var numbers = new OutboundSms(isdnAddresses, message); body = JsonParser <OutboundSms> .SerializeToJson(numbers); } return(SmsResponse.Parse(await SendRawRequest(HttpMethod.Post, SendRelativeUrl, body))); }
public ActionResult <dynamic> Message(SendRequest sendRequest) { var client = new RestClient("https://4mmdvn.api.infobip.com/omni/1/advanced"); var request = new RestRequest(Method.POST); request.AddHeader("authorization", "Basic QWRtaW5pc3RyYWRvci5EZXJjbzpXYS4yODkzNCo="); request.AddHeader("content-type", "application/json"); IRestResponse response; dynamic data; if (sendRequest.Type == 1) { var WhatSapp = new WhatsappResponse() { scenarioKey = "B140C6E021C207FEB2CDE5F1DC874482", whatsApp = new WhatsApp { text = sendRequest.Message } }; WhatSapp.destinations = new List <Destination> { new Destination { to = new To { phoneNumber = sendRequest.Number } } }; string jsonString; jsonString = JsonSerializer.Serialize(WhatSapp); request.AddParameter("application/json", jsonString, ParameterType.RequestBody); request.Method = Method.POST; response = client.Execute(request); data = WhatSapp; } else { var sms = new SmsResponse() { scenarioKey = "B140C6E021C207FEB2CDE5F1DC874482", sms = new Sms { text = sendRequest.Message } }; sms.destinations = new List <Destination> { new Destination { to = new To { phoneNumber = sendRequest.Number } } }; string jsonString; jsonString = JsonSerializer.Serialize(sms); request.AddParameter("application/json", jsonString, ParameterType.RequestBody); request.Method = Method.POST; response = client.Execute(request); data = sms; } Root myDeserializedClass = JsonSerializer.Deserialize <Root>(response.Content); var r = new { Data = data, Message = myDeserializedClass.messages, Error = myDeserializedClass.requestError, Status = response.StatusCode, }; return(r); }
internal static extern int SendSmsDeliverReport(IntPtr handle, ref SmsDataPackageStruct info, SmsResponse response, TapiResponseCallback cb, IntPtr userData);
/// <summary> /// 返回短信状态 /// </summary> /// <param name="text"></param> /// <returns></returns> private static SmsResponse ResultStatus(string text) { var result = new SmsResponse { Success = false, Message = "发送失败" }; switch (text) { case "-00": result.Message = "发送失败"; break; case "-01": result.Message = "短信功能余额不足"; break; case "-02": result.Message = "用户错误"; break; case "-03": result.Message = "密码错误"; break; case "-04": result.Message = "传入参数不合法、超长、类型错误"; break; case "-09": result.Message = "暂停服务"; break; case "-12": result.Message = "接口错误"; break; case "-13": result.Message = "装载错误"; break; case "-19": result.Message = "由于预算数据没有配置,预算返回失败,提示主叫“被叫无法接通"; break; case "-25": result.Message = "参数不合法"; break; case "-26": result.Message = "会议人数大于系统级配置值"; break; case "-29": result.Message = "呼叫不存在"; break; case "-30": result.Message = "会议不存在"; break; case "-31": result.Message = "UC号码非指定会场主持人"; break; case "-33": result.Message = "UC号码非发起CTD号码"; break; case "-34": result.Message = "主持人UC号码不存在"; break; case "-35": result.Message = "该与会者号码不在会议中"; break; case "-36": result.Message = "事务正忙,不允许进行该操作"; break; case "-37": result.Message = "会议不存在或会议尚未结束"; break; case "-38": result.Message = "已经在录音,无需再启动"; break; case "-39": result.Message = "已经停止录音,无需再停止"; break; case "-40": result.Message = "该用户没有会议列表"; break; case "-41": result.Message = "已经在播放背景音,无需再启动"; break; case "-42": result.Message = "已经在停止背景音,无需再停止"; break; case "-45": result.Message = "随机数字段长度不合法,或随机字符串无法转成Long型"; break; case "-43": result.Message = "无需修改听说权"; break; case "-44": result.Message = "主持人不能修改听说权"; break; case "-46": result.Message = "CTC主持人类型不正确"; break; case "-47": result.Message = "用户状态不正确(非激活状态)"; break; case "-48": result.Message = "主持人不能被踢出"; break; case "-49": result.Message = "主叫号码或UC号码输入过长"; break; case "-50": result.Message = "被叫号码或目的号码输入过长"; break; case "-78": result.Message = "该UC号码无权Web接入(未用)"; break; case "-84": result.Message = "短信群发超过群发允许的上限"; break; case "-85": result.Message = "超过短信群发的日最大条数限制"; break; case "-86": result.Message = "超过短信群发的月最大条数限制"; break; case "-99": result.Message = "操作频繁"; break; case "-103": result.Message = "没有订阅传真功能"; break; default: result.Success = true; result.Message = "发送成功"; break; } return(result); }
private static void TestObject(SmsResponse smsResponse) { Assert.AreEqual(smsResponse.Messages[0].Status, "0"); Assert.AreEqual(smsResponse.Messages[0].Receiver, "60123456789"); Assert.AreEqual(smsResponse.Messages[0].MsgId, "CPASS_restapi_C0000002737000000.0001"); }
/// <summary> /// 发送不同短信内容 /// </summary> /// <param name="messages">短信数组</param> /// <returns></returns> public static SubmitResult SendDiffContentMessages(IEnumerable <SingleReceiverMessage> messages) { SubmitResult submitResult = new SubmitResult { Success = true }; if (messages.Count() > 100) { throw new Exception("号码个数超过100个"); } HuaWeiShortMessageSetting msgSetting = HuaWeiShortMessageSetting.Default; var gatewayUrl = msgSetting.RootUrl; string username = msgSetting.Channel;//存储通道 if (string.IsNullOrWhiteSpace(username)) { throw new Exception("短信网关通道不存在"); } //必填,请参考"开发准备"获取如下数据,替换为实际值 string apiAddress = gatewayUrl + msgSetting.SendDiffUrl; //APP接入地址+接口访问URI string appKey = msgSetting.AppKey; //APP_Key string appSecret = msgSetting.AppSecret; //APP_Secret ArrayList smsContent = new ArrayList(); foreach (SingleReceiverMessage item in messages) { string[] receiver = { item.Mobile }; smsContent.Add(InitDiffSms(receiver, item.templateId, item.templateParas, username)); } try { string statusCallBack = ""; ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; //使用Tls1.2 = 3072 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | (SecurityProtocolType)3072; HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(apiAddress); //请求方法 myReq.Method = "POST"; //请求Headers myReq.ContentType = "application/json"; myReq.Headers.Add("Authorization", "WSSE realm=\"SDP\",profile=\"UsernameToken\",type=\"Appkey\""); myReq.Headers.Add("X-WSSE", BuildWSSEHeader(appKey, appSecret)); //请求Body var body = new Dictionary <string, object>() { { "from", username }, { "statusCallback", statusCallBack }, { "smsContent", smsContent } }; string jsonData = JsonConvert.SerializeObject(body); //发送请求数据 StreamWriter req = new StreamWriter(myReq.GetRequestStream(), Encoding.GetEncoding("utf-8")); req.Write(jsonData); req.Close(); //获取响应数据 HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse(); StreamReader resp = new StreamReader(myResp.GetResponseStream(), Encoding.GetEncoding("utf-8")); string result = resp.ReadToEnd(); myResp.Close(); resp.Close(); SmsResponse res = JsonConvert.DeserializeObject <SmsResponse>(result); if (res.code != "000000") { submitResult.MessageNo = res.code; submitResult.Success = false; if (res.code == "E200037") { submitResult.ErrorMsg = SmsErrors.GetStatusErrorMessage(res.result[0].status); } else { submitResult.ErrorMsg = SmsErrors.GetCodeErrorMessage(res.code); } } return(submitResult); } catch (Exception ex) { throw new Exception("短信通道连接失败,请稍后重试!"); } }
public async Task<SmsResponse> GetSmsPaymentInfo(CancellationToken cancellationToken) { if (smsResponse == null) smsResponse = await _client.GetSmsPaymentInfo(null, cancellationToken); return smsResponse; }
/// <summary> /// Sms receive /// </summary> /// <param name="smsResponse">Sms response</param> async public void Receive(SmsResponse smsResponse) { var familyMember = _familyService.GetMemberByPhone(smsResponse.From); if (familyMember == null) { return; } var isChild = familyMember.MemberType == MemberType.Child; smsResponse.Body = smsResponse.Body.ToLower().TrimStart(' '); var commandType = ProcessMessage(smsResponse.From, smsResponse.Body, isChild); var message = string.Empty; switch (commandType.Item1) { case SmsCommandType.KidStatus: message = GetKidStatus(familyMember.User.FamilyID, commandType.Item2); break; case SmsCommandType.KidBalance: if (isChild) { message = GetKidBalance(familyMember.Id); } else { message = GetKidBalance(familyMember.User.FamilyID, commandType.Item2); } break; case SmsCommandType.MyChoreStatus: message = GetKidStatus(familyMember.Id); break; case SmsCommandType.Yes: message = await _smsApprovalService.Approve(familyMember); break; case SmsCommandType.No: message = _smsApprovalService.Disapprove(familyMember); break; case SmsCommandType.AddChore: message = AddChoreWorkflow(familyMember, commandType.Item2, commandType.Item1); break; case SmsCommandType.Joke: message = GetJoke(); break; case SmsCommandType.Help: message = GetHelp(isChild); break; case SmsCommandType.Bonus: decimal amount; var result = decimal.TryParse(commandType.Item3, out amount); if (!result) { message = _errMsg; } else { message = SendBonus(commandType.Item2, familyMember, decimal.Parse(commandType.Item3)); } break; case SmsCommandType.Wrong: if (!isChild) { message = AddChoreWorkflow(familyMember, smsResponse.Body, commandType.Item1); } else { message = _errMsg; } break; case SmsCommandType.Always: _familyService.MarkAsPayDayAutoApproval(familyMember); message = _smsApprovalService.ApproveChores(familyMember); break; } // Skip, If message is empty if (string.IsNullOrEmpty(message)) { return; } _textMessageService.Send(smsResponse.From, message); }