Matrix (element.io)-Benachrichtigungen mit dem discourse-chat-integration-Plugin einrichten

Diese #howto-Anleitung beschreibt, wie der in discourse-chat-integration enthaltene Matrix (element.io)-Anbieter eingerichtet wird.

\u003e Vielen Dank an @ara4n und die Mitglieder des Raums #matrix-dev:matrix.org für ihre Unterstützung bei dieser Integration :slight_smile:

Installation

Das discourse-chat-integration-Plugin ist in Discourse enthalten. Stellen Sie sicher, dass es aktiviert ist, indem Sie in den Site-Einstellungen chat_integration_enabled auf true setzen. Weitere Details finden Sie im discourse-chat-integration-Plugin-Thema.

Einrichtung von Matrix

Diese Anweisungen gehen davon aus, dass Sie den Web-Client element.io verwenden. Ähnliche Schritte sollten auch mit anderen Schnittstellen möglich sein.

  1. Öffnen Sie https://app.element.io/ in einem neuen Inkognito-Fenster (Sie werden später verstehen, warum)

  2. Erstellen Sie ein Benutzerkonto für Ihren Bot. Es ist ratsam, das Passwort irgendwo aufzuschreiben, falls Sie sich später wieder anmelden möchten. Discourse benötigt es nicht.

  3. Nutzen Sie die Schnittstelle, um an beliebigen Räumen teilzunehmen, an die Sie Benachrichtigungen senden möchten

  4. Öffnen Sie die Benutzereinstellungen, indem Sie oben links auf Ihr Avatar klicken, dann auf \u003ckbd\u003eAlle Einstellungen\u003c/kbd\u003e

  5. Konfigurieren Sie den Anzeigenamen und das Avatar des Bots

  6. Wechseln Sie zum Reiter „Hilfe und Über", scrollen Sie nach unten zu „Erweitert" und kopieren Sie die Homeserver-Adresse sowie Ihr „Zugriffstoken" – Sie werden diese später benötigen.

  7. NICHT AUF ABMELDEN KLICKEN. Wenn Sie dies tun, wird das Zugriffstoken ungültig und funktioniert nicht. Schließen Sie stattdessen einfach das Inkognito-Fenster. Falls Sie vergessen haben, ein Inkognito-Fenster zu öffnen, gehen Sie zurück zu Schritt 1 :wink:

Einrichtung von Discourse

  1. Geben Sie in Ihren Discourse-Site-Einstellungen Ihre Homeserver-Adresse in die Einstellung chat_integration_matrix_homeserver ein. Stellen Sie sicher, dass Sie das Protokoll einschließen (z. B. https://matrix.org). Fügen Sie kein abschließendes Schrägstrich hinzu.

  2. Fügen Sie das zuvor kopierte Zugriffstoken in die Site-Einstellung chat_integration_matrix_access_token ein

  3. Aktivieren Sie chat_integration_matrix_enabled

  4. Gehen Sie zum Reiter \u003ckbd\u003ePlugins\u003c/kbd\u003e, dann zu \u003ckbd\u003eChat-Integrationen\u003c/kbd\u003e

  5. Gehen Sie zum Reiter \u003ckbd\u003eMatrix\u003c/kbd\u003e, dann zu \u003ckbd\u003eKanal erstellen\u003c/kbd\u003e

  6. Geben Sie einen Namen für den Kanal ein (dies wird nur in der Admin-Oberfläche angezeigt und kann beliebig sein)

  7. Geben Sie die „Raum-ID" für einen Raum ein, an den Sie Benachrichtigungen senden möchten. Im Element-Web-Client finden Sie diese, indem Sie Ihren Raum öffnen, oben auf den Namen klicken und dann nach unten scrollen. Sie sieht ungefähr so aus:

    !cdGUowUAqlgLHVerqE:matrix.org
    

    Hinweis: Neuere Matrix-Raum-IDs der Version 12 enthalten möglicherweise kein :server-Suffix (z. B. !abcdefghijkl). Beide Formate werden unterstützt.

  8. \u003ckbd\u003eKanal speichern\u003c/kbd\u003e

  9. Verwenden Sie die Taste \u003ckbd\u003eTest\u003c/kbd\u003e auf dem soeben erstellten Kanal, um zu prüfen, ob alles funktioniert. Sie sollten etwas Ähnliches wie Folgendes sehen:

  10. Richten Sie einige „Regeln" für Ihren Kanal ein, gemäß den Anweisungen im discourse-chat-integration-Thema.

Technische Hinweise
  • Zum Zeitpunkt des Schreibens scheint es keine benutzerfreundliche Möglichkeit zu geben, ein „Zugriffstoken" für einen „Bot" zu erhalten. Die Lösung mit dem Inkognito-Fenster ist die benutzerfreundlichste Methode, die ich finden konnte.

  • Dieses Plugin sendet Rich-Text-Nachrichten im Format org.matrix.custom.html, das Teil der Matrix-Spezifikation ist. Clients, die formatierte Nachrichten nicht unterstützen, fallen auf eine Klartext-Nachricht zurück.

  • Standardmäßig werden Nachrichten als m.notice gesendet (was Matrix-Clients in der Regel leiser darstellt). Sie können dies auf m.text ändern, indem Sie die Site-Einstellung chat_integration_matrix_use_notice deaktivieren.

  • Diese Implementierung sieht keine Möglichkeit zum „Aktualisieren" von Zugriffstoken vor. Dies basiert auf der Annahme, dass die meisten aktuell verwendeten Homeserver Token nicht verfallen. Sollte sich dies in Zukunft ändern, muss dies erneut überprüft werden.

19 „Gefällt mir“

The test is not working for us:

422 No Reason Phrase

and the spinner will keep on turning indefinitely until full page reload. How can we triage the error?

4 „Gefällt mir“

I just tried setting up a matrix integration using the instructions above, and it all worked ok. Can you confirm that you’re running the latest version of Discourse and this plugin?

Are you using the matrix.org homeserver, or your own homeserver? The 422 error is coming from that server.

I would suggest double checking your channel identifier, and also your matrix access token in your Discourse site settings.

4 „Gefällt mir“

Thanks for the hints. I’ll try that out, before reporting back here.

4 „Gefällt mir“

I have absolutely the same issue as @almereyda has.
@david, can you update obtaing “Access Token”, please? (Riot seems to be intensively developed :+1:)
+“Doctor log

2 „Gefällt mir“

I’m also interested in updated instructions about getting an access token…

1 „Gefällt mir“

Aktuell in Element als „Raumeinstellungen" bezeichnet (Rebranding von Riot).

Funktioniert einwandfrei.

2 „Gefällt mir“

Ich habe diese Seite aktualisiert, um diese Änderung widerzuspiegeln.

Der Zugriffstoken befindet sich anscheinend jetzt unter „Hilfe und Info“ am unteren Rand der Einstellungen.

Ich habe dasselbe Problem mit dem unendlichen Spinner. :frowning:

Ich habe es mit Räumen auf matrix.org und fedora.im versucht.

1 „Gefällt mir“

Ich habe die Einrichtung gerade selbst durchlaufen und es schien in Ordnung zu funktionieren. Ein paar Theorien:

  • Sind Ihre Räume verschlüsselt? Ich bin mir nicht sicher, ob wir zusätzliche Arbeit leisten müssen, um verschlüsselte Räume zu unterstützen.

  • Vielleicht laufen die Zugriffstoken nach einiger Zeit ab. Das passierte früher nicht, als ich die Integration 2017 erstellt habe, aber das ist lange her :older_man:. Ich werde meine lokale Konfiguration später diese Woche noch einmal ausprobieren und sehen, ob sie immer noch funktioniert.

1 „Gefällt mir“

Sie sind es nicht.

Vielleicht, aber ich habe den Zugriffstoken kopiert und ihn dann praktisch sofort verwendet, und das hat nicht geholfen.

3 „Gefällt mir“

Zur Information: @mattdm und ich konnten dies auf einen nachgestellten Schrägstrich in der Homeserver-URL in den Discourse-Einstellungen zurückführen.

Ich habe dies in den Anweisungen im OP vermerkt und auch die Anweisungen für das Zugriffstoken aktualisiert, damit sie mit der neuesten Benutzeroberfläche von element.io funktionieren.

5 „Gefällt mir“

Hatte jemand Erfolg mit der Thread-Unterstützung?

Beim Installieren der neuesten Version des Chat-Plugins (Commit ba40ede510986f74a23345082ac578e126467b97) und Konfigurieren eines Test-Matrix-Raums (unverschlüsselt, öffentlicher Raum) erhalte ich einen HTTP-Fehler 500, wenn ich einen Test durchführe (wie oben beschrieben: https://meta.discourse.org/t/set-up-matrix-element-io-notifications-using-the-discourse-chat-integration-plugin/66944/2?u=manning-ncsa). Das gleiche endlose Spinner-Symptom, das einen Seiten-Refresh erfordert.

Der Zugriffstoken des Bot-Kontos wurde unabhängig verifiziert, indem eine Nachricht mit der API (_matrix/client/r0/rooms/{room_id}/send/m.room.message) an unseren eigenen Matrix-Server gesendet wurde.

Die Discourse-Logs zeigen:

Started POST "/admin/plugins/chat-integration/test" for 141.142.60.55 at 2022-11-16 18:16:47 +0000
Processing by DiscourseChatIntegration::ChatController#test as */*
  Parameters: {"channel_id"=>"107", "topic_id"=>"466"}
Completed 500 Internal Server Error in 62ms (ActiveRecord: 0.0ms | Allocations: 10109)
NameError (uninitialized constant FinalDestination::HTTP)
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:361:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
1 „Gefällt mir“

Ich habe es nicht versucht, aber das wäre interessant. Meinen Sie, alle Beiträge in einem Thread zusammenzufassen, um die Kanalunordnung zu reduzieren, oder würden dabei Themenantworten in einem Matrix-Thread veröffentlicht werden?

2 „Gefällt mir“

Themenantworten in einem Matrix-Thread posten.
(Gleicher Ablauf wie bei Slack derzeit)

1 „Gefällt mir“

Ich bin neugierig, ob es Entwicklungen beim Hinzufügen von Thread-Antwortunterstützung für Matrix gab. Einige unserer Benutzer würden dies zu schätzen wissen.

3 „Gefällt mir“