Wie man Microsoft Teams-Nachrichten mit Python sendet

Jeder Job beinhaltet repetitive Aufgaben. Ob es sich um einen Support-Agenten handelt, der häufige Hilfsanfragen analysiert, einen Teamleiter, der Leistungsmetriken überwacht, oder einen Softwareingenieur, der Geschäftsprozesse prüft, diese Aufgaben treten oft auf – täglich, wöchentlich oder sogar stündlich.

Thankfully kann man mit Python viel dieser Arbeit automatisieren. Es ist eine vielseitige Sprache, die hervorragend für die Behandlung von Daten und für die Skriptierung von Automationsaufgaben geeignet ist. Stellen Sie sich vor, Sie sammeln Leistungsmetriken: Manuell müssten Sie möglicherweise durch mehrere Dashboards stöbern. Mit einem Python-Skript können Sie diese Daten automatisch abrufen, die Schlüsselpunkte hervorheben und einen kompilierten Bericht an Ihren Vorgesetzten senden. Dies spart nicht nur Zeit, sondern verringert auch das Risiko von Fehlern.

In diesem Tutorial werden wir uns einen speziellen Fall anschauen, nämlich Python-Code zu verwenden, um eine Wettervorhersage für einen bestimmten Ort abzurufen und eine Zusammenfassung dieser Vorhersage an Microsoft Teams, Microsofts Plattform für Teamkommunikation, zu senden. Wir werden alle notwendigen Schritte umfassen, um einen Teams-Webhook zu konfigurieren, ein Python-Programm, das den Webhook nutzt, um Nachrichten zu senden, und einen Zeitplan festzulegen, damit das Python-Skript regelmäßig ausgeführt werden kann. Dieser spezielle Beispiel ist über die Berichterstattung einer Wettervorhersage, aber natürlich können Sie diese ‚Geschäftlogik‘ mit allem austauschen, was Sie möchten; die Konfiguration und der Code, um die Nachricht an Teams zu senden, bleiben genau gleich.

Wir werden in diesem Tutorial DataLab verwenden, da es über integrierte Funktionalität für die sichere Speicherung von Geheimnissen als Umgebungsvariablen verfügt (eine Funktion, die wir verwenden werden, um den Teams-Webhook zu speichern) sowie zum Planen Ihres Python-Codes mit wenigen Klicks. Um mitzumachen, brauchen Sie nur ein Microsoft-Konto (um Nachrichten zu posten) und ein DataCamp-Konto (um DataLab zu verwenden), die Sie kostenlos erstellen können!

Sie können auch unsere separate Anleitung lesen, wie Sie Slack-Nachrichten mit Python senden.

Los geht’s!

1. Konfigurieren eines Microsoft Teams-Webhooks

Innerhalb von Microsoft Teams gibt es Teams, die ihrerseits Kanäle haben. Es ist möglich, sogenannte ‚Apps‘ zu diesen Kanälen hinzuzufügen. Man kann sich eine Teams-App als Erweiterung oder Add-on von MS Teams für einen bestimmten Zweck vorstellen. Es gibt Apps, um Jira, Zendesk, Salesforce und zahllose andere in Teams zu integrieren, sodass Sie in Teams über Dinge, die geschehen, informiert werden, aber Sie können auch Aktionen in diesen Apps von innerhalb von Teams ausführen. Für unser kleines Projekt müssen wir eine dieser Apps installieren, genauer gesagt, die von Microsoft selbst betriebene „Incoming Webhook“-App.

Bitte sicherstellen, dass Sie ein Microsoft-Konto mit Zugriff auf Teams haben. Stellen Sie sicher, dass Sie Mitglied in einem Team sind und die Berechtigung haben, Apps zu Kanälen in diesem Team hinzuzufügen. Wenn nicht, kontaktieren Sie Ihren IT-Bereich und senden Sie ihnen diesen Link.

Als nächstes gehen Sie zu dem Teamkanal, zu dem Sie Nachrichten posten möchten. In unserem Beispiel ist das der „Allgemeine“ Kanal innerhalb des Teams „Data Analytics Heroes“:

Klicken Sie auf das Pluszeichen neben dem Kanalnamen; Sie erhalten einen Überblick über die Apps, die Sie dem Kanal hinzufügen können:

Klicken Sie auf „Weitere Apps erhalten“. Sie gelangen in einen umfassenden App-Marktplatz, den Sie zu MS Teams hinzufügen können:

Tippen Sie in das Suchfeld „Incoming Webhook“ ein. Die erste angezeigte App ist die, die wir benötigen:

Klicken Sie auf Hinzufügen und dann auf „Zu einem Team hinzufügen“. Sie werden jetzt aufgefordert, anzugeben, an welches Team oder Kanal Sie Nachrichten senden möchten:

Das Beispiel für diesen Tutorial ist der „Allgemeine“ Kanal im Team „Data Analytics Heroes“, aber das wird wahrscheinlich für Sie anders sein. Klicken Sie als nächstes auf „Einen Connector einrichten“. Es erscheint ein weiterer Bildschirm, um weitere Webhook-Einstellungen abzufragen.

Geben Sie einen Namen für den Incoming Webhook an; Ihre Nachrichten werden unter diesem Namen gesendet werden, also wählen Sie etwas sinnvolles, z.B. „Python Messenger“. Sie können auch ein benutzerdefiniertes Bild hochladen, aber das ist optional. Schließlich klicken Sie auf „Erstellen“. Es erscheint eine Webhook-URL!

Sie werden diese Webhook-URL in Ihrem Python-Programm benötigen, also kopieren Sie sie in die Zwischenablage und speichern Sie sie an einem sicheren Ort (z.B. in Ihrer Notizen-App) für den späteren Gebrauch. Schließlich klicken Sie auf „Fertig“. In der sich zeigenden Übersicht sehen Sie einen Überblick über alle Konnektoren im ausgewählten Kanal.

Sie können diesen Bildschirm einfach schließen. Im Kanal, für den Sie gerade den Incoming Webhook konfiguriert haben, sollten Sie eine entsprechende Bestätigungsmeldung sehen:

Das ist es! Jetzt ist Ihr Microsoft Teams-Kanal bereit, Nachrichten über den Webhook zu empfangen.

2. Schreiben der Geschäftsslogik in Python

Herzlichen Glückwunsch, dass Sie es so weit geschafft haben! Mit der Konfiguration des Incoming Webhooks in Teams ist es nun Zeit für die lustige Teil: Python-Schreiben. Wir beginnen mit dem Schreiben einiger Python-Code für unsere ‚Geschäftsslogik‘, um die vorliegende Aufgabe zu lösen.

Wenn Sie einen Refresher im Schreiben von Python-Code benötigen, ist unser Einführung in Python-Kurs der ideale Anfang.

Sie können entweder eine leere Arbeitsmappe von Grund auf erstellen, was nützlich ist, wenn Sie bereits wissen,welches Python-Programm Sie automatisieren und mit Microsoft Teams integrieren möchten.

Wenn Sie hier sind, um über die Konzepte zu lernen, können Sie mit einer Beispielarbeitsmappe beginnen, die einen Wetterbericht für eine von Ihnen angegebene Stadt zusammenfasst. Jeden Tag werden neue Daten vorhanden sein, daher ist dies ein hervorragender Kandidat für tägliche Berichterstattung! Klicken Sie unten auf die Schaltfläche „Code ausführen“, um diese Arbeitsmappe zu erstellen.

Führen Sie den Code aus und bearbeiten Sie ihn online in diesem Tutorial

Run code

In beiden Fällen sollten Sie am Ende ein DataLab-Arbeitsbuch mit Ihrer gesamten Geschäftslogik fertig codiert haben:

3. Eine Nachricht an Teams senden

Also, Teams-Webhook: check. Geschäftslogik: check. Um das Python-Notebook mit Microsoft Teams zu integrieren, müssen wir zwei Dinge tun: die Webhook-URL im DataLab-Arbeitsbuch speichern und etwas Python-Code schreiben, um eine Nachricht an den Teams-Kanal zu senden.

Die Webhook-URL speichern

Unser Python-Notebook benötigt die Webhook-URL, um die Nachricht an den richtigen Teams-Kanal zu senden. Sie könnten diese URL einfach in eine Codezelle Ihres Notebooks kopieren und einfügen. Dies ist jedoch keine sichere Methode und wird nicht empfohlen. Die Webhook-URL ist eine Art Geheimnis. Wenn Sie Ihr Notebook mit jemand anderem teilen, kann er die Webhook-URL sehen und Ihren Teams-Kanal spammen!

Dieser Ansatz würde auch erfordern, dass Sie dieses Kopieren und Einfügen in jedem Arbeitsbuch wiederholen, mit dem Sie Teams-Nachrichten senden möchten. Wenn Sie die Webhook-URL aus irgendeinem Grund aktualisieren möchten, müssen Sie jedes Arbeitsbuch durchgehen und bearbeiten.

Ein sicherer und skalierbarer Ansatz besteht darin, das Webhook-URL-Token in einer sogenannten Umgebungsvariable zu speichern. Wenn Sie diese Umgebungsvariable verbinden, wird sie in Ihrer Python-Sitzung verfügbar. In Ihrem Arbeitsbuch:

  • Klicken Sie auf die Registerkarte „Umgebung“ auf der linken Seite
  • Klicken Sie auf das Plus-Symbol neben „Umgebungsvariablen“
  • In der Modalität „Zusätzliche Umgebungsvariablen hinzufügen“:
    • Setze den „Name“ auf MS_TEAMS_WEBHOOK_URL
    • Im Feld „Wert“, füge die zuvor gespeicherte Webhook-URL ein.
    • Setze den „Namen der Umgebungsvariablen“ auf „Microsoft Teams“ (das kann eigentlich was sein).

Nach Füllen aller Felder klicke „Erstellen“, „Weiter“ und schließlich „Verbinden“. Ihre Arbeitsblatt-Sitzung wird neu gestartet und MS_TEAMS_WEBHOOK_URL ist nun als Umgebungsvariable in Ihrem Arbeitsblatt verfügbar. Dies kann du durch Erstellen eines Python-Zells mit folgendem Code überprüfen und ausführen:

import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)

Wenn du die gleichen Dienstkontokredite in einem anderen Arbeitsblatt wiederverwenden möchtest, musst du die Umgebungsvariable nicht erneut einrichten: du kannst die Umgebungsvariable in anderen Arbeitsblättern wiederverwenden.

Python-Code, um eine Microsoft Teams-Nachricht zu senden

Mit der festgelegten MS_TEAMS_WEBHOOK_URL können wir nun Python-Code schreiben, um eine Nachricht an Teams zu senden! Dafür werden wir das Open-Source-Paket pymsteams verwenden, das ein bequemes wraps für die recht komplizierte API zum Senden von Nachrichten an Teams bereitstellt. Lass uns es installieren und importieren, sowie das os-Paket, um Umgebungsvariablen auszulesen:

!pip install pymsteams import pymsteams import os

Nächstes können wir eine so genannte ‚Connector Card‘ – ein schönliches Wort für eine reiche Textnachricht in Teams – erstellen, Text hinzufügen und senden:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()

Führe diesen Code aus! Du solltest diese Nachricht in dem Kanal sehen:

Fabulous! Dies war ein sinnloser Stichproben-Nachrichten, aber du kannst auch eine Nachricht basierend auf dem Ergebnis deiner Geschäftslogik erstellen, wie wir im Beispiel-Arbeitsblatt getan haben:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) assert card.send()

Mit dem folgenden Ergebnis:

Schließlich kannst du auch auf die DL_WORKBOOK_ID Umgebungsvariable verweisen, um einen Button zu integrieren, der auf das Arbeitsblatt in DataLab verlinkt, falls du eine einfache Methode integrieren willst, um von Teams direkt zu dem DataLab-Arbeitsblatt zu gelangen, das diese Nachricht驱动:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) card.addLinkButton("View detailed forecast", f"https://www.datacamp.com/datalab/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit") assert card.send()

Mit dem folgenden Ergebnis:

Sehr cool, richtig?

4. Automatisieren!

Du hast ein Python-Skript geschrieben, das eine nützliche Analyse durchführt und einen Zusammenfassung dieser Analyse in Teams versendet, einschließlich eines Links auf den kompletten Notizbuch für alle, die mehr Details interessiert sind. Nicht schlecht! Nun, stelle dich vor, du könntest dieses Notizbuch so einstellen, dass es automatisch täglich oder wöchentlich ausgeführt wird, um dir immer aktuelle Ergebnisse zu liefern. Na ja, die großartige Nachricht ist, dass du das kannst! DataLab bietet die Funktion der geplanten Ausführungen für diesen Zweck an.

  • Klicke oben in der Menüleiste auf Ausführen > Planen
  • Konfiguriere die Planung, wie du es dir geheimerstellen willst:
    • Richte das Notizbuch ein, um automatisch täglich oder wöchentlich auszuführen. Wenn du wöchentliche Pläne verwendest, wähle den genauen Tag und die Uhrzeit.
    • Füge DataCamp-Benutzer hinzu, die jedes Mal informiert werden sollen, wenn ein Notizbuch erfolgreich oder fehlgeschlagen beendet wird. Dies ist bei Fehlgeschlagenen hilfreich, damit Sie einsteigen und beim Auftreten eines Problems beheben können.

Wenn es wie in der obigen Screenshot eingerichtet ist, wird der Notizbuch nun jeden Tag um 9:30 Uhr lokale Zeit ausgeführt, was bedeutet, dass jeden Morgen in der angegebenen Teams-Kanal eine Nachricht veröffentlicht wird.

Automatisieren oder nicht automatisieren

Jeder Task ist nicht automatisiert. Es hängt davon ab, wie oft du ihn tust, wie lange es dauert, ihn manuell zu erledigen und die Zeit, die es dauert, um einen Python-Skript zu schreiben, um ihn zu automatisieren. Zum Beispiel, erwäge einen jährlichen Bericht, der in Handarbeit 20 Minuten dauert, um zusammengestellt zu werden. Wenn es dir halbtags dauert, ein Skript dafür zu schreiben, wird es noch lange dauern, bis du das Geld, das du für die Automatisierung investiert hast!

Hier ist ein Zusammenfassungs-Tabellenformat:

Also, wenn ein täglich zu erledigender Task früher 5 Minuten dauerte, kannst du bis zu 6 Tagen investieren, um versuchen, diesen Task zu automatisieren. Wenn du weniger Zeit in die Automatisierung investierst, hast du Zeit gespart (über fünf Jahre hinweg).

Fazit

Die Einrichtung von DataLab, um Nachrichten an Microsoft Teams zu senden, erfordert zunächst das Durchblättern verschiedener Bildschirme. Aber sobald du alles mit der Webhook-URL in DataLab eingerichtet hast, ist das Senden einer Nachricht nur darum, einige Zeilen Python-Code hinzuzufügen – es ist wirklich einfach! Der beste Teil? Du kannst fast jede Python-Skript automatisieren und direkt deine Interessengruppen dort benachrichtigen, wo sie sind: in Teams.

Da sind die Zeiten vorbei, in denen du Erinnerungen für wiederkehrende, banalene Aufgaben setzen musst. Willkommen in einer Ära effizienter, automatisierter Arbeitsflüsse, wo du nicht zwischen Tools wechseln musst. Alles, was erforderlich ist, besteht darin, DataLab zu nutzen.

Denke daran, wenn du ein Update über das Schreiben von Python-Code verlangst, ist unser Python-Introduction-Kurs der perfekte Startpunkt.

Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python