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);
         }
     }
 }
Exemplo n.º 2
0
        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);
         }
     }
 }
Exemplo n.º 6
0
        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");
        }
Exemplo n.º 10
0
        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." }));
        }