BookinglyTech News
Software

Telnyx comparte un monitor de calidad de llamadas en tiempo real con Flask y Python

La compañía lanza un ejemplo de código con dashboard SSE, alertas por umbrales y verificación Ed25519 de webhooks.

3 min de lecturaDev.to0 vistas

Telnyx ha publicado un nuevo ejemplo de código para monitorizar la calidad de las llamadas en tiempo real mediante sus webhooks. El proyecto, bautizado como Call Quality Monitor, está disponible en el repositorio de ejemplos de Telnyx en GitHub y combina Flask, SQLite y Server-Sent Events (SSE) para mostrar métricas como MOS, jitter, latencia y pérdida de paquetes en un panel web. Incluye un sistema de alertas configurables que se activan cuando una métrica cruza un umbral, como un MOS inferior a 3,5 o un jitter superior a 30 ms.

La aplicación recibe los webhooks de calidad de llamada enviados por Telnyx, verifica la firma Ed25519 de cada payload usando la librería pynacl y guarda las métricas en SQLite para análisis posterior. Además, mantiene un estado por llamada en memoria para que el dashboard muestre lo que está ocurriendo en cada momento. Cuando se supera un umbral, se genera una alerta que se envía al navegador a través de un flujo SSE, actualizando la interfaz en tiempo real.

Demo local sin cuenta

Una de las partes más interesantes para probar el código es que no hace falta tener una cuenta de Telnyx para ver cómo funciona el flujo completo. El servidor de demostración (demo_server.py) genera un par de claves Ed25519 en la primera ejecución, firma los payloads simulados y los envía al mismo endpoint /webhooks/call-quality que usarías en producción. El dashboard se abre en http://localhost:5555 e incluye controles para empezar tres llamadas simuladas, triggerear una alerta o resetear los datos. Esto te permite validar la lógica de verificación, el almacenamiento y la visualización sin tocar credenciales reales ni exponer tu entorno.

El proyecto expone una API REST con endpoints para consultar todas las métricas por ID de llamada, filtrar por rango de tiempo o recuperar estadísticas agregadas y alertas. También incluye un endpoint de salud para comprobar que todo está operativo. Todo el código está pensado para que puedas adaptarlo fácilmente: configurando variables de entorno como TELNYX_API_KEY, TELNYX_PUBLIC_KEY, DB_PATH o los umbrales de MOS, jitter y latencia.

Para un desarrollador que trabaje con la API de voz de Telnyx (o similar), este ejemplo sirve como base sólida para construir un sistema de monitorización real. Además, demuestra una buena práctica: verificar la firma de los webhooks con Ed25519 antes de procesar los datos, algo que a menudo se olvida y que previene que códigos maliciosos inyecten métricas falsas.

El uso de SSE en lugar de WebSocket es acertado para un dashboard de solo lectura: es más sencillo de implementar, funciona a través de proxies y se reconecta automáticamente a través de la API EventSource del navegador.

En definitiva, se trata de un ejemplo práctico y bien documentado que ahorra tiempo a cualquiera que tenga que integrar el monitoreo de calidad de llamadas en su stack. El hecho de que puedas ejecutarlo localmente sin necesidad de una cuenta lo hace aún más atractivo para evaluarlo antes de desplegarlo. La pregunta pendiente es si Telnyx incorporará estas capacidades como un servicio gestionado en el futuro, pero por ahora esta implementación cubre el caso.