Responde mensajes SMS y MMS con Python

Responde mensajes SMS y MMS con Python

Python es un lenguaje de programación muy utilizado debido a su sintaxis fácil de comprender, su amplia variedad de bibliotecas y herramientas disponibles para el procesamiento del lenguaje natural. Además, soporta la programación orientada a objetos, lo que permite estructuras más complejas y una mayor organización del código.

Es importante tener en cuenta que diferentes servicios de mensajería pueden tener diferentes mecanismos y restricciones de API, por lo que deberás investigar la documentación de la API de tu servicio de mensajería para saber más detalles sobre cómo responder mensajes utilizando Python.

API son las siglas de Application Programming Interface (Interfaz de Programación de Aplicaciones), un conjunto de reglas y protocolos utilizados para la comunicación entre diferentes sistemas informáticos. Las API permiten que una aplicación se conecte a otra y acceda a sus funciones y datos para llevar a cabo tareas específicas. Asimismo,  son muy útiles en el desarrollo de software porque permiten la integración de diversas funcionalidades en una sola aplicación, haciendo que ésta sea más completa y eficiente.

En este artículo, te ayudaré a aprender a usar los SMS programables para responder los mensajes entrantes en una aplicación web de Python. No te preocupes si no estás familiarizado con los webhooks y TwiML. Con esta guía te ayudaré a comprender los conceptos básicos rápidamente.

SMS (Short Message Service) es un servicio de mensajería corta que permite enviar y recibir mensajes de texto en teléfonos móviles. El contenido de los mensajes está limitado a un máximo de 160 caracteres.

MMS (Multimedia Messaging Service) es un servicio de mensajería multimedia que permite enviar y recibir mensajes que incluyen no solo texto, sino también imágenes, audio y video en teléfonos móviles. Los mensajes MMS tienen una capacidad mayor que los SMS y pueden alcanzar varios megabytes de tamaño.

Twilio puede enviar una solicitud HTTP a tu aplicación web cuando se produzcan ciertos eventos, como un mensaje de texto entrante a uno de tus números de teléfono de Twilio.

💡
Nota: Los fragmentos de código de esta guía están bajo el marco web de Flask y el SDK para Python de Twilio. ¡Empecemos!

¿Qué es un webhook?

Los webhooks son una forma de integración de sistemas en la que una aplicación envía una notificación automática a otra aplicación cuando se produce un evento en tiempo real. Suelen utilizarse en aplicaciones web y móviles para sincronizar datos entre aplicaciones de diferentes proveedores o para automatizar procesos de trabajo. De igual forma, los webhooks son un medio de conectar aplicaciones para que puedan comunicarse entre sí de manera práctica y automatizada.

Para gestionar un webhook, solo necesitas crear una pequeña aplicación web que pueda aceptar las solicitudes HTTP.

Elementos principales de un webhook

1. URL de destino: es la dirección web donde el servicio de webhook debe enviar los datos.

2. Payload: es el conjunto de datos que se envían a través de un webhook. Puede incluir información como ID de usuario, eventos recientes, información de compra, etc.

3. Evento o gatillo: es la acción que provoca la activación del webhook. Puede ser un cambio en el estado de la cuenta del usuario, un nuevo pedido o un comentario en una publicación en redes sociales, entre otros.

4. Autenticación: es una medida de seguridad que garantiza que los datos del webhook provienen de una fuente confiable. Puede ser una clave API o un token de autenticación.

5. Protocolo de comunicación: es el método de transmisión de datos que se utiliza. Puede ser HTTP, HTTPS u otro protocolo de comunicación similar.

6. Métodos o verbos HTTP: son las solicitudes que el webhook enviará al servicio receptor para informar sobre la realización de un evento. Los métodos HTTP más utilizados en webhooks son POST y GET.

¿Qué es TwiML?

TwiML (Twiilio Markup Language) es un lenguaje de marcado basado en XML para controlar las interacciones de voz y mensajería en la plataforma de comunicaciones en la nube de Twilio. TwiML nos permite como desarrolladores crear aplicaciones personalizadas y automatizar procesos de comunicación por medio de comandos que controlan las diferentes acciones realizadas durante una llamada o mensaje de texto como, por ejemplo, reproducir un archivo de audio, enviar un mensaje de texto o redirigir una llamada, entre otros. TwiML es más fácil de mostrar que explicar.

A continuación, te muestro algunos TwiML que podrías utilizar para responder una llamada telefónica y responder un mensaje SMS entrante:


Cada archivo de TwiML tendrá una parte raíz < Response> y esa parte puede tener uno o más verbos.

Generar TwiML en la aplicación web

Código de ejemplo

Si alguien te envía un mensaje de texto al número de Twilio, podrías enviar una respuesta con TwiML por tu webhook configurado. A continuación, te explico cómo generar un TwiML mediante la biblioteca auxiliar.


Como primer paso, tenemos que importar Flask, un framework web para Python que permite el desarrollo de aplicaciones web de manera sencilla y flexible. Es utilizado para construir sitios y servicios web de empresas y organizaciones, además de ser considerado como uno de los frameworks más populares y utilizados en el mundo de Python.

Flask se caracteriza por su simplicidad, su eficiencia y su potente sistema de extensión, que permiten integrar fácilmente otros módulos y herramientas para personalizar y añadir funcionalidades a la aplicación. Además, Flask es compatible con la mayoría de los proveedores de alojamiento de aplicaciones web.

En este ejemplo, cuando tu número de teléfono de Twilio reciba un mensaje entrante, enviará una solicitud HTTP a tu servidor. HTTP significa en inglés Hypertext Transfer Protocol y es un protocolo utilizado para transmitir datos en la World Wide Web. Es el protocolo más común para la comunicación entre clientes y servidores web. HTTP es un protocolo sin estado, lo que significa que no mantiene información entre solicitudes, lo que contribuye a su escalabilidad y rendimiento.

El código muestra cómo tu servidor puede responder con un mensaje de texto utilizando la biblioteca auxiliar de Twilio.

Configurar la URL del webhook

Una vez que tengas la URL se generarán las respuestas TwiML en tu aplicación web, así podrás configurar tu número telefónico de Twilio para llamar a tu URL de webhook cada vez que aparezca un nuevo mensaje SMS (o MMS).

Inicia sesión en el sitio web de Twilio y ve a la página de números de la consola:


Modifica el número telefónico en el panel principal.

Encuentra la opción A MESSAGE COMES IN (Mensaje entrante).

Selecciona Webhook y pégalo en la URL que vas a utilizar:


Configurar SMS Webhook

Elige HTTP POST o HTTP GET según se ajuste a tu aplicación web.

En el método GET el cliente envía una solicitud al servidor web para obtener datos de los recursos especificados. Por lo general, los datos se incluyen en la URL de la solicitud, lo que los hace visibles en la barra de direcciones del navegador.

Por otro lado, POST es un método de solicitud que se utiliza para enviar datos al servidor web para procesarlos en algún lugar del servidor. En una solicitud POST, los datos se envían en el cuerpo del mensaje HTTP y no en la URL.

Respaldar la URL del webhook

En la consola notarás que también hay un lugar en el que se puede mencionar una URL de webhook para PRIMARY HANDLER FAILS (Fallo del controlador principal). Si ocurre un error o no devuelve respuesta en 15 segundos,  inmediatamente llamará a esta URL con el controlador primario Twilio.


Responder con contenido multimedia (mensaje MMS)

Enviar un MMS con imagen

Si deseas enviar un MMS debes agregar una URL de imagen. Es necesario reiniciar el servidor y luego vuelve a enviar un mensaje de texto a tu número de Twilio. Así debes recibir un mensaje de texto con la imagen incluida.

Los números que posean la función de MMS, podrán enviar y recibir mensajes MMS. Es posible visualizar y comprobar las capacidades de los números en el portal de la cuenta de Twilio que tengan la opción MMS habilitada.

Respuestas personalizadas a los mensajes SMS entrantes

Generar un mensaje TwiML dinámico

Seguimos en cómo responderemos a un SMS entrante, mediante un mensaje distinto en función del parámetro Body de la solicitud entrante de Twilio.

Conclusión

En este artículo, logramos aprender cómo utilizar Python para responder a mensajes SMS y MMS entrantes mediante Twilio. Hemos explorado cómo configurar webhooks, generar TwiML y personalizar las respuestas según el contenido del mensaje entrante.

Con estos conocimientos, ahora estás preparado para crear aplicaciones más avanzadas que utilicen las capacidades de Twilio y Python para manejar mensajes entrantes y ofrecer una experiencia más rica a los usuarios.

No te sientas mal si necesitas ayuda: todos la necesitamos a veces y la programación es difícil.

Cuando ves los resultados después de días sin poder dormir en paz pensando en las posibles alternativas para que el algoritmo no tenga errores, te sientes grande por poder culminar ese proyecto que tanto te costó aprender y ejecutar.

¡Así que ánimos y evoluciona cada día!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.