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:

Recordatorios de citas con Python y Flask

¡Ahoy! Ahora te recomendamos que crees tus recordatorios de citas SMS con la funcionalidad de programación de mensajes integrada de Twilio. Dirígete a la Documentación de recursos de mensajes para obtener más información sobre la programación de mensajes de SMS.

Esta aplicación web muestra cómo puedes utilizar Twilio para enviar un mensaje de texto a tus clientes, a fin de recordarles acerca de las próximas citas.

Utilizamos Flask para desarrollar la aplicación web que brinda soporte a nuestra interfaz de usuario y Celery para enviar los mensajes de texto de recordatorio a nuestros clientes en el momento adecuado.

En este tutorial, destacaremos los elementos clave del código que hacen que funcione esta aplicación móvil. Consulta el archivo README del proyecto en GitHub para conocer cómo ejecutar el código por tu cuenta.

Comprueba cómo Yelp utiliza SMS para confirmar las reservas de restaurantes para los comensales.

¡Empecemos! Haz clic en el botón que aparece a continuación para empezar.

¡Empecemos!

Configurar la aplicación móvil para usar Twilio

Antes de que podamos usar la API de Twilio para enviar mensajes de texto de recordatorio, necesitamos configurar las credenciales de nuestra cuenta. Estos se pueden encontrar en la consola de Twilio. También necesitarás un número de teléfono compatible con SMS, puedes encontrar o comprar uno nuevo para usar aquí.

Colocamos estas variables de entorno en un archivo .env y usamos autoenv para aplicarlas cada vez que trabajamos en el proyecto. Puedes encontrar más información sobre cómo configurar esta aplicación móvil en el archivo README del proyecto.

Loading Code Sample...
        
        
        .env.example

        Configure the environment variables

        .env.example

        Ahora que nos encargamos de la configuración. Pasaremos a la estructura de la aplicación móvil.

        Veamos la estructura de la aplicación móvil

        La estructura de la aplicación móvil

        El objeto Application es el corazón de cualquier aplicación de Flask. El nuestro inicializa la app, establece las URL y extrae todas nuestras variables de entorno.

        El método celery es estándar para configurar Celery con los ajustes y el contexto de nuestra aplicación de Flask. Nuestra app utiliza Redis como agente para Celery. Sin embargo, puedes utilizar cualquiera de los otros agentes de Celery disponibles.

        Para que Celery funcione de forma local en tu equipo, sigue las instrucciones en el archivo README.

        Loading Code Sample...
              
              
              application.py

              Our core application code

              application.py

              Ya que nuestro objeto Application está listo, vamos a crear un Appointment model.

              Creemos algunas citas

              El modelo de cita

              Nuestro modelo de cita es bastante sencillo. Los campos name y phone_number nos indican a quién enviar el recordatorio. Los campos time, timezone y delta nos indican cuándo enviar el aviso.

              Usamos SQLAlchemy para impulsar nuestro modelo y conseguir una buena interfaz ORM para usarlo.

              Hemos añadido un método adicional, get_notification_time, a fin de ayudarnos a determinar el momento adecuado para enviar nuestros recordatorios. La práctica biblioteca arrow facilita este tipo de cálculo aritmético.

              Loading Code Sample...
                    
                    
                    models/appointment.py

                    The Appointment model

                    models/appointment.py

                    A continuación, utilizaremos este modelo para crear un objeto Appointment nuevo y programar un recordatorio.

                    Programar recordatorios nuevos

                    Programar recordatorios nuevos

                    Esta vista gestiona la creación de citas nuevas y la programación de nuevos recordatorios nuevos. Acepta los datos de POST enviados a la URL de /appointment.

                    Utilizamos WTForms para validar los datos del formulario mediante una clase denominada NewAppointmentForm que definimos en forms/new_appointment.py.

                    Después de eso usamos arrow para convertir la zona horaria de la cita en la hora UTC.

                    Luego, guardamos nuestro objeto Appointment nuevo y programamos el recordatorio con una tarea de Celery que hemos definido llamada send_sms_reminder.

                    Loading Code Sample...
                          
                          
                          views/appointment.py

                          Scheduling new reminders

                          views/appointment.py

                          A continuación, veremos esa tarea.

                          Crear la tarea send_sms_reminder

                          Configurar un cliente de API de Twilio

                          Nuestro módulo tasks.py contiene la definición de nuestra tarea send_sms_reminder. En la parte superior de este módulo usamos la biblioteca twilio-python para crear una instancia nueva de Client.

                          Usaremos este objeto client para enviar un mensaje de texto con la API de Twilio en nuestra función send_sms_reminder.

                          Loading Code Sample...
                                
                                
                                tasks.py

                                Configurar un cliente de API de Twilio

                                tasks.py

                                Ahora echemos un vistazo a send_sms_reminder.

                                Enviar mensajes de recordatorio con la API de Twilio

                                Envío de un recordatorio

                                Esta es la función send_sms_reminder que llamamos en nuestra vista appointment.create. Nuestra función comienza con un parámetro appointment_id, que usamos para recuperar un objeto Appointment de la base de datos, una práctica recomendada de Celery.

                                Para componer el cuerpo de nuestro mensaje de texto, usamos arrow de nuevo a fin de convertir la hora UTC almacenada en nuestra cita a la zona horaria local de nuestro cliente.

                                Después de eso, enviar el mensaje en sí es una simple llamada a client.messages.create(). Usamos el número de teléfono de nuestro cliente como argumento to y nuestro número de Twilio como argumento from_.

                                Loading Code Sample...
                                      
                                      
                                      tasks.py

                                      Perform the actual task of sending a SMS

                                      tasks.py

                                      ¡Eso es todo! Nuestra aplicación de Flask se ha configurado para enviar recordatorios de las próximas citas.

                                      ¿Dónde ir a continuación?

                                      ¿Dónde ir a continuación?

                                      Esperamos que esta aplicación móvil de muestra te haya resultado útil.

                                      Si eres un desarrollador de Python que trabaja con Twilio y Flask, puedes disfrutar de estos tutoriales:

                                      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.

                                      Autenticación de dos factores

                                      Mejora la seguridad de la funcionalidad de inicio de sesión de la app Flask al añadir autenticación de dos factores por mensajes de texto.

                                      ¿Te ayudó esto?

                                      Gracias por consultar este tutorial. Si tienes algún comentario que compartir con nosotros, comunícate con nosotros en Twitter... nos encantaría saber lo que piensas y conocer lo que estás 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