
Dieses Skript kratzt nur an der Oberfläche dessen, was mit Python, Plotly Dash und unseren APIs möglich ist.
Vor fast einem Jahr schrieb Tom Mairs, Birds Direktor für Kundenerfolg, ein Mailer-Tool unter Verwendung von Bird APIs. In diesem Beitrag setze ich dort an, wo er aufgehört hat. Sein Tool ermöglicht die zeitgesteuerte Übertragung von Jobs, aber was, wenn wir unsere eigenen Dashboards und Ereignisprotokolle erstellen möchten?
Vielleicht möchte ich ein spezifisches Dashboard für eine Geschäftsgruppe oder ein kundenorientiertes Dashboard erstellen, jedoch den Benutzern nicht den vollständigen Zugriff auf die Bird UI gewähren. Dieses Script kratzt nur an der Oberfläche dessen, was mit der Nutzung von Python, Plotly Dash und unseren APIs möglich ist. Beim Erstellen von Dashboards, die hochvolumige API-Daten verarbeiten, sollte man sich bewusst sein, dass Infrastrukturkomponenten wie DNS zu Engpässen werden können - wir haben AWS DNS-Skalierungsherausforderungen erlebt, die unsere Datenverarbeitungsfähigkeiten beeinträchtigten. Für visuelle Workflow-Enthusiasten, Sie können auch Flow Builder mit Google Cloud Functions und Vision API integrieren, um KI-gestützte Automatisierung in Ihre Datenverarbeitungspipelines einzubinden.
Als ich online zu suchen begann, wollte ich den Weg des geringsten Widerstands finden. Ich hätte alle Dashboards und UIs selbst in HTML und Python erstellen können, aber nach einigem Googeln stieß ich auf Plotly’s Dash, das sich leicht mit Python integriert. Ich entschied mich aus zwei Gründen für Dash: 1) es ist Open Source und 2) nach dem Lesen der Dokumentation schien es leicht anpassbar für das, was ich vorhatte. Dash ist eine Open-Source-Bibliothek, die ideal zum Erstellen und Bereitstellen von Datenanwendungen mit angepassten Benutzeroberflächen ist. Dies machte das Erstellen einer UI extrem einfach. Die Frage wurde dann, wie komplex ich diese App gestalten wollte. Je mehr Zeit ich damit verbrachte, desto mehr Funktionen wollte ich hinzufügen.
Für das erste Projekt wollte ich sicherstellen, dass ich ein Dashboard mit anpassbaren Metriken und einem wählbaren Zeitrahmen hatte. Zunächst begann ich mit einem Dashboard, bei dem man nur eine Metrik aus dem Dropdown-Menü auswählen konnte. Dann, als ich Feedback von Kollegen erhielt, verbesserte ich das Dashboard ein wenig, um Mehrfachauswahl und Achsentitel hinzuzufügen. Ich entschied mich auch, einen zusätzlichen Tab für ein Ereignisprotokoll hinzuzufügen. Ich kam zu dem Punkt, an dem ich zufrieden war mit dem, was ich als guten Ausgangspunkt für jeden hatte, der seine eigenen Dashboards erstellen möchte. Für Entwickler, die Echtzeit-Webhook-Daten in ihre Dashboards einspeisen möchten, schauen Sie sich unseren Leitfaden zum Erstellen von Webhook-Konsumenten mit Azure Functions an. Natürlich habe ich das Projekt in Github gestellt, damit Sie es klonen oder verzweigen können.
Erste Schritte
Um auf diese app zuzugreifen, müssen Sie sicherstellen, dass Sie Python 3.10 oder höher verwenden und die folgenden Bibliotheken installieren:
requests
dash
pandas
Geben Sie dann Ihren API-Schlüssel in App.py ein und führen Sie die app aus. Es wird unter http://localhost:8050 ausgeführt. Für weitere Informationen über die Bereitstellung auf einem öffentlich zugänglichen Server (wie AWS) sehen Sie sich die folgenden Ressourcen an:
Erstellen der Dashboard-Seite
Erstellung der Event Details Page
Die Seite mit den Veranstaltungsdetails war etwas schwieriger, da ich nicht wusste, wie ich die Metriken aller Veranstaltungen am besten in einer leicht lesbaren Weise präsentieren sollte. Ich habe in Betracht gezogen, dieser Seite Filterparameter hinzuzufügen, jedoch habe ich entschieden, dass dies einen erheblichen Aufwand für dieses Projekt bedeuten würde, da die Tabelle dann dynamisch sein müsste (zusammen mit dem Hinzufügen der Parameter, Rückrufe usw.). Ich entschied mich dafür, alle Veranstaltungen anzuzeigen und den Zeitstempel zuerst zu platzieren (da ohne den Zeitstempel an erster Stelle das Diagramm nicht leicht zu lesen war). Anfangs fand ich, dass die Tabelle mit nur dem rohen HTML unglaublich schwer für die Augen war. Es gab keine Grenzen und keine Farbdifferenzen zwischen Kopfzeile und Zeilen. Um die Tabelle leichter lesbar zu machen, konnte ich CSS innerhalb von Dash verwenden.
Die Idee für die Veranstaltungsdetails ist fast dieselbe wie beim Dashboard, außer dass ich dieses Mal die Events API aufrufe und alle Veranstaltungen importiere. Beachten Sie, dass die Veranstaltungsdetails nur die 10 zuletzt stattgefundenen Veranstaltungen anzeigen (unter Verwendung des max_rows Parameters und der API-Filterung). Dies kann erhöht werden, jedoch entschied ich mich, die 10 zuletzt stattgefundenen Veranstaltungen anzuzeigen, da je mehr Veranstaltungen gezeigt werden, desto länger dauert der API-Aufruf. Eine signifikante Verbesserung, die gemacht werden könnte, wäre die Möglichkeit zur Paginierung und das Hinzufügen einer nächsten Seite / vorherigen Seite in die Benutzeroberfläche.
Um den Reiter für Veranstaltungen (Seite) aufzubauen, rufe ich zuerst die Events API auf und parse die JSON-Antwort in einen Datenrahmen. Dann sortiere und ordne ich den Datenrahmen neu, um den Zeitstempel als erste Spalte einzufügen. Schließlich baue ich die HTML-Tabelle auf, indem ich durch den Datenrahmen iteriere.
Was in der Benutzeroberfläche so aussieht.

Nächste Schritte
Für jemanden, der sein eigenes Dashboard oder Ereignisprotokoll erstellen möchte, ist dies ein guter Anfang. Mit der Anpassungsfähigkeit hier sind dem Himmel keine Grenzen gesetzt.
Wie oben besprochen, könnten einige zukünftige Verbesserungen sein:
Hinzufügen von Zustellbarkeitsanalysen zum Dashboard
Hinzufügen weiterer Filter zum Dashboard
Optionen für mögliches Caching, damit die API nicht jedes Mal aufgerufen wird, um die Seiten anzuzeigen
UI-Verbesserungen
Hinzufügen von Filtern und Paginierung zur Detailseite der Ereignisse
Ich wäre an Feedback oder Vorschlägen zur Erweiterung dieses Projekts interessiert.
~ Zach Samuels, Bird Senior Solutions Engineer