Automatización del flujo de trabajo con PHP y Laravel
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 PHP y Laravel 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:
¡Continuemos con el siguiente paso! Haz clic en el botón que aparece a continuación para empezar.
Administración de usuarios y sesiones
Nuestro flujo de trabajo requerirá permitir que los usuarios creen cuentas e inicien sesión para intentar reservar propiedades.
Cada User
deberá tener un phone_number
que será necesario para enviar notificaciones de SMS más adelante.
A continuación, crearemos una tabla que representa una propiedad de alquiler vacacional.
Propiedad vacacional
Necesitaremos una manera de crear los listados de propiedades para que Airtng sea un éxito.
El modelo de VacationProperty
pertenece a un User
que lo creó (a partir de ahora, a este usuario lo llamaremos anfitrión) y contiene solo dos propiedades: una description
y una image_url
.
Presenta dos asociaciones: tiene muchas reservas y muchos usuarios en esas reservas.
A continuación: cómo modelaremos una reserva.
Nuestro 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
Dado que la reserva solo puede tener un huésped en este ejemplo, simplificamos el modelo mediante la asignación del phone_number
directamente al modelo (pero se recomienda quitarlo).
Nuestras tablas se encuentran listas, ahora veamos cómo crearíamos una reserva.
Creación de reservas
El formulario de creación de reservas contiene un solo campo: el mensaje que se enviará al usuario 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 en el sistema y de la relación entre una propiedad y su propietario.
Una reserva se crea con un estado predeterminado pending
, de modo que cuando el anfitrión responde con confirm
o reject
, el sistema sabe qué reserva actualizar.
Veamos 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 para una propiedad, queremos notificar al propietario de esa propiedad que alguien solicitó una reserva.
Aquí es donde usamos la API REST de Twilio para enviar un mensaje SMS al anfitrión, mediante nuestro número de teléfono de Twilio. El envío de mensajes SMS con Twilio solo toma unas pocas líneas de código.
Ahora solo tenemos que esperar a que el anfitrión envíe un SMS de respuesta para “aceptar” o “rechazar”, notificar al huésped y actualizar la reserva.
Veamos cómo gestionaríamos los mensajes entrantes de Twilio y aceptaríamos o rechazaríamos las reservas.
Gestionar mensajes entrantes
Nos centramos en el método acceptReject
para obtener más detalles. Este método 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
Para dirigir mensajes SMS hacia y desde el anfitrión, necesitamos configurar los webhooks de Twilio. El siguiente panel te mostrará cómo hacerlo.
Gestionar solicitudes entrantes de Twilio
Este método gestiona la solicitud de Twilio que activa el SMS del anfitrión y realiza las siguientes tres cosas:
- Comprueba si hay una reserva pendiente de un usuario
- Actualiza el estado de la reserva
- Responde al anfitrión y envía una notificación al usuario
Configuración de 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/incoming:
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/incoming
Una solicitud entrante de Twilio cuenta con algunos parámetros útiles. Estos incluyen el número de teléfono From
y el Body
del mensaje.
Utilizaremos el parámetro From
para buscar al anfitrión y comprobar si tiene alguna reserva pendiente. Si es así, utilizaremos el cuerpo del mensaje para comprobar el mensaje de “aceptación” o “rechazo”. Por último, actualizamos el estado de la reserva y enviamos un SMS al huésped diciéndole que el anfitrión aceptó o rechazó su solicitud de reserva.
Respuesta TwiML
En nuestra respuesta a Twilio, usaremos TwiML de Twilio para ordenar a Twilio que envíe un mensaje de notificación de SMS al anfitrión.
En el último paso, responderemos a la solicitud de Twilio con un TwiML que le indique que envíe un SMS tanto al anfitrión como 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 forma correcta. Si el anfitrión no tiene ninguna reserva pendiente, en su lugar, devolveremos un mensaje de error.
Si modificamos una reserva, también enviaremos un mensaje al usuario que solicitó el alquiler entregando las buenas o malas noticias.
Usamos el verbo Message de TwiML para indicar a Twilio que envíe dos mensajes SMS.
¡Felicitaciones! Acabamos de automatizar un flujo de trabajo de alquiler con los SMS programables de Twilio, y ahora estás listo para agregarlo a tu propia aplicación móvil.
A continuación, veamos otras funciones que son fáciles de agregar.
¿Qué sigue?
¿PHP + Twilio? ¡Gran elección! Aquí hay un par de otros tutoriales para que los consultes:
Coloca un botón en tu página web que conecte a los visitantes con el servicio de asistencia en directo o con el personal de ventas por teléfono.
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. Si tienes algún comentario que te gustaría compartir, comunícate con nosotros en Twitter y haznos saber lo que está 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.