public static void Main(string[] args) { using (var client = new AmazonPinpointClient(RegionEndpoint.GetBySystemName(region))) { var sendRequest = new SendMessagesRequest { ApplicationId = appId, MessageRequest = new MessageRequest { Addresses = new Dictionary <string, AddressConfiguration> { { toAddress, new AddressConfiguration { ChannelType = "EMAIL" } } }, MessageConfiguration = new DirectMessageConfiguration { EmailMessage = new EmailMessage { FromAddress = senderAddress, SimpleEmail = new SimpleEmail { HtmlPart = new SimpleEmailPart { Charset = charset, Data = htmlBody }, TextPart = new SimpleEmailPart { Charset = charset, Data = textBody }, Subject = new SimpleEmailPart { Charset = charset, Data = subject } } } } } }; try { Console.WriteLine("Sending message..."); SendMessagesResponse response = client.SendMessages(sendRequest); Console.WriteLine("Message sent!"); } catch (Exception ex) { Console.WriteLine("The message wasn't sent. Error message: " + ex.Message); } } }
public async Task <IActionResult> SendTextMessage([FromBody] TextMessage model) { if (model == null || string.IsNullOrWhiteSpace(model.MessageBody) || string.IsNullOrWhiteSpace(model.DestinationNumber) || string.IsNullOrWhiteSpace(model.MessageType)) { return(BadRequestResult(SMS)); } if (!ValidationHelper.IsValidPhoneNumber(model.DestinationNumber)) { return(BadRequestResult(SMS)); } if (!ValidationHelper.IsValidMessageType(model.MessageType)) { return(BadRequestResult(SMS)); } var client = new AmazonPinpointClient(_awsCredentials, RegionEndpoint.GetBySystemName(_awsSettings.Region)); SendMessagesRequest sendRequest = SendMessageRequest(SMS, model.DestinationNumber); sendRequest.MessageRequest.MessageConfiguration = new DirectMessageConfiguration { SMSMessage = new SMSMessage { Body = model.MessageBody, MessageType = model.MessageType .ToUpper(), //messageType can be TRANSACTIONAL or PROMOTIONAL } }; try { SendMessagesResponse response = await client.SendMessagesAsync(sendRequest); ((IDisposable)client).Dispose(); if (response.HttpStatusCode != HttpStatusCode.OK) { return(BadRequestResult(SMS)); } if (response.MessageResponse.Result[model.DestinationNumber].StatusCode != StatusCodes.Status200OK) { return(BadRequestResult(SMS)); } } catch { ((IDisposable)client).Dispose(); return(BadRequestResult(SMS)); } return(new OkObjectResult(new { success = true, message = $"{SMS} sent." })); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { SendMessagesResponse response = new SendMessagesResponse(); var unmarshaller = MessageResponseUnmarshaller.Instance; response.MessageResponse = unmarshaller.Unmarshall(context); return(response); }
public ActionResult <bool> Send([FromForm] string sourceapplication, [FromForm] string destination_number, [FromForm] string content) { try { ///TODO : 1. Validate input. If blank reply false ///2. Set keys in appsettings for below two key ///3. Handle Log ///4. SEt from Name _log.Log(LogLevel.Information, "Send SMS Process start."); var basicAuthUserName = _iconfiguration["basicAuthUserName"]; var basicAuthPassword = _iconfiguration["basicAuthPassword"]; var FromName = _iconfiguration["FromName"]; //String basicAuthUserName = "******"; //String basicAuthPassword = "******"; bool useHmacAuthentication = false; MessageMediaMessagesClient client = new MessageMediaMessagesClient(basicAuthUserName, basicAuthPassword, useHmacAuthentication); MessagesController messages = client.Messages; string bodyValue = "{"; bodyValue += "'messages':["; bodyValue += "{"; bodyValue += "'content':'" + content + "',"; bodyValue += "'destination_number':'" + destination_number + "',"; bodyValue += "'source_number': 'VGH',"; bodyValue += "'source_number_type': 'ALPHANUMERIC'"; bodyValue += "}"; bodyValue += "]"; bodyValue += "}"; var body = Newtonsoft.Json.JsonConvert.DeserializeObject <SendMessagesRequest>(bodyValue); SendMessagesResponse result = messages.SendMessages(body); if (result.Messages.Count > 0) { _log.Log(LogLevel.Information, result.Messages[0].Status.Value.ToString()); _log.Log(LogLevel.Information, result.Messages[0].MessageId.ToString()); _log.Log(LogLevel.Information, result.Messages[0].DestinationNumber.ToString()); } } catch (Exception ex) { _log.Log(LogLevel.Information, "SMS error while sending."); return(false); } return(true); }
public static void Main(string[] args) { using (AmazonPinpointClient client = new AmazonPinpointClient(RegionEndpoint.GetBySystemName(region))) { SendMessagesRequest sendRequest = new SendMessagesRequest { ApplicationId = appId, MessageRequest = new MessageRequest { Addresses = new Dictionary <string, AddressConfiguration> { { destinationNumber, new AddressConfiguration { ChannelType = "SMS" } } }, MessageConfiguration = new DirectMessageConfiguration { SMSMessage = new SMSMessage { Body = message, MessageType = messageType, OriginationNumber = originationNumber, SenderId = senderId, Keyword = registeredKeyword } } } }; try { Console.WriteLine("Sending message..."); SendMessagesResponse response = client.SendMessages(sendRequest); Console.WriteLine("Message sent!"); } catch (Exception ex) { Console.WriteLine("The message wasn't sent. Error message: " + ex.Message); } } }
public async Task TestSendMessages1() { // Parameters for the API call SendMessagesRequest body = APIHelper.JsonDeserialize <Models.SendMessagesRequest>("{ \"messages\": [ { \"callback_url\": \"https://my.callback.url.com\", \"content\": \"My first message\", \"destination_number\": \"+61491570156\", \"delivery_report\": true, \"format\": \"SMS\", \"message_expiry_timestamp\": \"2016-11-03T11:49:02.807Z\", \"metadata\": { \"key1\": \"value1\", \"key2\": \"value2\" }, \"scheduled\": \"2016-11-03T11:49:02.807Z\", \"source_number\": \"+61491570157\", \"source_number_type\": \"INTERNATIONAL\" }, { \"callback_url\": \"https://my.callback.url.com\", \"content\": \"My second message\", \"destination_number\": \"+61491570158\", \"delivery_report\": true, \"format\": \"SMS\", \"message_expiry_timestamp\": \"2016-11-03T11:49:02.807Z\", \"metadata\": { \"key1\": \"value1\", \"key2\": \"value2\" }, \"scheduled\": \"2016-11-03T11:49:02.807Z\", \"source_number\": \"+61491570159\", \"source_number_type\": \"INTERNATIONAL\" } ]}"); // Perform API call SendMessagesResponse result = null; try { result = await controller.CreateSendMessagesAsync(body); } catch (APIException) {}; // Test response code Assert.AreEqual(202, httpCallBackHandler.Response.StatusCode, "Status should be 202"); // Test headers Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Content-Type", null); Assert.IsTrue(TestHelper.AreHeadersProperSubsetOf(headers, httpCallBackHandler.Response.Headers), "Headers should match"); // Test whether the captured response is as we expected Assert.IsNotNull(result, "Result should exist"); dynamic messages = result.Messages; //JObject.Parse(TestHelper.ConvertStreamToString(httpCallBackHandler.Response.RawBody)); int count = (int)messages.Count; Assert.AreEqual(count, 2); dynamic firstMessage = messages[0]; dynamic secondMessage = messages[1]; AssertSendMessageResponseValid(firstMessage, "SMS", "My first message", "https://my.callback.url.com", true, "+61491570156", "+61491570157", "queued"); AssertSendMessageResponseValid(secondMessage, "SMS", "My second message", "https://my.callback.url.com", true, "+61491570158", "+61491570159", "queued"); }
public async Task <string> SendMessagetoMedia([FromBody] SendMessage model) { string status = "success"; try { /// ///TODO : 1. Validate input. If blank reply false ///2. Set keys in appsettings for below two key ///3. Handle Log ///4. SEt from Name string s = JsonConvert.SerializeObject(model); _log.Log(LogLevel.Information, "SendMessagetoMedia XML object :: " + s.ToString()); string startTime = _iconfiguration["StartTime"]; string endTime = _iconfiguration["EndTime"]; if (model.Site != 67) { _log.Log(LogLevel.Information, "Site other than 67."); return(status = "Fail,Site other than 67 but it is " + model.Site.ToString()); } if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday && DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now < Convert.ToDateTime(DateTime.Now.ToLongDateString() + startTime) || DateTime.Now > Convert.ToDateTime(DateTime.Now.ToLongDateString() + endTime)) { _log.Log(LogLevel.Information, "Current time is out of range."); return(status = "Fail,Current time is out of range. Current time is " + DateTime.Now.ToString()); } if (model.Phone.Length > 10 || model.Phone.Length < 10) { _log.Log(LogLevel.Information, "Error:Phone number length more then 10 character."); return(status = "Fail,Please Enter Valid Phone Number."); } _log.Log(LogLevel.Information, "Send SMS Process start."); var basicAuthUserName = _iconfiguration["basicAuthUserName"]; var basicAuthPassword = _iconfiguration["basicAuthPassword"]; var FromName = _iconfiguration["FromName"]; string _defaultMessage = _iconfiguration["defaultMessage"]; string _customMessage = _iconfiguration["customMessage"]; string default_to_mailer = _iconfiguration["default_to_mailer"]; string default_from_mailer = _iconfiguration["CountryCode"] + model.Phone + _iconfiguration["default_from_name"]; string default_email_body = _iconfiguration["default_email_body"]; var _messagetext = model.Message; if (string.IsNullOrEmpty(_messagetext)) { if (!string.IsNullOrEmpty(model.AppointmentDate) && !string.IsNullOrEmpty(model.AppointmentTime)) { _messagetext = _customMessage; } else { _messagetext = _defaultMessage; } } bool useHmacAuthentication = false; MessageMediaMessagesClient client = new MessageMediaMessagesClient(basicAuthUserName, basicAuthPassword, useHmacAuthentication); MessagesController messages = client.Messages; string bodyValue = "{"; bodyValue += "'messages':[";// bodyValue += "{"; bodyValue += "'content': '" + _messagetext + "',"; bodyValue += "'destination_number':'" + _iconfiguration["CountryCode"] + model.Phone + "',"; bodyValue += "'source_number': 'VGH',"; bodyValue += "'source_number_type': 'ALPHANUMERIC',"; bodyValue += "'delivery_report': 'true'"; bodyValue += "}"; bodyValue += "]"; bodyValue += "}"; var body = Newtonsoft.Json.JsonConvert.DeserializeObject <SendMessagesRequest>(bodyValue); SendMessagesResponse result = await messages.SendMessagesAsync(body); _log.Log(LogLevel.Information, "Send SMS Process end."); if (result.Messages.Count > 0) { GetMessageStatusResponse _getmessageresponse = messages.GetMessageStatus(result.Messages[0].MessageId.ToString()); _log.Log(LogLevel.Information, result.Messages[0].Status.Value.ToString()); _log.Log(LogLevel.Information, result.Messages[0].MessageId.ToString()); _log.Log(LogLevel.Information, result.Messages[0].DestinationNumber.ToString()); _log.Log(LogLevel.Information, "Delivery Status:" + _getmessageresponse.Status.ToString()); model.MessageID = result.Messages[0].MessageId.ToString(); model.DeliversyStatus = _getmessageresponse.Status.ToString(); // _body += model.Name + " " + default_email_body; model.CreatedBy = _iconfiguration["CreatedBy"]; OuputLogInformation(model); string emailbody = ""; emailbody += "<table >"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Name</strong></td><td>" + model.Name + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Email</strong></td><td>" + model.Email + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Phone</strong></td><td>" + model.Phone + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Age</strong></td><td>" + model.Age_Range + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>ZipCode</strong></td><td>" + model.ZipCode + "</td></tr>"; //emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Closest Center</strong></td><td>" + model.Closest_Center + "</td></tr>"; // emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Created Date</strong></td><td>" + model.Created_Date + "</td></tr>"; //emailbody += "<tr><td style='background-color: yellowgreen;'><strong>CreatedBy</strong></td><td>" + model.CreatedBy + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>AppointmentDate</strong></td><td>" + model.AppointmentDate + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>AppointmentTime</strong></td><td>" + model.AppointmentTime + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Location</strong></td><td>" + model.Location + "</td></tr>"; emailbody += "<tr><td style='background-color: yellowgreen;'><strong>Language</strong></td><td>" + model.Language + "</td></tr>"; emailbody += "</table>"; SendEmailMedia(default_to_mailer, FromName, "SMS Chat [" + model.Name + "-" + model.Phone + "]", emailbody, default_from_mailer); } } catch (Exception ex) { _log.Log(LogLevel.Information, "SMS error while sending." + ex.Message); return(status = "Something went wrong!"); } return(status); }
public async Task <string> SendSMSBookingConfirmation() { string status = "success"; try { _log.Log(LogLevel.Information, "Send SMS Process start."); var basicAuthUserName = _iconfiguration["basicAuthUserName"]; var basicAuthPassword = _iconfiguration["basicAuthPassword"]; var FromName = _iconfiguration["FromName"]; List <BookingConfirmationModel> _models = GetSMSBookingConfirmationDetails(); foreach (var model in _models) { try { bool useHmacAuthentication = false; MessageMediaMessagesClient client = new MessageMediaMessagesClient(basicAuthUserName, basicAuthPassword, useHmacAuthentication); MessagesController messages = client.Messages; string bodyValue = "{"; bodyValue += "'messages':["; bodyValue += "{"; bodyValue += "'content': '" + model.textMessage + "',"; bodyValue += "'destination_number':'" + _iconfiguration["CountryCode"] + model.primary_phone + "',"; bodyValue += "'source_number': 'VGH',"; bodyValue += "'source_number_type': 'ALPHANUMERIC'"; bodyValue += "}"; bodyValue += "]"; bodyValue += "}"; _log.Log(LogLevel.Information, "SendSMSBookingConfirmation object String :: " + bodyValue.ToString()); var body = Newtonsoft.Json.JsonConvert.DeserializeObject <SendMessagesRequest>(bodyValue); SendMessagesResponse result = await messages.SendMessagesAsync(body); _log.Log(LogLevel.Information, "Send SMS Process end."); if (result.Messages.Count > 0) { GetMessageStatusResponse _getmessageresponse = messages.GetMessageStatus(result.Messages[0].MessageId.ToString()); _log.Log(LogLevel.Information, "lKey value : " + model.lKey); _log.Log(LogLevel.Information, "Status value : " + result.Messages[0].Status.Value.ToString()); _log.Log(LogLevel.Information, "MessageResponseID value : " + result.Messages[0].MessageId.ToString()); //MessageResponseID _log.Log(LogLevel.Information, "DestinationNumber value : " + result.Messages[0].DestinationNumber.ToString()); _log.Log(LogLevel.Information, "Delivery Status:" + _getmessageresponse.Status.ToString()); //MessageSendSuccess NobleHistoryModel objmain = new NobleHistoryModel(); objmain.lKey = Convert.ToInt32(model.lKey); objmain.MessageResponseID = result.Messages[0].MessageId.ToString(); objmain.MessageSendSuccess = _getmessageresponse.Status.ToString(); string Res = UpdateNobleHistorySMSStatus(objmain); } } catch (Exception ex) { _log.Log(LogLevel.Information, "error occured while sending Confirmation SMS :" + ex.Message); } } } catch (Exception ex) { _log.Log(LogLevel.Information, "SendSMSBookingConfirmation() --> SMS error while sending." + ex.Message); return(status = "Something went wrong!"); } return(status); }
public async Task TestSendMessages1() { // Parameters for the API call SendMessagesRequest body = new SendMessagesRequest() { Messages = new List <Message> { new Message() { CallbackUrl = "https://my.callback.url.com", Content = "My first message", DestinationNumber = "+61491570156", DeliveryReport = true, Format = MessageFormat.SMS, MessageExpiryTimestamp = new DateTime(2016, 11, 03, 11, 49, 02, DateTimeKind.Utc), Metadata = new Dictionary <string, string>() { { "key1", "value1" }, { "key2", "value2" } }, Scheduled = new DateTime(2016, 11, 03, 11, 49, 02, DateTimeKind.Utc), SourceNumber = "+61491570157", SourceNumberType = NumberType.INTERNATIONAL }, new Message() { CallbackUrl = "https://my.callback.url.com", Content = "My second message", DestinationNumber = "+61491570158", DeliveryReport = true, Format = MessageFormat.SMS, MessageExpiryTimestamp = new DateTime(2016, 11, 03, 11, 49, 02, DateTimeKind.Utc), Metadata = new Dictionary <string, string>() { { "key1", "value1" }, { "key2", "value2" } }, Scheduled = new DateTime(2016, 11, 03, 11, 49, 02, DateTimeKind.Utc), SourceNumber = "+61491570159", SourceNumberType = NumberType.INTERNATIONAL } } }; // Perform API call SendMessagesResponse result = null; try { result = await controller.CreateSendMessagesAsync(body); } catch (APIException) {}; // Test response code Assert.AreEqual(202, httpCallBackHandler.Response.StatusCode, "Status should be 202"); // Test headers Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Content-Type", null); Assert.IsTrue(TestHelper.AreHeadersProperSubsetOf(headers, httpCallBackHandler.Response.Headers), "Headers should match"); // Test whether the captured response is as we expected Assert.IsNotNull(result, "Result should exist"); dynamic messages = result.Messages; int count = (int)messages.Count; Assert.AreEqual(count, 2); dynamic firstMessage = messages[0]; dynamic secondMessage = messages[1]; AssertSendMessageResponseValid(firstMessage, "SMS", "My first message", "https://my.callback.url.com", true, "+61491570156", "+61491570157", "queued"); AssertSendMessageResponseValid(secondMessage, "SMS", "My second message", "https://my.callback.url.com", true, "+61491570158", "+61491570159", "queued"); }
public async Task <IActionResult> SendEmail([FromBody] EmailModel model) { if (model == null || string.IsNullOrWhiteSpace(model.SubjectBody) || string.IsNullOrWhiteSpace(model.ToAddress) || (string.IsNullOrWhiteSpace(model.HtmlBody) && string.IsNullOrWhiteSpace(model.TextBody))) { return(BadRequestResult(EMAIL)); } if (!ValidationHelper.IsValidEmailAddress(model.ToAddress)) { return(BadRequestResult(EMAIL)); } var client = new AmazonPinpointClient(_awsCredentials, RegionEndpoint.GetBySystemName(_awsSettings.Region)); SendMessagesRequest sendRequest = SendMessageRequest(EMAIL.ToUpper(), model.ToAddress); sendRequest.MessageRequest.MessageConfiguration = new DirectMessageConfiguration { EmailMessage = new EmailMessage { FromAddress = _awsSettings.AwsEmail.SenderAddress, SimpleEmail = new SimpleEmail { HtmlPart = string.IsNullOrWhiteSpace(model.HtmlBody) ? null : new SimpleEmailPart { Charset = _awsSettings.AwsEmail.CharSet, Data = model.HtmlBody }, TextPart = !string.IsNullOrWhiteSpace(model.HtmlBody) ? null : new SimpleEmailPart { Charset = _awsSettings.AwsEmail.CharSet, Data = model.TextBody }, Subject = new SimpleEmailPart { Charset = _awsSettings.AwsEmail.CharSet, Data = model.SubjectBody } } } }; try { SendMessagesResponse response = await client.SendMessagesAsync(sendRequest); ((IDisposable)client).Dispose(); if (response.MessageResponse.Result[model.ToAddress].StatusCode != StatusCodes.Status200OK) { return(BadRequestResult(EMAIL)); } if (response.HttpStatusCode != HttpStatusCode.OK) { return(BadRequestResult(EMAIL)); } } catch { ((IDisposable)client).Dispose(); return(BadRequestResult("Email")); } return(new OkObjectResult(new { success = true, message = "Email sent." })); }