Microsoft Teams Benachrichtigungen mit dem discourse-chat-integration Plugin einrichten

Diese Anleitung beschreibt, wie Sie den Microsoft Teams-Anbieter einrichten, der in discourse-chat-integration enthalten ist.

Microsoft Teams einrichten

In Microsoft Teams:

  1. Klicken Sie in der vertikalen Navigationsleiste auf der linken Seite auf die Auslassungsschaltfläche () und wählen Sie im Menü Workflows.

  2. Klicken Sie auf der Seite Workflows oben rechts auf die Schaltfläche + Von Grund auf neu erstellen.

  3. Suchen Sie im Modal für benutzerdefinierte Workflows nach webhook und wählen Sie die Aktion Wenn eine Teams-Webhook-Anforderung empfangen wird als Auslöser.

  4. Wählen Sie im Feld Wer den Flow auslösen kann die Option Jeder aus. [1]

  5. Klicken Sie auf + Neuer Schritt.

  6. Suchen Sie als Nächstes nach card und wählen Sie die Aktion Karte in einem Chat oder Kanal posten.

  7. Füllen Sie die Felder wie folgt aus:

  • Posten als: Wählen Sie aus, von wem die Nachrichten gesendet werden sollen; Sie können diesen Wert auf dem Standardwert belassen oder Benutzer wählen, damit die Nachricht von Ihnen erscheint.

  • Posten in: Wählen Sie Kanal, wodurch weitere Felder angezeigt werden:

    • Team: Wählen Sie das gewünschte Team aus.
    • Kanal: Wählen Sie den gewünschten Kanal aus.
    • Adaptive Card: Klicken Sie in die Eingabe, wodurch ein Pop-up geöffnet wird (wird im nächsten Schritt beschrieben).

  1. Klicken Sie in das Feld Adaptive Card, um ein Pop-up zu öffnen [2], um dynamische Inhalte oder einen Ausdruck einzufügen. Wechseln Sie zur Registerkarte Ausdruck und geben Sie triggerBody() in das Ausdrucksfeld ein.

  2. Klicken Sie auf Speichern.

  3. Sie sollten nun einen Workflow mit dem Namen manual → Karte in einem Chat oder Kanal posten in Ihrer Liste sehen. Klicken Sie auf die vertikale Auslassungsschaltfläche dieses Workflows und wählen Sie im Dropdown-Menü Details.

  4. Klicken Sie auf dieser Seite auf Webhook-Link kopieren, um den Link für die nächsten Schritte zu erhalten. Während Sie hier sind, können Sie optional den Workflow-Namen bearbeiten, um seinen Zweck für andere in Ihrem Team widerzuspiegeln.

Discourse einrichten

Nun zurück zu Discourse:

  1. Aktivieren Sie im Discourse-Adminbereich die Einstellung Chat integration enabled, um das Plugin für die Chat-Integration zu aktivieren, und die Einstellung Chat integration Teams enabled, um Microsoft Teams zu unterstützen.

  2. Suchen Sie in der Seitenleiste den Abschnitt Plugins und klicken Sie auf Chat Integrations, dann klicken Sie auf + Kanal erstellen.

  3. Füllen Sie im Modal Kanal bearbeiten die Felder wie folgt aus:

  • Name: Geben Sie einen Namen ein, der verdeutlicht, mit welchem Microsoft Teams-Kanal Sie sich verbinden. Er muss keine exakte Übereinstimmung sein.
  • Webhook-URL: Fügen Sie die Webhook-URL ein, die Sie in Schritt 11 des obigen Abschnitts zur Einrichtung von Teams kopiert haben.
  1. Klicken Sie auf Kanal speichern.

Die Integration testen

Jetzt ist es an der Zeit zu überprüfen, ob alles wie erwartet funktioniert.

  1. Klicken Sie in Discourse auf Test für den neu erstellten Kanal.

  2. Suchen Sie nach einem Thema anhand der ID, des Titels oder der URL; wählen Sie das gewünschte Thema aus; und klicken Sie auf Testnachricht senden.

  3. In Microsoft Teams sollte eine neue Nachricht mit Informationen aus dem Thema im Kanal gepostet werden:

Optional: Regeln für Ihren Kanal einrichten

Nachdem Sie bestätigt haben, dass alles funktioniert, können Sie in Discourse zurückgehen und zusätzliche Regeln für Ihren Kanal einrichten, um die Nachricht anzupassen.

Fehlerbehebung

Wenn die Nachricht nicht wie erwartet in Microsoft Teams angezeigt wird, gehen Sie zur Seite Workflowdetails (siehe Schritt 10 im obigen Abschnitt zur Einrichtung von Teams) und überprüfen Sie den Abschnitt Ausführungsverlauf. Dieser sollte Protokolle jeder Nachrichten-Ausführung anzeigen.

Klicken Sie auf die fehlgeschlagene Ausführung, die Sie zum Power Automate-Bereich führt, wo Sie oben auf der Seite eine Fehlermeldung sehen können. (Im folgenden Screenshot war die Ausführung erfolgreich, aber der Pfeil zeigt an, wo der Fehler bei einer fehlgeschlagenen Ausführung angezeigt wird.)

Dies sollte das Problem detailliert beschreiben, das Sie dann beheben oder hier mit uns teilen können, damit wir helfen können.


    1. Discourse unterstützt derzeit keine authentifizierten Webhooks für Teams, daher funktioniert nur die Option „Jeder“.
    ↩︎
  1. Wenn das Popup nicht angezeigt wird, geben Sie vorübergehend etwas in das Feld Adaptive Card ein, speichern Sie den Workflow, öffnen Sie ihn erneut zur Bearbeitung, und das Popup sollte erscheinen. ↩︎

12 „Gefällt mir“

Ich habe es gerade ausprobiert, und es schien zunächst zu funktionieren, aber nur beim ersten Klick auf den Test-Button.

Die Regeln sind wie folgt eingerichtet:

  • Typ: normal
  • Filter: Alle Themen (?) und Antworten (hier aus dem Deutschen übersetzt)
  • Kategorie: Sandbox

Als ich eine Antwort auf das Test-Thema in meiner Sandbox-Kategorie schrieb, erschien ein Warnsymbol, als ich zu meinen Chat-Integrationen ging. Beim Klicken auf das Warndreieck wird jedoch unknown error... angezeigt, wobei die Fehlermeldung null ist.

Wenn ich versuche, eine weitere Testbenachrichtigung zu senden, erhalte ich einen weiteren Fehler: 500 internal server error.

Jeder Hinweis, wo man mit der Fehlersuche beginnen kann, ist willkommen. Falls dieser Beitrag woanders hingehört (z. B. auf der Seite des Chat-Integration-Plugins) oder als separates Thema erstellt werden sollte, können Sie ihn entsprechend verschieben oder mich informieren.

3 „Gefällt mir“

Hallo @SHilser – könntest du bitte auf deiner Seite /logs prüfen und schauen, ob dort etwas Relevantes zu finden ist?

2 „Gefällt mir“

Es gibt zwei Punkte, die relevant erscheinen.

  • Socket-Fehler
  • Internal Server Error

Ich habe die Logs unten kopiert (ich habe meinen Domainnamen durch mydomain.tld ersetzt)

Socket-Fehler

Meldung (4-mal gemeldet)

SocketError (Fehler beim Öffnen der TCP-Verbindung zu outlook.office.com:443 (getaddrinfo: Temporärer Fehler bei der Namensauflösung))
app/controllers/application_controller.rb:340:in `block in with_resolved_locale'
app/controllers/application_controller.rb:340:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:19:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Backtrace

/usr/local/lib/ruby/2.6.0/net/http.rb:949:in `rescue in block in connect'
/usr/local/lib/ruby/2.6.0/net/http.rb:946:in `block in connect'
/usr/local/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout'
/usr/local/lib/ruby/2.6.0/timeout.rb:103:in `timeout'
/usr/local/lib/ruby/2.6.0/net/http.rb:945:in `connect'
/usr/local/lib/ruby/2.6.0/net/http.rb:930:in `do_start'
/usr/local/lib/ruby/2.6.0/net/http.rb:919:in `start'
/usr/local/lib/ruby/2.6.0/net/http.rb:1470:in `request'
rack-mini-profiler (2.0.4) lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
rack-mini-profiler (2.0.4) lib/mini_profiler/profiling_methods.rb:33:in `step'

Env

HTTP HOSTS: mysite.tld

Internal Server Error

Meldung (4-mal gemeldet)

Error: Internal Server Error
Url: https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js
Line: 1
Column: 267890
Window Location: https://mysite.tld/admin/plugins/chat/teams

Backtrace

o/t</<@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:267890
o/t<@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:267993
o@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:268074
trigger@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:545343
A</e._onError/<@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:550189
f</t.invoke@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:490190
f</t.flush@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:489198
p</t.flush@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:491205
t</t._end@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:496596Here
t</t.end@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:493157

Env

HTTP HOSTS: mysite.tld

Danke für die Hilfe :slight_smile:

2 „Gefällt mir“

Das deutet darauf hin, dass Ihr Server Probleme mit der DNS-Auflösung hat. Verwenden Sie eine Standard-Installation auf Docker-Basis? Oder handelt es sich um eine Entwicklungsumgebung?

3 „Gefällt mir“

Ich habe es vor etwa einer Woche auf einem separaten DigitalOcean-Droplet eingerichtet (One-Click-Installation; aktuell bin ich bei Version: 2.6.0.beta1 (310952fd6a)). Ich verwende eine Subdomain und habe die DNS-Einträge ebenfalls bei DigitalOcean verwaltet. Ich habe einen A-Record, der auf die IP zeigt, sowie einen MX-Record, der auf den Subdomain-Namen für die E-Mail-Antwort verweist, gemäß diesen Anweisungen. Das Einzige, was fehlt, ist ein veröffentlichter DMARC-Eintrag.

Das ist alles, woran ich mich im Zusammenhang mit DNS-Einstellungen erinnere. Bisher hat jedoch alles wie erwartet funktioniert. Die Seite ist eingerichtet, ich kann über die Subdomain darauf zugreifen, mich anmelden, Themen erstellen (sogar per E-Mail) usw.

Ich bin nur verwundert, dass die erste Nachricht durchgekommen ist, die folgenden aber nicht :man_shrugging:

2 „Gefällt mir“

Wenn ich von DNS-Auflösung spreche, meine ich, dass Ihr Server Probleme hat, eine Verbindung zu outlook.office.com herzustellen. Die Konfiguration der DNS-Einträge Ihres Forums sollte dies nicht beeinflussen.

Können Sie versuchen, eine SSH-Verbindung zu Ihrem Server herzustellen und folgenden Befehl auszuführen:

host outlook.office.com

Sie sollten eine Ausgabe ähnlich der folgenden erhalten:

outlook.office.com ist ein Alias für substrate.office.com.
substrate.office.com ist ein Alias für substrate.ms-acdc.office.com.
substrate.ms-acdc.office.com ist ein Alias für afd-k.office.com.
afd-k.office.com ist ein Alias für outlook-office-com.k-0002.k-msedge.net.
outlook-office-com.k-0002.k-msedge.net ist ein Alias für k-0002.k-msedge.net.
k-0002.k-msedge.net hat die Adresse 13.107.18.11
k-0002.k-msedge.net hat die IPv6-Adresse 2620:1ec:c::11
3 „Gefällt mir“

Wenn ich

host -d outlook.office.com

eingebe, erhalte ich Folgendes:

Trying "outlook.office.com"
Host outlook.office.com not found: 2(SERVFAIL)
Received 36 bytes from 127.0.0.53#53 in 43 ms

Wenn ich den Port :443 hinzufüge, erhalte ich einen anderen Fehler:

Trying "outlook.office.com:443"
Host outlook.office.com:443 not found: 3(NXDOMAIN)
Received 40 bytes from 127.0.0.53#53 in 3 ms
Received 40 bytes from 127.0.0.53#53 in 3 ms

Bei anderen Domains wie google.com oder der Domain meiner Discourse-Instanz (h-da.transformative-praxis.cc) oder anderen Seiten erhalte ich die erwartete Ausgabe, ähnlich wie von dir beschrieben.

Ich habe nach dem ersten Fehler gesucht, bin mir aber immer noch nicht sicher, woher er stammt. Ich habe Folgendes gelesen, konnte aber nicht beurteilen, ob dies tatsächlich für mein Problem relevant ist:

1 „Gefällt mir“

Ich habe es immer wieder versucht, und dieses Mal habe ich die Ergebnisse erhalten, die du beim Eingeben von

host outlook.office.com

beschrieben hast.
Also schien an dieser Stelle alles in Ordnung zu sein. Ich habe das mehrfach hintereinander wiederholt, um sicherzugehen (etwa 15 Mal mit einem Intervall von ungefähr 10 Sekunden), und irgendwann trat derselbe servfail-Fehler wie zuvor auf. Aber meistens hat es funktioniert.

Beim Versuch, eine Testnachricht zu senden, ist es genau umgekehrt. Das funktioniert vielleicht einmal von zehn Versuchen. Bei den anderen Versuchen erhalte ich dieselben Fehler wie zuvor. Und wenn ich eine reguläre Nachricht poste, die den für den Kanal festgelegten Regeln entspricht, erhalte ich weder eine Benachrichtigung noch eine Fehlermeldung in den Logs.
Es wirkt für mich so zufällig, dass ich nicht herausfinden kann, was die Ursache ist.

Ich habe weiterhin meine Konfiguration mit zwei Droplets für jede Subdomain und zwei entsprechenden A-Einträgen sowie einem Satz von NS-Einträgen für meine Hauptdomain, die auf ns1.digitalocean.com zeigen, verdächtigt. Deshalb habe ich dnsstuff für meine Seite getestet und erhielt ein „Fail“ beim „SOA record check“ sowie whatsmydns.net für meine NS-Einträge, konnte aber immer noch keine möglichen Zusammenhänge mit meinem Problem erkennen.

An diesem Punkt bin ich völlig verwirrt darüber, wer den Fehler verursacht: Habe ich falsche DNS-Einstellungen vorgenommen (was laut @david keinen Einfluss darauf haben sollte), liegen Servereinstellungen oder -probleme vor, oder ist es einfach MS-Teams (outlook.office.com), das Probleme macht oder mich auf irgendeine Weise blockiert?

Jegliche Hinweise darauf, was ich überprüfen oder tun könnte, um den Fehler zu finden, sind willkommen, einschließlich weiterer Anlaufstellen, an die ich mich wenden kann, falls du denkst, dass dies über das hinausgeht, was du mir hier helfen kannst.

Vielen Dank für die bisherige Unterstützung.

1 „Gefällt mir“

Hallo, danke dafür. Ich scheitere ständig bei Schritt 5: Das Dialogfeld besagt, dass meine eingehende Webhook-URL ungültig ist.

Jede Hilfe wäre willkommen!

Dan

1 „Gefällt mir“

Wärst du so freundlich, mir zu zeigen, wie deine Webhook-URL aussieht? Entweder per PN an mich oder, wenn du sie vorher ungültig machen kannst, hier im Thema?

1 „Gefällt mir“

Danke @Dan_Turner, ich habe unsere Validierung etwas gelockert, was die Situation verbessern sollte. Bitte probiere es aus und lass mich wissen, ob es für dich besser funktioniert.

2 „Gefällt mir“

Danke! Ich werde es versuchen.

Dan

1 „Gefällt mir“

Entschuldigung für die Dummheit, aber muss ich Discourse aktualisieren oder die Datei direkt wie in der Lösung beschrieben bearbeiten?
Danke, Dan

1 „Gefällt mir“

Du musst das Plugin aktualisieren. Gehe zu /admin/upgrade und drücke die Schaltfläche „Aktualisieren“ neben „Discourse-chat-integration“.

2 „Gefällt mir“

Hey – es tut mir leid, dass ich nicht weiterkomme, aber wie kann ich das eigentlich ausprobieren, da ich eine gehostete Discourse-Instanz verwende? Danke, Dan

1 „Gefällt mir“

Du musst deinen Hosting-Provider bitten, das Plugin für dich zu aktualisieren. Bei discourse.org wurde diese Änderung bereits an alle unsere Kunden ausgerollt, also wirst du wohl woanders gehostet?

1 „Gefällt mir“

Ja, Discourse-Hosting für mich. Welche Version ist es bitte, und ich werde sie bitten, ein Update durchzuführen?

1 „Gefällt mir“

Wir haben keine Versionsnummern für Plugins, aber Sie können diesen Commit-Link mit ihnen teilen: https://github.com/discourse/discourse-chat-integration/commit/00ec1f486a3fd1dc523cdf242cfb1c78baaa407e

2 „Gefällt mir“

Vielen Dank für dieses – sehr nützliche – Plugin.
Eine großartige Verbesserung wäre: Gruppen-Erwähnung in der Nachricht hinzufügen, um Benachrichtigungen auf der Teams-Seite zu generieren.
Es scheint, dass die Webhook-API diese Funktion (nicht) implementiert hat, aber einige sagen, sie wurde kürzlich implementiert.
Glauben Sie, dass dies einfach implementiert werden könnte?