Automatización del flujo de trabajo con Node.js y Express
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 Node.js y Express 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 a nuestros usuarios
Para que este flujo de trabajo funcione, necesitamos gestionar la autenticación del usuario. Vamos a confiar en Passport para Node.js.
Cada User
deberá tener un countryCode
y un phoneNumber
, que serán necesarios para enviar notificaciones de SMS más adelante.
A continuación, modelemos las propiedades vacacionales.
Modelo de propiedad vacacional
Con el fin de crear nuestra empresa de alquileres necesitaremos una manera de crear los listados de propiedades.
La Property
pertenece al User
que la creó (en adelante, a este usuario lo llamaremos anfitrión) y contiene solo dos propiedades: una description
y una imageUrl
.
A continuación, el 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:
- El
guest
que realizó la reserva - La
vacation_property
que solicita el huésped (y el anfitrión asociado) - El
status
de la reserva:pending
,confirmed
orejected
A continuación, veamos cómo activar la creación de una reserva nueva.
Crear una reserva
El formulario de creación de reservas contiene solo un campo: el mensaje que se enviará al anfitrión cuando reserve una de sus propiedades. El resto de la información necesaria para crear una reserva se toma de la propiedad vacacional.
Una reserva se crea con un estado predeterminado pending
, de modo que cuando el anfitrión responde con accept
o reject
, nuestra aplicación móvil sabe qué reserva actualizar.
En el siguiente paso, veremos cómo se envía la notificación de SMS al anfitrión cuando se crea la reserva.
Notificar al anfitrión
Cuando se crea una reserva, queremos notificar al propietario de dicha propiedad que alguien realizó una reserva.
Aquí es donde usamos la biblioteca auxiliar de Twilio para Node a fin de enviar un mensaje SMS al anfitrión, mediante nuestro número de teléfono de Twilio. Como puedes ver, el envío de mensajes SMS con Twilio se realiza con solo unas pocas líneas de código.
Ahora solo tenemos que esperar a que el anfitrión envíe un SMS de respuesta aceptando o rechazando la reserva para que podamos notificar al huésped y al anfitrión que la información de la reserva se actualizó.
En el siguiente paso se muestra cómo gestionar y configurar la respuesta de SMS del anfitrión.
Gestionar mensajes entrantes
El punto final de reservations/handle
gestiona nuestra solicitud entrante de Twilio y realiza las siguientes tres cosas:
- Comprueba si hay una reserva pendiente del usuario entrante.
- Actualiza el estado de la reserva.
- Responde al anfitrión y envía una notificación al huésped.
Configurar los webhooks de Twilio
En la consola de Twilio, deberías cambiar el webhook “A message comes in” (Llega un mensaje) para llamar al punto final de tu aplicación móvil en la ruta /handle:
Una manera de exponer tu máquina al mundo durante el desarrollo es usar ngrok. La dirección URL del webhook de SMS de tu número de teléfono debe tener el siguiente aspecto:
http://<subdomain>.ngrok.io/handle
Una solicitud entrante de Twilio cuenta con algunos elementos útiles, incluido el número de teléfono From
y el Body
del mensaje.
Usaremos el parámetro From
para buscar a la anfitriona y comprobar si tiene reservas pendientes. Si es así, utilizaremos el cuerpo del mensaje para comprobar si aceptó o rechazó la reserva.
En el último paso, usaremos TwiML de Twilio e indicaremos a Twilio que envíe mensajes SMS al huésped.
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. Si no se encuentra ninguna reserva, en su lugar enviamos un mensaje de error.
Si una reserva se confirma o rechaza, enviamos un SMS adicional al huésped para informarlo.
Usamos el verbo Message de TwiML para indicar al servidor de Twilio que debe enviar mensajes SMS.
¡Y eso es todo! A continuación, echemos un vistazo a otras funciones que puedes disfrutar en tu aplicación móvil.
¿Dónde ir a continuación?
Node.js funciona muy bien con la ayuda de Twilio... vamos a demostrarlo:
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.