Create a user account for your bot. Youâll probably want to write down the password somewhere in case you want to log back in later. Discourse does not need it.
Use the interface to join any rooms that you want to be able to send notifications to
Open the user settings by clicking your avatar in the top left, then All Settings
Configure the botâs display name and avatar
Switch to the âHelp and Aboutâ tab, scroll down to âAdvancedâ, and copy the Homeserver address and your âAccess Tokenâ - youâll need them later.
DO NOT CLICK LOG OUT. If you do, the Access Token will be invalidated, and it wonât work. Instead, just close the incognito window. If you forgot to open an incognito window, go back to step 1
Set up Discourse
In your Discourse site settings, enter your home server address in the chat_integration_matrix_homeserver setting. Make sure to include the protocol. (e.g. https://matrix.org). Do not include a trailing slash.
Paste the access token you copied earlier into the chat_integration_matrix_access_token site setting
Enable chat_integration_matrix_enabled
Go to the Plugins tab, then Chat Integration
Go to the Matrix tab, then Add Channel
Enter a name for the channel (this is only displayed in the admin interface, it can be anything)
Enter the âRoom IDâ for a room that you want to send notifications to. In the Element web client, you can find it by opening your room, clicking the name at the top, then scroll to the bottom. It will look something like
!cdGUowUAqlgLHVerqE:matrix.org
Save Channel
Use the Test button on the channel you just created to check that everythingâs working. You should see something like this:
At the time of writing, there does not seem to be a way of obtaining an âaccess tokenâ for a âbotâ in a user-friendly way. The incognito window solution is the most user-friendly way I could find
The matrix spec does not currently define a way of providing ârich textâ messages. There is a spec under development, but for now this plugin uses the âunofficialâ method which has been adopted in the element.io client. Clients that do not support this will simply fall back to a plain text message
There is no provision in this implementation for ârefreshingâ access tokens. This is based on the understanding that the majority of homeservers currently in use do not expire tokens. If this changes in the future, this will need to be revisited.
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â
Ho appena eseguito la configurazione da solo e sembra aver funzionato bene. Un paio di teorie:
Le tue stanze sono crittografate? Non sono sicuro se dobbiamo fare un lavoro extra per supportare le stanze crittografate
Forse i token di accesso scadono dopo un poâ di tempo. Questo non succedeva quando ho creato lâintegrazione nel 2017, ma è passato molto tempo . Riproverò la mia configurazione locale piĂš tardi questa settimana e vedrò se funziona ancora.
Per la cronaca, @mattdm e io siamo riusciti a ricondurre questo problema a uno slash finale sullâURL di Homeserver nelle impostazioni di Discourse.
Ho aggiunto una nota a riguardo alle istruzioni nellâOP e ho anche aggiornato le istruzioni del token di accesso per funzionare con lâultima interfaccia utente di element.io.
Installazione dellâultima versione del plugin chat (commit ba40ede510986f74a23345082ac578e126467b97), e configurazione di una stanza Matrix di test (stanza pubblica non crittografata), ricevo un errore HTTP 500 quando tento un test come descritto sopra. Stesso sintomo di rotellina infinita che richiede lâaggiornamento della pagina.
Il token di accesso dellâaccount bot è stato verificato in modo indipendente inviando un messaggio alla stanza tramite API (_matrix/client/r0/rooms/{room_id}/send/m.room.message) al nostro server Matrix.
I log di Discourse mostrano
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.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'
Non ho provato, ma sarebbe interessante. Intendi inserire tutti i post in un unico thread per ridurre il disordine dei canali, o si tratterebbe di pubblicare le risposte allâargomento in un thread matrix?
Sono curioso di sapere se ci sono stati sviluppi sullâaggiunta del supporto per le risposte in thread per Matrix. Alcuni dei nostri utenti lo apprezzerebbero.