Esta guía howto describe cómo configurar el proveedor Matrix (element.io) incluido en discourse-chat-integration.
\u003e Gracias a @ara4n y a los miembros de la sala #matrix-dev:matrix.org por su ayuda con esta integración
Instalación
El plugin discourse-chat-integration viene incluido con Discourse. Asegúrate de que esté habilitado configurando chat_integration_enabled en true en la configuración de tu sitio. Para más detalles, consulta el tema del plugin discourse-chat-integration.
Configurar Matrix
Estas instrucciones asumen que estás utilizando el cliente web element.io. Debería ser posible realizar pasos equivalentes utilizando otras interfaces.
Crea una cuenta de usuario para tu bot. Probablemente quieras anotar la contraseña en algún lugar por si necesitas volver a iniciar sesión más tarde. Discourse no la necesita.
Utiliza la interfaz para unirte a cualquier sala a la que quieras poder enviar notificaciones
Abre la configuración del usuario haciendo clic en tu avatar en la esquina superior izquierda, luego \u003ckbd\u003eTodas las configuraciones\u003c/kbd\u003e
Configura el nombre de visualización y el avatar del bot
Cambia a la pestaña “Ayuda y Acerca de”, baja hasta “Avanzado” y copia la dirección del servidor de inicio (Homeserver) y tu “Token de acceso”. Los necesitarás más adelante.
NO HAZ CLIC EN CERRAR SESIÓN. Si lo haces, el Token de acceso quedará invalidado y no funcionará. En su lugar, simplemente cierra la ventana de incógnito. Si olvidaste abrir una ventana de incógnito, vuelve al paso 1
Configurar Discourse
En la configuración de tu sitio Discourse, introduce la dirección de tu servidor de inicio en la configuración chat_integration_matrix_homeserver. Asegúrate de incluir el protocolo. (por ejemplo, https://matrix.org). NO incluyas una barra diagonal al final.
Pega el token de acceso que copiaste anteriormente en la configuración del sitio chat_integration_matrix_access_token
Habilita chat_integration_matrix_enabled
Ve a la pestaña \u003ckbd\u003ePlugins\u003c/kbd\u003e, luego a \u003ckbd\u003eIntegraciones de Chat\u003c/kbd\u003e
Ve a la pestaña \u003ckbd\u003eMatrix\u003c/kbd\u003e, luego a \u003ckbd\u003eCrear Canal\u003c/kbd\u003e
Introduce un nombre para el canal (esto solo se muestra en la interfaz de administración, puede ser cualquier cosa)
Introduce el “ID de la sala” de una sala a la que quieras enviar notificaciones. En el cliente web Element, puedes encontrarlo abriendo tu sala, haciendo clic en el nombre en la parte superior y luego bajando hasta el final. Se verá algo así:
!cdGUowUAqlgLHVerqE:matrix.org
Nota: Los nuevos IDs de sala Matrix v12 pueden no incluir el sufijo :server (por ejemplo, !abcdefghijkl). Ambos formatos son compatibles.
\u003ckbd\u003eGuardar Canal\u003c/kbd\u003e
Usa el botón \u003ckbd\u003eProbar\u003c/kbd\u003e en el canal que acabas de crear para verificar que todo funcione correctamente. Deberías ver algo así:
Al momento de escribir esto, no parece haber una manera de obtener un “token de acceso” para un “bot” de forma amigable para el usuario. La solución de la ventana de incógnito es la forma más amigable para el usuario que pude encontrar.
Este plugin envía mensajes de texto enriquecido utilizando el formato org.matrix.custom.html, que es parte de la especificación de Matrix. Los clientes que no admiten mensajes con formato volverán a un mensaje de texto plano.
De forma predeterminada, los mensajes se envían como m.notice (que los clientes de Matrix suelen renderizar de manera más silenciosa). Puedes cambiar esto a m.text deshabilitando la configuración del sitio chat_integration_matrix_use_notice.
Esta implementación no contempla la “actualización” de los tokens de acceso. Esto se basa en el entendimiento de que la mayoría de los servidores de inicio en uso actualmente no caducan los tokens. Si esto cambia en el futuro, será necesario volver a evaluarlo.
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”
Acabo de pasar por la configuración yo mismo y pareció funcionar bien. Un par de teorías:
¿Están cifradas tus salas? No estoy seguro si necesitamos hacer trabajo adicional para admitir salas cifradas.
Quizás los tokens de acceso expiran después de algún tiempo. Esto solía suceder cuando construí la integración en 2017, pero eso fue hace mucho tiempo . Intentaré mi configuración local de nuevo más tarde esta semana y veré si todavía funciona.
Para que conste, @mattdm y yo pudimos rastrear esto hasta una barra diagonal al final de la URL del servidor de origen en la configuración de Discourse.
He añadido una nota sobre esto a las instrucciones en el OP, y también he actualizado las instrucciones del token de acceso para que funcionen con la última interfaz de usuario de element.io.
Al instalar la última versión del plugin de chat (commit ba40ede510986f74a23345082ac578e126467b97) y configurar una sala de Matrix de prueba (sala pública sin cifrar), recibo un error HTTP 500 cuando intento una prueba como se describe arriba. Mismo síntoma de spinner infinito que requiere actualizar la página.
El token de acceso de la cuenta del bot fue verificado de forma independiente enviando un mensaje a la sala usando la API (_matrix/client/r0/rooms/{room_id}/send/m.room.message) a nuestro propio servidor de Matrix.
Los registros de Discourse muestran
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'
No lo he intentado, pero sería interesante. ¿Te refieres a poner todas las publicaciones en un solo hilo para reducir el desorden del canal, o se trataría de publicar respuestas de temas en un hilo de matrix?
Tengo curiosidad por saber si ha habido algún avance en la adición de soporte para respuestas encadenadas para matrix. Algunos de nuestros usuarios lo agradecerían.