Configura le notifiche Matrix (element.io) usando il plugin discourse-chat-integration

Questa guida spiega come configurare il provider Matrix (element.io) incluso in discourse-chat-integration.

\u003e Grazie a @ara4n e ai membri della stanza #matrix-dev:matrix.org per il loro aiuto con questa integrazione :slight_smile:

Installazione

Il plugin discourse-chat-integration è incluso in Discourse. Assicurati che sia abilitato impostando chat_integration_enabled su true nelle impostazioni del sito. Per ulteriori dettagli, consulta l’argomento del plugin discourse-chat-integration.

Configurazione di Matrix

Queste istruzioni presuppongono l’uso del client web element.io. Passaggi equivalenti dovrebbero essere possibili utilizzando altre interfacce.

  1. Apri https://app.element.io/ in una nuova finestra di navigazione in incognito (capirai il motivo piĂą avanti)

  2. Crea un account utente per il tuo bot. Probabilmente vorrai annotare la password da qualche parte nel caso in cui tu voglia accedere nuovamente in seguito. Discourse non ne ha bisogno.

  3. Utilizza l’interfaccia per unirti a qualsiasi stanza a cui desideri inviare notifiche

  4. Apri le impostazioni dell’utente facendo clic sul tuo avatar in alto a sinistra, quindi \u003ckbd\u003eTutte le impostazioni\u003c/kbd\u003e

  5. Configura il nome visualizzato e l’avatar del bot

  6. Passa alla scheda “Aiuto e informazioni”, scorri fino a “Avanzate” e copia l’indirizzo del server principale e il tuo “Token di accesso”: ti serviranno più avanti.

  7. NON CLICCARE SU ESCI. Se lo fai, il token di accesso verrĂ  invalidato e non funzionerĂ . Invece, chiudi semplicemente la finestra di navigazione in incognito. Se hai dimenticato di aprire una finestra in incognito, torna al passaggio 1 :wink:

Configurazione di Discourse

  1. Nelle impostazioni del tuo sito Discourse, inserisci l’indirizzo del tuo server principale nell’impostazione chat_integration_matrix_homeserver. Assicurati di includere il protocollo. (ad esempio https://matrix.org). Non includere una barra finale.

  2. Incolla il token di accesso che hai copiato in precedenza nell’impostazione del sito chat_integration_matrix_access_token

  3. Abilita chat_integration_matrix_enabled

  4. Vai alla scheda \u003ckbd\u003ePlugin\u003c/kbd\u003e, quindi \u003ckbd\u003eIntegrazioni Chat\u003c/kbd\u003e

  5. Vai alla scheda \u003ckbd\u003eMatrix\u003c/kbd\u003e, quindi \u003ckbd\u003eCrea canale\u003c/kbd\u003e

  6. Inserisci un nome per il canale (questo viene visualizzato solo nell’interfaccia di amministrazione, può essere qualsiasi cosa)

  7. Inserisci l’“ID stanza” per una stanza a cui desideri inviare notifiche. Nel client web Element, puoi trovarlo aprendo la tua stanza, facendo clic sul nome in alto, quindi scorrendo fino in fondo. Assomiglierà a qualcosa del genere:

    !cdGUowUAqlgLHVerqE:matrix.org
    

    Nota: I nuovi ID stanza Matrix v12 potrebbero non includere il suffisso :server (ad esempio !abcdefghijkl). Entrambi i formati sono supportati.

  8. \u003ckbd\u003eSalva canale\u003c/kbd\u003e

  9. Usa il pulsante \u003ckbd\u003eTest\u003c/kbd\u003e sul canale che hai appena creato per verificare che tutto funzioni. Dovresti vedere qualcosa del genere:

  10. Configura alcune “Regole” per il tuo canale, in base alle istruzioni di discourse-chat-integration.

Note Tecniche
  • Al momento della stesura, non sembra esserci un modo per ottenere un “token di accesso” per un “bot” in modo user-friendly. La soluzione della finestra di navigazione in incognito è il metodo piĂą user-friendly che ho trovato.

  • Questo plugin invia messaggi in formato HTML ricco utilizzando il formato org.matrix.custom.html, che fa parte della specifica Matrix. I client che non supportano i messaggi formattati torneranno a un messaggio di testo semplice.

  • Per impostazione predefinita, i messaggi vengono inviati come m.notice (che i client Matrix tendono a visualizzare in modo piĂą silenzioso). Puoi cambiarlo in m.text disabilitando l’impostazione del sito chat_integration_matrix_use_notice.

  • In questa implementazione non è prevista la possibilitĂ  di “aggiornare” i token di accesso. Questo si basa sulla comprensione che la maggior parte dei server principali attualmente in uso non fa scadere i token. Se ciò cambierĂ  in futuro, sarĂ  necessario riesaminare la questione.

19 Mi Piace

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 Mi Piace

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 Mi Piace

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

4 Mi Piace

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 Mi Piace

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

1 Mi Piace

Attualmente chiamato Impostazioni stanza in Element (rebranding di Riot).

Funziona perfettamente.

2 Mi Piace

Ho aggiornato questa pagina per riflettere tale modifica.

Il token di accesso si trova, apparentemente, ora sotto “Aiuto e Informazioni” in fondo alle Impostazioni.

Ho lo stesso problema dello spinner infinito. :frowning:

Ho provato con stanze sia su matrix.org che su fedora.im.

1 Mi Piace

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 :older_man:. Riproverò la mia configurazione locale piĂą tardi questa settimana e vedrò se funziona ancora.

1 Mi Piace

Non lo sono.

Forse, ma stavo copiando il token di accesso e poi lo stavo usando quasi immediatamente e questo non ha aiutato.

3 Mi Piace

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.

5 Mi Piace

Qualcuno ha avuto successo con il supporto ai thread?

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'
1 Mi Piace

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?

2 Mi Piace

Pubblicazione di risposte all’argomento su un thread di matrix.
(Stesso flusso di quello che ha attualmente Slack)

1 Mi Piace

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.

3 Mi Piace