
Ce script effleure à peine la surface de ce qui est possible en utilisant Python, Plotly Dash et nos API.
Il y a presque un an, Tom Mairs, directeur du succès client chez Bird, a écrit un outil de publipostage utilisant les API Bird. Dans cet article, je reprends là où il s'est arrêté. Son outil permet la transmission programmée des tâches, mais que faire si nous voulons créer nos propres tableaux de bord et journaux d'événements ?
Peut-être que je veux créer un tableau de bord spécifique pour un groupe commercial ou un tableau de bord orienté client, sans fournir aux utilisateurs un accès complet à l'interface Bird. Ce script ne fait qu'effleurer la surface de ce qui est possible en utilisant Python, Plotly Dash, et nos APIs. Lorsque vous construisez des tableaux de bord qui traitent des données API à haut volume, sachez que des composants d'infrastructure comme le DNS peuvent devenir des goulets d'étranglement - nous avons rencontré des défis de mise à l'échelle DNS AWS qui ont affecté nos capacités de traitement des données. Pour les amateurs de flux de travail visuels, vous pouvez également explorer l'intégration de Flow Builder avec Google Cloud Functions et Vision API pour ajouter une automatisation alimentée par l'IA à vos pipelines de traitement de données.
En commençant mes recherches en ligne, je voulais trouver le chemin de moindre résistance. J'aurais pu créer tous les tableaux de bord et UI moi-même en HTML et python, cependant, après quelques recherches sur Google, je suis tombé sur Plotly’s Dash, qui s'intègre facilement avec python. J'ai choisi Dash pour 2 raisons : 1) c'est open source, et 2) après avoir lu la documentation, il m'a semblé facilement personnalisable pour ce que j'essayais de faire. Dash est une bibliothèque open-source idéale pour créer et déployer des applications de données avec des interfaces utilisateur personnalisées. Cela a rendu la création d'une UI extrêmement simple. La question est alors devenue : à quel point voulais-je complexifier cette application ? Plus je passais de temps, plus je voulais ajouter de fonctionnalités.
Pour le projet initial, je voulais m'assurer d'avoir un tableau de bord avec des métriques personnalisables et une période sélectionnable. Au début, j'ai commencé avec un tableau de bord où vous ne pouviez choisir qu'une seule métrique dans le menu déroulant. Puis, après avoir obtenu des retours de mes collègues, j'ai légèrement affiné le tableau de bord pour ajouter la multi-sélection et les titres d'axe. J'ai également décidé d'ajouter un onglet supplémentaire pour un journal d'événements. J'en suis venu à être satisfait de ce que j'avais comme bon point de départ pour quiconque souhaitant construire ses propres tableaux de bord. Pour les développeurs qui veulent intégrer des données de webhook en temps réel dans leurs tableaux de bord, consultez notre guide sur la création de consommateurs de webhook avec Azure Functions. Bien sûr, j'ai mis le projet sur Github pour que vous puissiez le cloner ou le brancher.
Commencer
Pour accéder à cette application, vous devez vous assurer que vous utilisez python 3.10 ou une version ultérieure et installer les bibliothèques suivantes :
requests
dash
pandas
Ensuite, saisissez votre clé API dans App.py et exécutez l'application. Elle fonctionnera sur http://localhost:8050. Pour plus d'informations sur le déploiement de cette application sur un serveur accessible au public (comme AWS), consultez les ressources suivantes :
Création de la page Dashboard
Création de la page Event Details
La page des détails de l'événement était un peu plus difficile car je ne savais pas la meilleure façon de présenter toutes les métriques des événements de manière facile à lire. J'ai envisagé d'ajouter des paramètres de filtrage à cette page, cependant, j'ai décidé que cela ajouterait un temps considérable à ce projet car le tableau devrait alors être dynamique (en plus d'ajouter les paramètres, les rappels, etc.). J'ai décidé de montrer tous les événements et de placer l'horodatage en premier (car sans mettre l'horodatage en premier, le graphique n'était pas facile à lire). Initialement, j'ai constaté qu'avec juste le HTML brut, le tableau était incroyablement difficile à examiner. Il n'y avait pas de bordures et pas de différences de couleur entre l'en-tête et les lignes. Pour rendre le tableau plus facile à lire, j'ai pu utiliser le CSS dans Dash.
L'idée pour les détails de l'événement est presque la même que pour le tableau de bord, sauf que cette fois, j'appelle le Events API et j'apporte tous les événements. Notez que les détails de l'événement ne montrent que les 10 événements les plus récents (en utilisant le paramètre max_rows et le filtrage API). Cela peut être augmenté, cependant, j'ai décidé de montrer les 10 événements les plus récents car plus d'événements sont montrés, plus l'appel API prend du temps. Une amélioration significative qui pourrait être apportée serait la possibilité de paginer et d'inclure une Page Suivante / Page Précédente dans l'interface utilisateur.
Pour construire l'onglet (page) des événements, d'abord, j'appelle l'Events API et je transforme la réponse JSON en un cadre de données. Ensuite, je trie et réorganise le cadre de données pour mettre l'horodatage en première colonne. Enfin, je construis le tableau HTML en parcourant le cadre de données.
Ce qui ressemble à ceci dans l'interface utilisateur.

Étapes suivantes
Pour quelqu'un cherchant à créer son propre tableau de bord ou journal d'événements, c'est un bon début. Avec les possibilités de personnalisation ici, seules votre imagination vous limitera.
Comme discuté ci-dessus, certaines améliorations futures pourraient être apportées :
Ajout d'analyses de délivrabilité au tableau de bord
Ajout de plus de filtres au tableau de bord
Possibles options de mise en cache pour que l'API ne soit pas appelée à chaque fois pour afficher les pages
Améliorations de l'UI
Ajout de filtres et de pagination à la page des détails des événements
Je serais intéressé d'entendre tout retour ou suggestions pour étendre ce projet.
~ Zach Samuels, Bird Senior Solutions Engineer