Automatización del flujo de trabajo con C# y ASP.NET Core
Uno de los conceptos más abstractos que te encontrarás al crear tu empresa es el aspecto que tendrá el flujo de trabajo.
En esencia, la configuración de un flujo de trabajo estandarizado consiste en permitir que tus proveedores de servicios (agentes, anfitriones, representantes del servicio de atención al cliente, administradores y el resto del grupo) presten un mejor servicio a tus clientes.
Para ilustrar un ejemplo muy real, hoy crearemos una aplicación web de C# y ASP.NET Core MVC para buscar y reservar propiedades vacacionales, llamada provisionalmente Airtng.
Así es como funcionará:
- Un anfitrión crea una lista de propiedades vacacionales
- Un huésped solicita la reserva de una propiedad
- El anfitrión recibe un SMS que lo notifica sobre la solicitud de reserva. El anfitrión puede aceptar o rechazar la reserva
- Se notifica al huésped si se aceptó o rechazó la solicitud
Componentes básicos del flujo de trabajo
Utilizaremos la API REST de Twilio para enviar mensajes a nuestros usuarios en momentos importantes. Aquí hay un poco más de información sobre nuestra API:
¿Listo para empezar? Haz clic en el botón que se encuentra justo después de esta oración.
Autenticar usuarios
Para que este caso de uso funcione, tenemos que gestionar la autenticación. Confiamos en ASP.NET Core Identity para este fin.
El usuario de Identity ya incluye un phone_number
que será necesario para enviar notificaciones de SMS más adelante.
A continuación, echemos un vistazo al modelo de propiedad vacacional.
El modelo de propiedad vacacional
Nuestra aplicación móvil de alquiler obviamente requerirá un listado de propiedades.
La VacationProperty
pertenece al User
que la creó (a partir de ahora, a este usuario lo llamaremos anfitrión) y contiene solo dos propiedades: una Description
y una ImageUrl
.
Una VacationProperty
puede tener muchas Reservations.
A continuación, veamos el aspecto de nuestro modelo de reserva.
Modelo de reserva
El modelo de Reservation
se encuentra en el centro del flujo de trabajo para esta aplicación móvil.
Es responsable de realizar un seguimiento de los siguientes elementos:
- La
VacationProperty
con la que está asociado para tener acceso. A través de esta propiedad, el usuario tendrá acceso al número de teléfono del anfitrión de forma indirecta. - El
Name
yPhoneNumber
del huésped. - El
Message
que se envió al huésped en el momento de la reserva. - El
Status
de la reserva.
Ahora que nuestros modelos se encuentran listos, echemos un vistazo al controlador que creará las reservas.
Crear una reserva
El formulario de creación de reservas contiene un solo campo: el mensaje que se enviará al anfitrión cuando se reserve una de sus propiedades. El resto de la información necesaria para crear una reserva se toma de la misma VacationProperty
.
Se crea una reserva con un estado predeterminado ReservationStatus.Pending
. De ese modo, cuando el anfitrión responde con accept
o reject
, la aplicación móvil sabe qué reserva actualizar.
A continuación, veamos cómo enviaremos notificaciones de SMS al anfitrión del alquiler vacacional.
Notificar al anfitrión
Cuando se crea una reserva, queremos notificar al propietario de la propiedad que alguien está interesado.
Aquí es donde usamos la biblioteca auxiliar de Twilio para C# a fin de enviar un mensaje SMS al anfitrión, mediante nuestro número de teléfono de Twilio. Como puedes ver, enviar mensajes SMS con Twilio solo toma unas pocas líneas de código.
A continuación, solo tenemos que esperar a que el anfitrión envíe una respuesta SMS aceptando o rechazando la reserva. Lugo, podemos notificar al huésped y al anfitrión que se actualizó la información de la reserva.
Ahora veamos cómo gestionamos las respuestas del anfitrión.
Gestionar mensajes entrantes
El controlador de Sms/Handle
gestiona nuestra solicitud entrante de Twilio y realiza las siguientes cuatro cosas:
- Comprueba la reserva pendiente del huésped
- Actualiza el estado de la reserva
- Responde al anfitrión
- Envía una notificación al huésped
Veamos con más detalle cómo los webhooks de Twilio se encuentran configurados para permitir solicitudes entrantes a nuestra aplicación móvil.
Solicitudes entrantes de Twilio
En la consola de Twilio, debes configurar el webhook de SMS para llamar al punto final de la aplicación móvil en la ruta Reservations/Handle
.
Una manera de exponer tu máquina de desarrollo al mundo exterior es con la utilización de ngrok. La URL del webhook de SMS de tu número tendría el siguiente aspecto:
http://<subdomain>.ngrok.io/Reservations/Handle
Una solicitud entrante de Twilio cuenta con algunos parámetros útiles, como un número de teléfono from
y el body
del mensaje.
Usaremos el parámetro from
para buscar al anfitrión y comprobar si tiene reservas pendientes. Si es así, utilizaremos el cuerpo del mensaje para comprobar si se “acepta” o “rechaza”.
En el último paso, usaremos TwiML de Twilio como respuesta a Twilio para enviar un mensaje SMS al huésped.
Ahora que sabemos cómo exponer un webhook para gestionar solicitudes de Twilio, veamos cómo generamos el TwiML necesario.
Respuesta TwiML
Después de actualizar el estado de la reserva, debemos notificar al anfitrión que confirmó o rechazó la reserva de manera correcta. También tenemos que devolver un mensaje de error descriptivo si no hay reservas pendientes.
Si la reserva se confirma o rechaza, enviamos un SMS adicional al huésped para entregar la información.
Usamos el verbo Message de TwiML para indicar al servidor de Twilio que debe enviar los mensajes SMS.
¡Felicitaciones! Acabas de aprender a automatizar tu flujo de trabajo con Twilio SMS.
A continuación, veamos qué más podemos hacer con el SDK para C# de Twilio.
¿Dónde ir a continuación?
Si eres un desarrollador de .NET que trabaja con Twilio, sabes que tenemos mucho contenido estupendo aquí en el sitio de documentos. Aquí hay un par de ideas para tu siguiente tutorial:
Dirige fácilmente a los agentes de llamada a la información y a las personas adecuadas con un sistema de IVR (respuesta de voz interactiva).
Recopila al instante datos estructurados de tus usuarios con una encuesta realizada a través de una llamada de voz o mensajes de texto SMS.
¿Esto fue de ayuda?
Gracias por consultar este tutorial. Escríbenos en Twitter, a @twilio, ¡y cuéntanos sobre lo que estás creando!
¿Necesitas ayuda?
Todos la necesitamos a veces; la programación es difícil. Obtén ayuda ahora de nuestro equipo de soporte, o recurre a la sabiduría de la multitud visitando Stack Overflow Collective de Twilio o navegando por la etiqueta de Twilio en Stack Overflow.