
Este script solo roza la superficie de lo que es posible utilizando Python, Plotly Dash y nuestras API.
Hace casi un año, Tom Mairs, director de éxito del cliente de Bird, escribió una herramienta de correo utilizando Bird APIs. En este artículo, continúo desde donde él lo dejó. Su herramienta permite la transmisión programada de trabajos, pero ¿qué pasa si queremos crear nuestros propios paneles y registros de eventos?
Tal vez quiera crear un panel específico para un grupo empresarial o un tablero orientado al cliente, pero no proporcionar a los usuarios acceso completo a la IU de Bird. Este script solo roza la superficie de lo que es posible utilizando Python, Plotly Dash y nuestras APIs. Al construir paneles que procesan datos de API de alto volumen, ten en cuenta que los componentes de infraestructura como DNS pueden convertirse en cuellos de botella: hemos experimentado desafíos de escalado de DNS de AWS que afectaron nuestras capacidades de procesamiento de datos. Para los entusiastas del flujo de trabajo visual, también puedes explorar la integración de Flow Builder con Google Cloud Functions y Vision API para añadir automatización impulsada por IA a tus flujos de trabajo de procesamiento de datos.
Cuando comencé mi búsqueda en línea, quise encontrar el camino de menor resistencia. Podría haber creado todos los paneles e IU yo mismo en HTML y python, sin embargo, después de algunas búsquedas en Google, me encontré con Plotly’s Dash, que se integra fácilmente con python. Elegí Dash por 2 razones: 1) es de código abierto, y 2) después de leer la documentación, parecía fácilmente personalizable para lo que estaba intentando hacer. Dash es una biblioteca de código abierto que es ideal para construir y desplegar aplicaciones de datos con interfaces de usuario personalizadas. Esto hizo que crear una IU fuera extremadamente simple. La pregunta entonces era, ¿cuán complejo quería hacer este app? Cuanto más tiempo pasé, más características quería añadir.
Para el proyecto inicial, quise asegurarme de que tenía un panel con métricas personalizables y un marco de tiempo seleccionable. Inicialmente, comencé con un panel donde solo podías elegir una métrica del menú desplegable. Luego, a medida que recibí comentarios de los colegas, refiné un poco el panel para añadir selección múltiple y títulos de ejes. También decidí añadir una pestaña adicional para un registro de eventos. Llegué al punto en el que estaba satisfecho con lo que tenía como un buen punto de partida para cualquiera que deseara construir sus propios paneles. Para los desarrolladores que quieran alimentar sus paneles con datos de webhook en tiempo real, consulta nuestra guía sobre construcción de consumidores de webhook con Azure Functions. Por supuesto, puse el proyecto en Github para que lo clonen o ramifiquen.
Empezando
Para acceder a esta app, necesitará asegurarse de que está ejecutando python 3.10 o superior e instalar las siguientes bibliotecas:
requests
dash
pandas
Luego, introduzca su clave API en App.py y ejecute la app. Se ejecutará en http://localhost:8050. Para obtener más información sobre cómo implementarlo en un servidor público (como AWS), consulte los siguientes recursos:
Creando la Página del Dashboard
Creando la Event Details Page
La página de detalles del evento fue un poco más difícil porque no sabía la mejor manera de presentar todos los métricas del evento de una manera fácil de leer. Consideré agregar parámetros de filtrado a esta página, sin embargo, decidí que eso añadiría una cantidad significativa de tiempo a este proyecto ya que la tabla tendría que ser dinámica (junto con agregar los parámetros, callbacks, etc.). Me decidí por mostrar todos los eventos y colocar la marca de tiempo primero (ya que sin poner la marca de tiempo primero, la tabla no era fácil de leer). Inicialmente, encontré que con solo el HTML en bruto, la tabla era increíblemente difícil para la vista. No había bordes ni diferencias de color entre el encabezado y las filas. Para hacer la tabla más fácil de leer, pude usar CSS dentro de Dash.
La idea para los detalles del evento es casi la misma que el dashboard, excepto que esta vez, llamo al Events API y traigo todos los eventos. Observe que los detalles del evento solo muestran los 10 eventos más recientes (utilizando el parámetro max_rows y el filtrado de la API). Esto se puede aumentar, sin embargo, me decidí por mostrar los 10 eventos más recientes porque cuantos más eventos se muestran, más tiempo tarda la llamada a la API. Una mejora significativa que se podría hacer sería la capacidad de paginar e incluir una Página Siguiente / Página Anterior en la interfaz de usuario.
Para construir la pestaña (página) de eventos, primero, llamo al Events API y analizo la respuesta JSON en un marco de datos. Luego, ordeno y reorganizo el marco de datos para poner la marca de tiempo como la primera columna. Finalmente, construyo la tabla HTML iterando a través del marco de datos.
Lo cual se ve así en la interfaz de usuario.

Siguientes pasos
Para alguien que busca crear su propio tablero o registro de eventos, esto es un buen comienzo. Con la personalización aquí, el cielo es el límite.
Como se discutió anteriormente, algunas mejoras futuras que podrían hacerse son:
Agregar análisis de entregabilidad al tablero
Agregar más filtros al tablero
Posibles opciones de almacenamiento en caché para que la API no se llame cada vez para mostrar las páginas
Mejoras en la UI
Agregar filtrado y paginación a la página de detalles del evento
Me interesaría escuchar comentarios o sugerencias para expandir este proyecto.
~ Zach Samuels, Bird Senior Solutions Engineer