private void SendSms(OutboundSms smsMessage) { _logger.Info("Sending " + smsMessage.ToLongString()); try { foreach (var recipient in smsMessage.SmsRecipients) { var client = new WebClient(); // Add a user agent header in case the requested URI contains a query. client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR1.0.3705;)"); client.QueryString.Add("user", _username); client.QueryString.Add("password", _password); client.QueryString.Add("api_id", _apiId); var num = recipient.PhoneNumber; client.QueryString.Add("to", num); client.QueryString.Add("text", smsMessage.Message); client.QueryString.Add("from", smsMessage.Sender); using (var data = client.OpenRead(_baseUrl)) { if (data != null) { using (var reader = new StreamReader(data)) { var response = reader.ReadToEnd(); _logger.Debug("Response from sending to " + smsMessage.ToLongString() + " is " + response); } } else { _logger.Debug("Unable to retrieve data from the specified URL: " + _baseUrl); } } } ; smsMessage.Sent = 1; // 1 for Success smsMessage.DateSent = DateTime.Now; _logger.Info("Sending Complete for " + smsMessage.ToLongString()); } catch (Exception ex) { _logger.Error("Exception occurred sending " + smsMessage.ToLongString() + " : " + ex.Message); } }
private void UpdateSms(OutboundSms smsMessage) { _logger.Debug("Updating " + smsMessage.ToLongString()); try { smsMessage.DateModified = DateTime.Now; smsMessage.Attempts++; _logger.Info("Update Complete for " + smsMessage.ToLongString()); } catch (DbEntityValidationException dbex) { _logger.Info("Validation Exception occurred while updating " + smsMessage.ToLongString() + " : " + dbex.ToLogString()); } catch (Exception ex) { _logger.Info("Exception occurred while updating " + smsMessage.ToLongString() + " : " + ex.Message); } }
/// <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))); }