public void Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); IncomingSMSMessage incomingMessage = JsonConvert.DeserializeObject <IncomingSMSMessage>(eventGridEvent.Data.ToString()); _smsService.ProcessIncomingMessage(incomingMessage); }
/// <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); }
/// <summary> /// Converts the <see cref="IncomingSMSMessage"/> to a <see cref="SMSMessage"/>. /// </summary> /// <param name="incomingMessage">The incoming message to be converted.</param> /// <returns>A <see cref="SMSMessage"/> representing the <paramref name="incomingMessage"/>.</returns> public static SMSMessage ToSMSMessage(this IncomingSMSMessage incomingMessage) { return(new SMSMessage() { MessageId = incomingMessage.MessageId, FromPhoneNumber = incomingMessage.From, ToPhoneNumber = incomingMessage.To, Message = incomingMessage.Message, ReceivedTimestamp = incomingMessage.ReceivedTimestamp }); }
/// <summary> /// Converts the <see cref="IncomingSMSMessage"/> to a <see cref="SMSMessageTableEntity"/>. /// </summary> /// <param name="incomingMessage">The incoming message to be converted.</param> /// <returns>A <see cref="SMSMessageTableEntity"/> representing the <paramref name="incomingMessage"/>.</returns> public static SMSMessageTableEntity ToSMSMessageTableEntity(this IncomingSMSMessage incomingMessage) { return(new SMSMessageTableEntity() { PartitionKey = incomingMessage.From, RowKey = incomingMessage.MessageId, FromPhoneNumber = incomingMessage.From, ToPhoneNumber = incomingMessage.To, Message = incomingMessage.Message, MessageId = incomingMessage.MessageId }); }