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

  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:

¿Listo para empezar? Haz clic en el botón que se encuentra justo después de esta oración.

Continuemos con el siguiente paso

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.

Loading Code Sample...
        
        
        models/user.js

        User Model to handle authentication

        models/user.js

        A continuación, modelemos las propiedades vacacionales.

        Next

        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.

        Loading Code Sample...
              
              
              models/property.js

              The Vacation Property Model

              models/property.js

              A continuación, el modelo de reserva.

              Next

              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...
                    
                    
                    models/reservation.js

                    The Reservation Model

                    models/reservation.js

                    A continuación, veamos cómo activar la creación de una reserva nueva.

                    Next

                    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.

                    Loading Code Sample...
                          
                          
                          routes/reservations.js

                          Reservation creation

                          routes/reservations.js

                          En el siguiente paso, veremos cómo se envía la notificación de SMS al anfitrión cuando se crea la reserva.

                          Next

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

                          Loading Code Sample...
                                
                                
                                Notificar al anfitrión de la reserva nueva a través de SMS

                                Send out reservation notifications

                                Notificar al anfitrión de la reserva nueva a través de SMS

                                En el siguiente paso se muestra cómo gestionar y configurar la respuesta de SMS del anfitrión.

                                Next

                                Gestionar mensajes entrantes

                                El punto final de reservations/handle gestiona nuestra solicitud entrante de Twilio y realiza las siguientes tres cosas:

                                1. Comprueba si hay una reserva pendiente del usuario entrante.
                                2. Actualiza el estado de la reserva.
                                3. Responde al anfitrión y envía una notificación al huésped.
                                Next

                                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:

                                SMS Webhook

                                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.

                                Loading Code Sample...
                                      
                                      
                                      routes/reservations.js

                                      Gestionar las respuestas del anfitrión

                                      routes/reservations.js

                                      En el último paso, usaremos TwiML de Twilio e indicaremos a Twilio que envíe mensajes SMS al huésped.

                                      Next

                                      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.

                                      Loading Code Sample...
                                            
                                            
                                            routes/reservations.js

                                            Crear la respuesta TwiML

                                            routes/reservations.js

                                            ¡Y eso es todo! A continuación, echemos un vistazo a otras funciones que puedes disfrutar en tu aplicación móvil.

                                            ¿Qué más puedo crear?

                                            ¿Dónde ir a continuación?

                                            Node.js funciona muy bien con la ayuda de Twilio... vamos a demostrarlo:

                                            IVR: Árbol telefónico

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

                                            Encuesta automatizada

                                            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!

                                            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