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 Java y Servlets

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 Java y Servlets 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:

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

Avanza al siguiente paso

Administración de usuarios y sesiones

Para que este flujo de trabajo funcione, necesitamos tener un modelo de usuario y permitir inicios de sesión.

Loading Code Sample...
        
        
        src/main/java/org/twilio/airtng/models/User.java

        User and Session Management

        src/main/java/org/twilio/airtng/models/User.java

        A continuación, veamos el modelo de propiedad vacacional.

        Next

        Modelo de propiedad vacacional

        Con el fin de crear una verdadera empresa de alquiler vacacional necesitaremos una manera de crear un listado de alquiler 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 imageUrl.

        El modelo tiene dos asociaciones implementadas: hay muchas reservas en él y muchos usuarios pueden realizar dichas reservas.

        Loading Code Sample...
              
              
              src/main/java/org/twilio/airtng/models/VacationProperty.java

              Vacation Property Model

              src/main/java/org/twilio/airtng/models/VacationProperty.java

              A continuación, veamos el importante modelo de 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...
                    
                    
                    src/main/java/org/twilio/airtng/models/Reservation.java

                    The Reservation Model

                    src/main/java/org/twilio/airtng/models/Reservation.java

                    A continuación, te mostraremos cómo nuestra nueva aplicación móvil creará una nueva reserva.

                    Next

                    Crear una reserva

                    El formulario de creación de reservas solo contiene un campo, el mensaje que se enviará a la 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 y de la relación entre una propiedad y su propietario. Nuestro Repository genérico base se encarga de gestionar la inserción de entidades.

                    Se crea una reserva con un estado predeterminado pending. Esto permite que nuestra aplicación móvil reaccione fácilmente ante un anfitrión rechazando o aceptando una solicitud de reserva.

                    Loading Code Sample...
                          
                          
                          src/main/java/org/twilio/airtng/servlets/ReservationServlet.java

                          Create a new reservation

                          src/main/java/org/twilio/airtng/servlets/ReservationServlet.java

                          Ahora veamos cómo el sistema notificará a un host cuando se envíe una solicitud de reserva nueva.

                          Next

                          Notificar al anfitrión

                          Cuando se crea una reserva para una propiedad, queremos notificar al propietario que alguien realizó una reserva.

                          Usamos una abstracción llamada SmsNotifier que, a su vez, utiliza otra abstracción llamada Sender. Aquí es donde se utiliza la API REST de Twilio para enviar un mensaje SMS al anfitrión con tu número de teléfono de Twilio. Exacto, es tan simple como enviar un SMS con Twilio.

                          Loading Code Sample...
                                
                                
                                src/main/java/org/twilio/airtng/lib/sms/Sender.java

                                Notify the host

                                src/main/java/org/twilio/airtng/lib/sms/Sender.java

                                En el siguiente paso se muestra cómo gestionar que un anfitrión acepte o rechace una solicitud. Continuemos.

                                Next

                                Gestionar mensajes entrantes

                                Veamos de manera más detallada el servlet de ReservationConfirmation. Este servlet 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

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

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

                                Una solicitud entrante de Twilio cuenta con algunos parámetros útiles, incluido el número de teléfono From y el Body del mensaje.

                                Usaremos el parámetro From para buscar al anfitrión y comprobar si tiene reservas pendientes. Si es así, usaremos el cuerpo del mensaje para comprobar si se “acepta” o “rechaza”.

                                Por último, actualizamos el estado de la reserva y utilizamos la abstracción SmsNotifier para enviar un SMS al huésped con la información.

                                Loading Code Sample...
                                      
                                      
                                      Webhook para gestión la decisión del anfitrión

                                      Handle incoming messages

                                      Webhook para gestión la decisión del anfitrión

                                      A continuación, veamos cómo responderemos a Twilio.

                                      Next

                                      Respuesta TwiML

                                      Por último, usaremos TwiML de Twilio como respuesta al servidor de Twilio que le indica que envíe un mensaje de notificación de SMS al huésped.

                                      Usaremos el verbo Message para indicar al servidor de Twilio que debe enviar el mensaje.

                                      Loading Code Sample...
                                            
                                            
                                            src/main/java/org/twilio/airtng/servlets/ReservationConfirmationServlet.java

                                            Crear una respuesta TwiML

                                            src/main/java/org/twilio/airtng/servlets/ReservationConfirmationServlet.java

                                            ¡Felicitaciones! Acabas de aprender a automatizar tu flujo de trabajo con Twilio SMS.

                                            A continuación, veamos algunas otras funciones interesantes que te recomendamos agregar a tu aplicación móvil.

                                            Next

                                            ¿Dónde ir a continuación?

                                            ¿Te gusta Twilio? ¿Te gusta Java? Estás en el lugar correcto. Aquí hay un par de otros excelentes tutoriales:

                                            Notificaciones de SMS y MMS

                                            Crea un sistema de notificaciones de servidor que avise a todos los administradores a través de SMS cuando se produzca una interrupción del servidor.

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