Ce howto décrit comment configurer le fournisseur Matrix (element.io) inclus dans discourse-chat-integration.
Merci à @ara4n et aux membres de la salle #matrix-dev:matrix.org pour leur aide dans cette intégration
Installation
Le plugin discourse-chat-integration est inclus dans Discourse. Assurez-vous qu’il est activé en définissant chat_integration_enabled à true dans vos paramètres du site. Pour plus de détails, consultez le sujet du plugin discourse-chat-integration.
Configurer Matrix
Ces instructions supposent que vous utilisez le client web element.io. Des étapes équivalentes devraient être possibles avec d’autres interfaces.
Ouvrez https://app.element.io/ dans une nouvelle fenêtre de navigation privée (vous comprendrez pourquoi plus tard)
Créez un compte utilisateur pour votre bot. Il est probable que vous souhaitiez noter le mot de passe quelque part au cas où vous souhaiteriez vous reconnecter plus tard. Discourse n’en a pas besoin.
Utilisez l’interface pour rejoindre toutes les salles auxquelles vous souhaitez pouvoir envoyer des notifications
Ouvrez les paramètres de l’utilisateur en cliquant sur votre avatar en haut à gauche, puis Tous les paramètres
Configurez le nom d’affichage et l’avatar du bot
Passez à l’onglet « Aide et À propos », faites défiler jusqu’à « Avancé », puis copiez l’adresse du serveur d’accueil et votre « jeton d’accès » (Access Token) — vous en aurez besoin plus tard.
NE CLIQUEZ PAS SUR DÉCONNEXION. Si vous le faites, le jeton d’accès sera invalidé et cela ne fonctionnera plus. Fermez simplement la fenêtre de navigation privée. Si vous avez oublié d’ouvrir une fenêtre de navigation privée, retournez à l’étape 1
Configurer Discourse
Dans les paramètres de votre site Discourse, entrez l’adresse de votre serveur d’accueil dans le paramètre chat_integration_matrix_homeserver. Assurez-vous d’inclure le protocole. (par exemple https://matrix.org). N’incluez pas de barre oblique à la fin.
Collez le jeton d’accès que vous avez copié précédemment dans le paramètre du site chat_integration_matrix_access_token
Activez chat_integration_matrix_enabled
Allez dans l’onglet Plugins, puis Intégrations de chat
Allez dans l’onglet Matrix, puis Créer une chaîne
Entrez un nom pour la chaîne (celui-ci n’est affiché que dans l’interface d’administration, il peut être n’importe quoi)
Entrez l’« ID de la salle » pour une salle vers laquelle vous souhaitez envoyer des notifications. Dans le client web Element, vous pouvez le trouver en ouvrant votre salle, en cliquant sur le nom en haut, puis en faisant défiler jusqu’en bas. Cela ressemblera à quelque chose comme
!cdGUowUAqlgLHVerqE:matrix.org
Remarque : Les nouveaux ID de salle Matrix v12 peuvent ne pas inclure le suffixe :serveur (par exemple !abcdefghijkl). Les deux formats sont pris en charge.
Sauvegarder la chaîne
Utilisez le bouton Tester sur la chaîne que vous venez de créer pour vérifier que tout fonctionne. Vous devriez voir quelque chose comme ceci :
Au moment de la rédaction, il ne semble pas y avoir de moyen d’obtenir un « jeton d’accès » pour un « bot » de manière conviviale. La solution de la fenêtre de navigation privée est la méthode la plus conviviale que j’ai pu trouver.
Ce plugin envoie des messages riches au format org.matrix.custom.html, qui fait partie de la spécification Matrix. Les clients ne prenant pas en charge les messages formatés reviendront à un message en texte brut.
Par défaut, les messages sont envoyés sous forme de m.notice (que les clients Matrix affichent généralement de manière plus discrète). Vous pouvez le changer en m.text en désactivant le paramètre du site chat_integration_matrix_use_notice.
Cette implémentation ne prévoit pas de « rafraîchir » les jetons d’accès. Cela repose sur le fait que la majorité des serveurs d’accueil actuellement utilisés n’expirent pas les jetons. Si cela change à l’avenir, cela devra être réexaminé.
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.
I have absolutely the same issue as @almereyda has. @david, can you update obtaing “Access Token”, please? (Riot seems to be intensively developed )
+“Doctor log”
Je viens de refaire la configuration moi-même et cela semble avoir fonctionné correctement. Quelques théories :
Vos salons sont-ils chiffrés ? Je ne suis pas sûr si nous devons faire un travail supplémentaire pour prendre en charge les salons chiffrés.
Peut-être que les jetons d’accès expirent après un certain temps. Cela n’arrivait pas quand j’ai construit l’intégration en 2017, mais c’était il y a longtemps . J’essaierai à nouveau ma configuration locale plus tard cette semaine et je verrai si elle fonctionne toujours.
Pour information, @mattdm et moi avons pu identifier que cela était dû à une barre oblique finale sur l’URL du serveur d’accueil dans les paramètres de Discourse.
J’ai ajouté une note à ce sujet dans les instructions de la publication initiale, et j’ai également mis à jour les instructions relatives aux jetons d’accès pour qu’elles fonctionnent avec la dernière interface utilisateur d’element.io.
Installation de la dernière version du plugin de chat (commit ba40ede510986f74a23345082ac578e126467b97), et configuration d’une salle Matrix de test (salle publique non chiffrée), je reçois une erreur HTTP 500 lorsque j’essaie un test tel que décrit ci-dessus. Même symptôme de spinner infini nécessitant un rafraîchissement de la page.
Le jeton d’accès du compte bot a été vérifié indépendamment en envoyant un message à la salle via l’API (_matrix/client/r0/rooms/{room_id}/send/m.room.message) à notre propre serveur Matrix.
Les journaux Discourse montrent
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/middleware/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'
Je n’ai pas essayé, mais ce serait intéressant. Voulez-vous dire mettre tous les messages dans un seul fil pour réduire l’encombrement du canal, ou s’agirait-il de publier les réponses aux sujets dans un fil matrix ?
Je suis curieux de savoir s’il y a eu des développements concernant l’ajout de la prise en charge des réponses dans les fils de discussion pour Matrix. Certains de nos utilisateurs l’apprécieraient.