You are viewing the Spanish (Mexico) site, but your language preference is set to English. Switch to English site →

Menu

Expand
Calificar esta página:

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á:

  1. Un anfitrión crea una lista de propiedades vacacionales
  2. Un huésped solicita la reserva de una propiedad
  3. El anfitrión recibe un SMS que lo notifica sobre la solicitud de reserva. El anfitrión puede aceptar o rechazar la reserva
  4. Se notifica al huésped si se aceptó o rechazó la solicitud

Obtén información sobre cómo Airbnb utilizó Twilio SMS a fin de optimizar la experiencia de alquiler para más de 60 millones de viajeros de todo el mundo.

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:

Loading Code Sample...
        
        
        airtng_flask/__init__.py

        Load the application configuration

        airtng_flask/__init__.py

        ¡Empecemos! Haz clic en el siguiente botón para iniciar.

        Automatizar un flujo de trabajo

        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.

        Loading Code Sample...
              
              
              airtng_flask/models/user.py

              The Airtng User model

              airtng_flask/models/user.py

              A continuación, veamos cómo definimos el modelo de VacationProperty.

              Next

              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.

              Loading Code Sample...
                    
                    
                    airtng_flask/models/vacation_property.py

                    VacationProperty model

                    airtng_flask/models/vacation_property.py

                    A continuación, veremos cómo modelar una reserva.

                    Next

                    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 o rejected
                    Loading Code Sample...
                          
                          
                          airtng_flask/models/reservation.py

                          The Reservation model

                          airtng_flask/models/reservation.py

                          Ahora que tenemos nuestros modelos, veamos cómo un usuario puede crear una reserva.

                          Next

                          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.

                          Loading Code Sample...
                                
                                
                                airtng_flask/views.py

                                Routes for the Airtng workflow

                                airtng_flask/views.py

                                Ahora que sabemos cómo vamos a iniciar una reserva, veamos cómo notificar al anfitrión.

                                Muéstrame 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.

                                Loading Code Sample...
                                      
                                      
                                      airtng_flask/models/reservation.py

                                      Notificar al usuario y al anfitrión

                                      airtng_flask/models/reservation.py

                                      A continuación, veamos cómo gestionar los mensajes entrantes de los webhooks de Twilio.

                                      Conéctalos

                                      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:

                                      1. Comprueba si hay una reserva pendiente de un usuario
                                      2. Actualiza el estado de la reserva
                                      3. 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:

                                      SMS Webhook

                                      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.

                                      Loading Code Sample...
                                            
                                            
                                            airtng_flask/views.py

                                            Confirmar o rechazar una solicitud de reserva pendiente

                                            airtng_flask/views.py

                                            ¡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.

                                            ¿Qué más puedo crear?

                                            ¿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:

                                            Árbol telefónico de IVR

                                            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.

                                            Clic para llamar

                                            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.

                                            Andrew Baker Kevin Segovia Daniel Erazo
                                            Calificar esta página:

                                            ¿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.

                                            Loading Code Sample...
                                                  
                                                  
                                                  

                                                  Gracias por tus comentarios.

                                                  Selecciona los motivos de tus comentarios. La información adicional que nos brindas nos ayuda a mejorar nuestra documentación:

                                                  Enviando tus comentarios…
                                                  🎉 Gracias por tus comentarios.
                                                  Se produjo un error. Inténtalo de nuevo.

                                                  Gracias por tus comentarios.

                                                  thanks-feedback-gif