Configurar notificaciones de Slack usando el plugin discourse-chat-integration

Unfortunately neither of those things are possible at the moment.

2 Me gusta

Hello there, I am currently setting this up, and I am not sure if the interface changed or not, but are these scopes setup under Bot Token Scopes or under User Token Scopes?

Thank you.

1 me gusta

Both of these things should be possible using Zapier integration. Less than ideal, I know, but since I’ve been looking at it as a workaround for this plugin I thought I’d share.

1 me gusta

¡Hola!

Intenté configurar el plugin como se explica en este hilo, pero cuando intento publicar una transcripción, solo recibo del bot de Slack:

“Cargando la transcripción…”

Mi Discourse está alojado en el subdominio “discourse.group”. Esto es lo que obtengo en los registros de error:

/var/www/discourse/plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_command_controller.rb:86:in `block in process_post_request’

/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:252:in `with_connection’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:61:in `with_connection’

/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work’

/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread’

¿Sabes cómo solucionar esto?

El lugar donde ocurre el error indica que las credenciales de Slack ingresadas en la página de configuración de tu sitio no son correctas. Para encontrar la configuración de Integraciones de Chat, ve a la página de Administración / Configuración y desplázate hasta el final del menú lateral izquierdo. Verás un botón llamado “Integraciones de Chat” al final de la lista.

En esa página de configuración, asegúrate de que la siguiente configuración sea correcta:

  • chat integration discourse username
  • chat integration slack access token
  • chat integration slack incoming webhook token

Háznoslo saber si eso no resuelve el problema. Dado que tu sitio está alojado por nosotros, podemos revisar qué está fallando.

2 Me gusta

Solución para errores:

1) DiscourseChat::ProviderError

2) {\"ok\":false,\"error\":\"not_in_channel\"}

Intento hacer esto más evidente, ya que, lamentablemente, fue difícil encontrar la respuesta. El proceso de creación de la aplicación de Slack ha cambiado un poco desde estas instrucciones. Además, parece que la integración real del bot con un canal en Slack requiere un poco más de configuración.

Desde mi espacio de trabajo de Slack, pude confirmar que la aplicación funcionaba enviando mensajes directos al bot @discourse y ejecutando los comandos /discourse. Sin embargo, desde la configuración del complemento de Discourse, recibía errores y no podía establecer un canal ni enviar un mensaje de prueba.

Cómo implementarlo

EDICIÓN: hay información actualizada en las respuestas a continuación. He intentado incorporar los pasos adicionales aquí a partir del 6/4/20. Por favor, comenta o modifica estos según sea necesario. - dp

  1. Permisos del bot: se debe agregar el permiso chat:write.customize para que funcione el comando de barra /discourse. También agregué chat:write.
  2. Necesitarás crear el canal en Slack. Luego, ejecuta los comandos /discourse desde el canal o configura una regla en Discourse.
  3. Debes agregar manualmente el bot al canal de interés (¡al menos para publicar una transcripción!). Puedes hacerlo en la conversación privada con el bot en Slack: "configuración de la conversación" > "agregar esta aplicación a un canal".
  4. Luego, y esto es importante, debes agregar el usuario del bot de Discourse al canal. No logré que funcionara mediante los botones normales de “agregar usuario” o “agregar aplicación” del canal. PERO tuve éxito enviando un mensaje a “@discourse” dentro del canal —> Slack me mostró el mensaje “@discourse no está en este canal, ¿deseas agregarlo?”.
  5. Luego pude ejecutar un mensaje de prueba correctamente desde la configuración de los complementos :rocket:

Nota: en la configuración de la aplicación de Slack, establecí el nombre de la aplicación como @discourse

5 Me gusta

¡Gracias @thedavidprice y @simon por su gran apoyo!

¡He solucionado el problema! Todo estaba bien, pero el bot necesitaba ser añadido al canal para publicar una transcripción. ¿Quizás podrías añadir este punto a la lista de instrucciones de arriba?

Otra cosa que noté es que el ámbito de permiso chat:write:bot ya no está disponible; ¡debes elegir chat:write!

4 Me gusta

Hola @Vincenzo_Lomonaco, para confirmar, ¿estás diciendo que el propio Plugin ahora añadirá el bot al canal (por ejemplo, al crear una regla)?

Efectivamente, parece que han cambiado muchas cosas en la configuración de Slack. Puedo confirmar que añadí chat:write. También añadí chat:write.customize.

Una vez creado a través de la API de Slack, no estaba claro si también necesitaba añadir la aplicación a un canal dentro de la configuración de mi Espacio de trabajo para Aplicaciones. En mi caso, sí elegí un canal.

Por último, también tuve cierta confusión sobre si necesitaba o no añadir “Información de visualización” en la página de configuración de la aplicación de Slack. Lo hice, y parece que esa es la información que se utiliza dentro del directorio de aplicaciones de Slack y en “Aplicaciones recientes” en la columna izquierda de Slack. La URL de la imagen que introduje en Discourse para los mensajes del bot no parece funcionar. El nombre del bot funciona.

¡Gracias de nuevo! En general, estoy muy satisfecho con cómo van las cosas.

1 me gusta

Hola @thedavidprice,

No, necesitas agregar manualmente el bot al canal de interés (¡al menos para publicar una transcripción)! Puedes hacerlo en la conversación privada con el bot en Slack: "configuración de la conversación" > "agregar esta aplicación a un canal".

1 me gusta

Gracias por hacer esto. He actualizado la guía basándome en tu publicación y en mis propias pruebas. Puedo confirmar que el permiso chat:write.customize debe agregarse a la configuración de Ámbitos del Token del Bot para que el comando de barra /discourse post funcione.

Pensé que el ámbito channels:join podría ser suficiente para permitir que el bot se una automáticamente a un canal, pero según mis pruebas, esto no funciona. Creo que la forma más sencilla de agregar el bot a un canal se describe ahora en el paso 15 de la guía. Si hay una mejor manera de hacerlo, házmelo saber.

Limpiaré las respuestas en este tema en unos días, una vez que confirmemos que el estado actual de la guía funciona para la gente.

1 me gusta

Hola a todos, estoy buscando configurar esto para un lugar con restricciones de seguridad más estrictas. Al revisar los ámbitos requeridos documentados en el mensaje original en comparación con lo que actualmente está permitido, esto es lo que veo:

chat:write # ? poco claro, pero chat:write:bot está bien
chat:write.customize ? poco claro, pero chat:write:bot está bien
users:read # X rechazado
channels:history X rechazado
groups:history # OK, aceptado con cautela
im:history # OK, aceptado

Si la aplicación solo estuviera configurada con los siguientes ámbitos, ¿qué funcionaría y qué se vería afectado?

chat:write:bot
groups:history
im:history

Por ejemplo, estaría bien renunciar a las transcripciones…

3 Me gusta

Ha pasado un tiempo desde que implementé esto por primera vez, y parece que los scopes de Slack han cambiado mucho desde entonces. Veo que la gente ha mantenido actualizada la wiki del OP, ¡qué genial! :heart_eyes:

Creo que chat:write:bot y chat:write:user han sido obsoletos en favor de chat:write.

Parece que chat:write.customize es necesario porque personalizamos el author_name y author_icon del mensaje para que coincidan con el usuario de Discourse.

Los scopes users:read y *:history solo se utilizan para la publicación de transcripciones. Sé que parece mucho, pero fundamentalmente Discourse necesita acceso a tu historial de chat para construir la transcripción. Si prefieres no otorgar esos permisos, está perfectamente bien omitirlos y continuar sin la publicación de transcripciones.

3 Me gusta

Cuando uso comandos con barra, obtengo este error: /hub falló con el error "dispatch_failed"

(Usamos /hub en lugar de /discourse)

He podido agregar la aplicación al canal. También he podido enviar una publicación de prueba desde Discourse a nuestro Slack, pero no he podido hacer funcionar los comandos con /. ¡Me encantaría que me ayudaran a solucionar el problema!

¿Podrías revisar los permisos que has agregado a la aplicación en Slack? La última vez que intenté configurarlo, todos los permisos de los pasos 5 y 6 de la guía necesitaban agregarse a los ámbitos de la aplicación:

  • chat:write
  • chat:write.customize
  • users:read
  • channels:history
  • groups:history
  • im:history

Háznos saber si eso no resuelve el problema.

1 me gusta

Creo que tengo los permisos correctos. Aquí hay una captura de pantalla de la configuración que tengo bajo Ámbitos del token del bot.

¿Qué opinas? Desafortunadamente, eso significa que hay algo más ocurriendo.

2 Me gusta

He revisado nuevamente la guía de configuración y he creado un comando de barra /hub. Llamar a /hub post me funciona en cualquier canal al que he añadido la aplicación. Estoy utilizando los mismos permisos que en la captura de pantalla que compartiste.

¿Puedes asegurarte de haber completado el paso 8 de la guía? Esa sección indica lo siguiente:

Ve a la página Interactividad y accesos directos, activa la sección Interactividad cambiándola a Activado e ingresa esta URL en “URL de solicitud”:

<tudominio-de-discourse>/chat-integration/slack/interactive

También sería bueno confirmar que puedes publicar desde Discourse en el canal de Slack en el que intentas ejecutar el comando /hub post.

Avísanos si sigues sin poder hacer que esto funcione.

1 me gusta

Lo revisé y creo que sí, seguí ese paso.

Aquí tienes una captura de pantalla.

Creo que el error está relacionado con el paso 7.

Aquí están mis configuraciones.

Así es como aparece cuando intento usar el comando con barra en Slack:

Sí, esa parte funciona perfectamente.

No, no funciona. :slightly_smiling_face:

1 me gusta

La “URL de la solicitud” en la sección Editar comando de tu captura de pantalla no está usando HTTPS. Quizás ese sea el problema.

2 Me gusta

¡Eso fue todo, gracias!!!

1 me gusta

He seguido las instrucciones de esta guía y tengo la integración de Discourse/Slack (casi) funcionando. ¡Gran trabajo con este plugin! Sin embargo, tengo tres preguntas/observaciones.

No se pueden suscribirse a mensajes en una subcategoría suscribiéndose a la categoría principal

Esto puede ser intencional, pero no fue obvio al principio. Tengo categorías principales con subcategorías bajo ellas. Esperaba que si creaba una regla que filtrara “Todas las publicaciones y respuestas” en la categoría principal, esto incluiría implícitamente a cada una de las subcategorías. Sin embargo, esto no pareció funcionar y tuve que crear reglas para cada una de mis (muchas) subcategorías. Sería una excelente solicitud de mejora para simplificar la configuración de una instalación de Discourse con muchas subcategorías bajo unas pocas categorías principales.

No se pueden suscribirse a todas las categorías con una sola regla

Encontré información contradictoria sobre esto y asumo que el plugin de Slack anterior lo permitía, pero no pude encontrar una manera de crear una sola regla que simplemente suscribiera a todas las publicaciones y respuestas de TODAS las categorías del sitio. Esperaba hacer todo esto en una sola regla simple. Pero debido a esto y al punto anterior, se necesitaron 31 reglas separadas en lugar de una sola para establecer un puente básico entre toda mi plataforma Discourse y un canal de Slack. A menos que haya pasado algo por alto, por favor considérenlo también como una solicitud de mejora.

El comando de publicación de Discourse solo funciona en un canal

Ahora, esto probablemente sea mi culpa, pero no logro entenderlo. He revisado todos los hilos sobre el tema y me encantaría recibir ayuda. He verificado y vuelto a verificar los permisos de mi aplicación de Slack y puedo confirmar que funciona totalmente 100%… ¡pero solo en uno de mis canales!

/discourse post 20

Así que sé que el token de acceso está configurado y funciona correctamente. Sin embargo, en todos los demás canales de mi equipo de Slack, el comando anterior simplemente muestra:

Cargando la transcripción...

y eso es todo. Estos son todos canales públicos y he probado todas las combinaciones posibles de configuraciones. El único canal que funciona fue creado hoy, pero cuando creé otro nuevo canal para probar, no funcionó. Ni siquiera sé por dónde empezar a solucionar este problema. Los únicos registros de los que tengo conocimiento en Discourse son:

./launcher logs app

pero no parece haber nada allí en absoluto. ¿Qué configuración podría haber pasado por alto que solo permitiría que la publicación funcione en un canal y dónde debería buscar para depurar esto?