Automatización del flujo de trabajo con Java y Servlets
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 Java y Servlets a fin de 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.
Administración de usuarios y sesiones
Para que este flujo de trabajo funcione, necesitamos tener un modelo de usuario y permitir inicios de sesión.
A continuación, veamos el modelo de propiedad vacacional.
Modelo de propiedad vacacional
Con el fin de crear una verdadera empresa de alquiler vacacional necesitaremos una manera de crear un listado de alquiler de propiedades.
El modelo de VacationProperty
pertenece al User
que lo creó (a partir de ahora, a este usuario lo llamaremos anfitrión) y contiene solo dos propiedades: una description
y una imageUrl
.
El modelo tiene dos asociaciones implementadas: hay muchas reservas en él y muchos usuarios pueden realizar dichas reservas.
A continuación, veamos el importante modelo de reserva.
El 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, te mostraremos cómo nuestra nueva aplicación móvil creará una nueva reserva.
Crear una reserva
El formulario de creación de reservas solo contiene un campo, el mensaje que se enviará a la anfitrión cuando reserve una de sus propiedades.
El resto de la información necesaria para crear una reserva se obtiene del usuario que inició sesión y de la relación entre una propiedad y su propietario. Nuestro Repository
genérico base se encarga de gestionar la inserción de entidades.
Se crea una reserva con un estado predeterminado pending.
Esto permite que nuestra aplicación móvil reaccione fácilmente ante un anfitrión rechazando o aceptando una solicitud de reserva.
Ahora veamos cómo el sistema notificará a un host
cuando se envíe una solicitud de reserva nueva.
Notificar al anfitrión
Cuando se crea una reserva para una propiedad, queremos notificar al propietario que alguien realizó una reserva.
Usamos una abstracción llamada SmsNotifier
que, a su vez, utiliza otra abstracción llamada Sender
. Aquí es donde se utiliza la API REST de Twilio para enviar un mensaje SMS al anfitrión con tu número de teléfono de Twilio. Exacto, es tan simple como enviar un SMS con Twilio.
En el siguiente paso se muestra cómo gestionar que un anfitrión acepte o rechace una solicitud. Continuemos.
Gestionar mensajes entrantes
Veamos de manera más detallada el servlet de ReservationConfirmation
. Este servlet 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.
Solicitudes entrantes 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 /reservation-confirmation:
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/reservation-confirmation
Una solicitud entrante de Twilio cuenta con algunos parámetros útiles, incluido el 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í, usaremos el cuerpo del mensaje para comprobar si se “acepta” o “rechaza”.
Por último, actualizamos el estado de la reserva y utilizamos la abstracción SmsNotifier
para enviar un SMS al huésped con la información.
A continuación, veamos cómo responderemos a Twilio.
Respuesta TwiML
Por último, usaremos TwiML de Twilio como respuesta al servidor de Twilio que le indica que envíe un mensaje de notificación de SMS al huésped.
Usaremos el verbo Message
para indicar al servidor de Twilio que debe enviar el mensaje.
¡Felicitaciones! Acabas de aprender a automatizar tu flujo de trabajo con Twilio SMS.
A continuación, veamos algunas otras funciones interesantes que te recomendamos agregar a tu aplicación móvil.
¿Dónde ir a continuación?
¿Te gusta Twilio? ¿Te gusta Java? Estás en el lugar correcto. Aquí hay un par de otros excelentes tutoriales:
Crea un sistema de notificaciones de servidor que avise a todos los administradores a través de SMS cuando se produzca una interrupción del servidor.
Convierte el tráfico web en llamadas telefónicas con solo hacer clic en un botón.
¿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.