El comando de publicación de Discourse solo funciona en un canal
Ahora, es probable que 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 al 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. Todos estos son 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 para probar, no funcionó. Ni siquiera sé por dónde empezar a solucionar este problema. Los únicos registros que conozco en Discourse son:
./launcher logs app
pero no parece haber nada allí. ¿Qué configuración podría haber pasado por alto que solo permita que la publicación funcione en un canal, y dónde debería buscar para depurar esto?
Verifica si puedes publicar desde Discourse hacia los canales a los que intentas publicar desde Discourse. Mi suposición es que el problema es que necesitas agregar la aplicación que has creado al canal antes de poder publicar en él o desde él.
@simon Creo que eso pudo haber sido el problema. Seré honesto, me confunde un poco cómo funciona la aplicación de Slack. Dado que pude ejecutar comandos como /discourse ... en cualquier canal de Slack y la “aplicación” parecía estar instalada a nivel global, pensé que había “agregado” la aplicación de todas las formas necesarias. Sin embargo, cuando invité explícitamente a mi usuario de la aplicación de Discourse a otro canal con /invite, ¡empezó a funcionar!
/invite @Discourse
/discourse post 20
Lo más molesto de esto es que Slack ni siquiera me muestra que mi usuario @discourse está en mi canal después de agregarlo. El número de usuarios en la interfaz de Slack no cambia y, si veo todos los miembros del canal, mi usuario de la aplicación no aparece en la lista. Supongo que esto es una deficiencia de Slack en sí mismo, no de Discourse.
Sería genial no tener que invitar al usuario de Discourse a cada canal de Slack de mi equipo (Dios mío, tenemos un montón de canales), pero supongo que esto debe ser una limitación de Slack para las aplicaciones. Además, ¿podemos agregar una mejora al plugin de chat de Discourse para detectar este problema y mostrar un mensaje de error más útil?
La primera vez que intenté configurarlo, me sorprendió tener que añadir la aplicación de Discourse a cada canal. Seguiré buscando alguna forma de eludir este requisito.
Posiblemente, cuando una acción falla porque la aplicación no tiene permisos para publicar en o desde un canal, Slack devuelve un mensaje de error a Discourse. Si ese es el caso, utilizar ese error para añadir una notificación a la entrada del canal en Discourse sería útil para depurar este tipo de problemas. No estoy seguro de si esto será posible, pero echaré un vistazo para ver si Slack devuelve alguna información útil a Discourse en este caso.
Esto parece correcto. Solo lo he probado con Slack. Cuando Discourse intenta publicar en un canal de Slack al que no se ha añadido la aplicación, se muestra una advertencia en la página de Integraciones de Chat y un mensaje de error encima del canal afectado:
Es posible que Discourse podría analizar ese mensaje de error para proporcionar al usuario detalles sobre lo que debe hacer para solucionar el problema.
Cuando intento publicar en Discourse con un comando de barra desde un canal al que no se ha añadido la aplicación, se lanza un error Job exception: break from proc-closure en Discourse desde slack_command_controller.rb:86. No estoy seguro de si hay suficiente información devuelta por Slack para crear un mensaje de error significativo para este caso.