Beispiel #1
0
        /// <summary>
        /// Processes an incoming SMS message.
        /// </summary>
        /// <param name="incomingMessage">The incoming message.</param>
        public void ProcessIncomingMessage(IncomingSMSMessage incomingMessage)
        {
            string message = incomingMessage.Message.ToLower();
            string returnMessage;

            if (message.Contains("price") ||
                message.Contains("pricing") ||
                message.Contains("cost") ||
                message.Contains("rate") ||
                message.Contains("how much"))
            {
                // Add a follow up task within CRM
                returnMessage = "Thank you for inquiring about Atria Stony Brook. Rental rates can be found at: https://www.atriaseniorliving.com/retirement-communities/atria-stony-brook-louisville-ky/#iframePricing";
            }
            else if (message.Contains("schedule") || message.Contains("tour"))
            {
                // Add a schedule virtual tour task within CRM
                returnMessage = "Someone will be contacting you very soon to schedule a virtual tour.";
            }
            else
            {
                // Add a follow up task within CRM
                returnMessage = "Thank you for inquiring about Atria Stony Brook.  Someone will be getting back to you really soon.";
            }

            SendSMS(incomingMessage.To, incomingMessage.From, returnMessage, true);

            SMSMessageTableEntity.Save(incomingMessage.ToSMSMessageTableEntity(), _azureStorageSettings, _messageArchiveTable);
        }
Beispiel #2
0
        /// <summary>
        /// Adds delivery confirmation information to a sent message log.
        /// </summary>
        /// <param name="toPhoneNumber">The recipient's phone number.</param>
        /// <param name="messageId">Identifier of the sent message.</param>
        /// <param name="deliveryStatus">The delivery status of the message.</param>
        /// <param name="deliveryStatusDetail">Details of the delivery status.</param>
        /// <param name="receivedTimestamp">Timestamp when the message was received.</param>
        public void AddDeliveryConfirmation(string toPhoneNumber, string messageId, string deliveryStatus, string deliveryStatusDetail, string receivedTimestamp)
        {
            SMSMessage smsMessage = SMSMessageTableEntity.Retrieve(toPhoneNumber, messageId, _azureStorageSettings, _messageArchiveTable);

            smsMessage.DeliveryStatus       = deliveryStatus;
            smsMessage.DeliveryStatusDetail = deliveryStatusDetail;
            smsMessage.ReceivedTimestamp    = receivedTimestamp;
            SMSMessageTableEntity.Save(smsMessage.ToSMSMessageTableEntity(), _azureStorageSettings, _messageArchiveTable);
        }
Beispiel #3
0
        /// <summary>
        /// Sends the specified SMS message.
        /// </summary>
        /// <param name="fromPhoneNumber">The origin phone number</param>
        /// <param name="toPhoneNumber">The destination phone number.</param>
        /// <param name="message">Text of the message to be sent.</param>
        /// <param name="enableDeliveryReport">If set to <c>true</c> the delivery report will be enabled.</param>
        /// <returns>A <c>string</c> representing the sent message identifier.</returns>
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="fromPhoneNumber"/>, <paramref name="toPhoneNumber"/>,
        /// or <paramref name="message"/> are not specified.
        /// </exception>
        /// <exception cref="Exception">Thrown if the SMS client was not initialized correctly.</exception>
        public string SendSMS(string fromPhoneNumber, string toPhoneNumber, string message, bool enableDeliveryReport = true)
        {
            if (string.IsNullOrWhiteSpace(fromPhoneNumber))
            {
                throw new ArgumentNullException(nameof(fromPhoneNumber));
            }
            if (string.IsNullOrWhiteSpace(toPhoneNumber))
            {
                throw new ArgumentNullException(nameof(toPhoneNumber));
            }
            if (string.IsNullOrWhiteSpace(message))
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (_smsClient is null)
            {
                throw new Exception("The SMS Client was not initialized correctly.");
            }

            Response <SendSmsResponse> response = _smsClient.Send(
                from: new PhoneNumber(fromPhoneNumber),
                to: new PhoneNumber(toPhoneNumber),
                message: message,
                new SendSmsOptions {
                EnableDeliveryReport = enableDeliveryReport
            });

            SMSMessageTableEntity.Save(
                new SMSMessage()
            {
                FromPhoneNumber = _fromPhoneNumber,
                ToPhoneNumber   = toPhoneNumber,
                Message         = message,
                MessageId       = response.Value.MessageId
            }.ToSMSMessageTableEntity(),
                _azureStorageSettings,
                _messageArchiveTable);

            return(response.Value.MessageId);
        }
Beispiel #4
0
 /// <summary>
 /// Retrieves the log of a sent message.
 /// </summary>
 /// <param name="toPhoneNumber">The recipient's phone number.</param>
 /// <param name="messageId">Identifier of the sent message.</param>
 /// <returns>
 /// A <see cref="SMSMessage" /> representing the log of the sent message.
 /// </returns>
 public SMSMessage RetrieveSentMessage(string toPhoneNumber, string messageId)
 {
     return(SMSMessageTableEntity.Retrieve(toPhoneNumber, messageId, _azureStorageSettings, _messageArchiveTable));
 }