Automatización del flujo de trabajo con Python y Flask
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 Python y Flask 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:
¡Empecemos! Haz clic en el siguiente botón para iniciar.
Administración de usuarios y sesiones
Para que este flujo de trabajo funcione, necesitamos haber creado Users
en nuestra aplicación móvil y permitirles iniciar sesión en Airtng.
Nuestro modelo de User
almacena la información básica del usuario, incluido su número de teléfono. Lo utilizaremos para enviarles notificaciones de SMS más tarde.
A continuación, veamos cómo definimos el modelo de VacationProperty.
El modelo de VacationProperty
Con el fin de crear una empresa de alquileres vacacionales necesitamos una manera de crear los listados 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 image_url
.
También incluimos un par de campos de relación de base de datos para ayudarnos a vincular las propiedades vacacionales a sus anfitriones, así como a cualquier reserva que realicen nuestros usuarios.
A continuación, veremos cómo modelar una 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
Ahora que tenemos nuestros modelos, veamos cómo un usuario puede crear una reserva.
Creación de una reserva
El formulario de creación de reservas solo contiene un 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 anfitrión propietario.
Una reserva se crea con un estado predeterminado pending
, de modo que cuando el anfitrión responde con accept
o reject
, el sistema sabe qué reservation
actualizar.
Ahora que sabemos cómo vamos a iniciar una reserva, veamos cómo notificar al anfitrión.
Notificar al anfitrión mediante SMS
Cuando se crea una reserva para una propiedad, queremos notificar al host
de la solicitud de reserva.
Usamos la API REST de Twilio para enviar un mensaje SMS al anfitrión, mediante un número de teléfono de Twilio.
Ahora solo tenemos que esperar a que el anfitrión envíe una respuesta SMS aceptando o rechazando la reserva. En ese momento podemos notificar al usuario y al anfitrión, y actualizar la información de la reserva en consecuencia.
A continuación, veamos cómo gestionar los mensajes entrantes de los webhooks de Twilio.
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 /confirm:
Una manera de exponer tu máquina al mundo durante el desarrollo es con la utilización de 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/confirm
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 utilizamos la abstracción SmsNotifier
para enviar 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 Markup Language para ordenar a Twilio que envíe un mensaje de notificación de SMS al anfitrión.
¡Felicitaciones!
Acabas de aprender a automatizar tu flujo de trabajo con los SMS programables de Twilio. En el siguiente panel, veremos algunas otras funciones que se pueden agregar de manera sencilla con Twilio.
¿Dónde ir a continuación?
Para mejorar esto, podrías agregar comunicaciones anónimas a fin de que el anfitrión y el huésped puedan comunicarse a través de un número de teléfono de Twilio compartido: Enmascaramiento de llamadas con Python y Flask.
También puedes disfrutar de estos tutoriales:
Crea una experiencia de servicio al cliente perfecta con la creación de un árbol telefónico de IVR (respuesta de voz interactiva) para tu empresa.
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. 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.