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

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

        Routes for handling reservations or Twilio webhooks

        ¡Continuemos con el siguiente paso! Haz clic en el botón que aparece a continuación para empezar.

        Trabajemos en nuestro flujo de trabajo

        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.

        Loading Code Sample...
              
              
              database/migrations/2014_10_12_000000_create_users_table.php

              User table migration

              database/migrations/2014_10_12_000000_create_users_table.php

              A continuación, crearemos una tabla que representa una propiedad de alquiler vacacional.

              Next

              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.

              Loading Code Sample...
                    
                    
                    database/migrations/2015_10_23_193814_create_vacation_properties_table.php

                    VacationProperty table migration

                    database/migrations/2015_10_23_193814_create_vacation_properties_table.php

                    A continuación: cómo modelaremos una reserva.

                    Next

                    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 o rejected

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

                    Loading Code Sample...
                          
                          
                          database/migrations/2015_10_23_194614_create_reservations_table.php

                          Reservations table migration

                          database/migrations/2015_10_23_194614_create_reservations_table.php

                          Nuestras tablas se encuentran listas, ahora veamos cómo crearíamos una reserva.

                          Next

                          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.

                          Loading Code Sample...
                                
                                
                                app/Http/Controllers/ReservationController.php

                                Crear una reserva nueva

                                app/Http/Controllers/ReservationController.php

                                Veamos cómo se envía la notificación de SMS al anfitrión cuando se crea la reserva.

                                Notificar al anfitrión

                                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.

                                Loading Code Sample...
                                      
                                      
                                      app/Http/Controllers/ReservationController.php

                                      Notificar al anfitrión de una solicitud de reserva nueva

                                      app/Http/Controllers/ReservationController.php

                                      Veamos cómo gestionaríamos los mensajes entrantes de Twilio y aceptaríamos o rechazaríamos las reservas.

                                      Next

                                      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:

                                      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
                                      Loading Code Sample...
                                            
                                            
                                            app/Http/Controllers/ReservationController.php

                                            Aceptar o rechazar una lógica de reserva

                                            app/Http/Controllers/ReservationController.php

                                            Para dirigir mensajes SMS hacia y desde el anfitrión, necesitamos configurar los webhooks de Twilio. El siguiente panel te mostrará cómo hacerlo.

                                            Next

                                            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 /reservation/incoming:

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

                                            Loading Code Sample...
                                                  
                                                  
                                                  app/Http/Controllers/ReservationController.php

                                                  Búsqueda de una reserva a partir de una solicitud entrante de Twilio

                                                  app/Http/Controllers/ReservationController.php

                                                  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.

                                                  Next

                                                  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.

                                                  Loading Code Sample...
                                                        
                                                        
                                                        app/Http/Controllers/ReservationController.php

                                                        Responder a un usuario con estado de reserva

                                                        app/Http/Controllers/ReservationController.php

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

                                                        Next

                                                        ¿Qué sigue?

                                                        ¿PHP + Twilio? ¡Gran elección! Aquí hay un par de otros tutoriales para que los consultes:

                                                        Clic para llamar

                                                        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.

                                                        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. Si tienes algún comentario que te gustaría compartir, comunícate con nosotros en Twitter y haznos saber lo que está creando.

                                                        Mario Celi 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