Infelizmente, nenhuma dessas coisas é possível no momento.
Olá, estou configurando isso agora e não tenho certeza se a interface mudou ou não, mas esses escopos são configurados em Escopos de Token do Bot ou em Escopos de Token do Usuário?
Obrigado.
Ambas as coisas devem ser possíveis usando a integração com o Zapier. Menos que ideal, eu sei, mas como tenho analisado isso como uma solução alternativa para este plugin, achei que deveria compartilhar.
Olá!
Tentei configurar o plugin conforme explicado neste tópico, mas ao tentar postar uma transcrição, recebo apenas do bot do Slack:
“Carregando a transcrição…”
Meu Discourse está hospedado no subdomínio “discourse.group”. Isso é o que obtenho nos logs de erro:
/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’
Você sabe como corrigir isso?
O local onde o erro está ocorrendo indica que as credenciais do Slack inseridas na página de configurações do seu site estão incorretas. Para encontrar as configurações de Integrações de Chat, acesse a página Admin / Configurações e role até o final do menu lateral esquerdo. Você verá um botão “Integrações de Chat” no final da lista.
Nessa página de configurações, verifique se as seguintes configurações estão corretas:
chat integration discourse usernamechat integration slack access tokenchat integration slack incoming webhook token
Avise-nos se isso não resolver o problema. Como seu site é hospedado por nós, podemos verificar o que está dando errado.
Solução para Erros:
1) DiscourseChat::ProviderError
2) {\"ok\":false,\"error\":\"not_in_channel\"}
Tentando tornar isso mais óbvio, pois, infelizmente, foi difícil encontrar a resposta. O processo de criação do aplicativo Slack mudou um pouco desde estas instruções. E parece que a integração real do bot com um canal no Slack também exige um pouco mais de configuração.
Do meu workspace do Slack, pude confirmar que o aplicativo estava funcionando enviando mensagens diretas (DM) ao bot @discourse e executando os comandos /discourse. No entanto, nas configurações do Plugin do Discourse, recebia erros e não conseguia definir um canal nem enviar uma mensagem de teste.
Como implementar
EDITO: Há informações atualizadas nas respostas abaixo. Tentei incorporar as etapas adicionais aqui a partir de 06/04/20. Por favor, comente ou modifique conforme necessário. - dp
- Permissões do bot: A permissão
chat:write.customizeprecisa ser adicionada para que o comando de barra/discoursefuncione. Também adicioneichat:write. - Você precisará criar o canal no Slack. Em seguida, execute os comandos
/discoursea partir do canal ou configure uma regra no Discourse. - Você precisa adicionar manualmente o bot ao canal de interesse (pelo menos para postar uma transcrição)! Você pode fazer isso na conversa privada com o bot no Slack:
"configurações da conversa" > "adicionar este aplicativo a um canal". - Então, e isso é importante, você precisa adicionar o usuário do bot do Discourse ao canal. Não consegui fazer isso funcionar através dos botões normais de “adicionar usuário” ou “adicionar aplicativo” do canal. MAS tive sucesso ao enviar uma mensagem para “@discourse” dentro do canal → Em seguida, o Slack me exibiu a mensagem “@discourse não está neste canal, você gostaria de adicionar?”
- Então, consegui executar uma mensagem de teste com sucesso nas configurações dos Plugins

Nota: Na configuração do aplicativo Slack, defini o nome do aplicativo como @discourse
Obrigado @thedavidprice e @simon pelo excelente apoio!
Consertei o problema! Tudo estava certo, mas o bot precisava ser adicionado ao canal para postar a transcrição. Talvez você possa adicionar esse ponto à lista de instruções acima?
Outra coisa que notei é que o escopo de permissão chat:write:bot não está mais disponível; você deve escolher chat:write!
Olá @Vincenzo_Lomonaco, para confirmar, você está dizendo que o próprio Plugin agora adicionará o bot ao canal (por exemplo, ao criar uma regra)?
De fato, parece que muitas coisas mudaram no lado da configuração do Slack. Posso confirmar que adicionei chat:write. Também adicionei chat:write.customize.
Depois de criado via API do Slack, não ficou claro para mim se eu precisava também adicionar o app a um canal nas configurações do meu Workspace para Apps. No meu caso, eu escolhi um canal.
Por fim, também tive alguma confusão sobre se precisava ou não adicionar “Informações de Exibição” na página de configurações do app no Slack. Eu adicionei, o que parece ser a informação usada dentro do diretório de apps do Slack e para “Apps Recentes” na coluna esquerda do Slack. Minha URL de imagem inserida no Discourse para as mensagens do bot não parece estar funcionando. O nome do bot está funcionando.
Obrigado novamente! No geral, estou muito satisfeito com como as coisas estão indo.
Olá @thedavidprice,
Não, você precisa adicionar manualmente o bot ao canal de interesse (pelo menos para postar uma transcrição)! Você pode fazer isso na conversa privada com o bot no Slack: "configurações da conversa" > "adicionar este aplicativo a um canal".
Obrigado por fazer isso. Atualizei o guia com base no seu post e nos meus próprios testes. Posso confirmar que a permissão chat:write.customize precisa ser adicionada às Configurações de Escopos do Token do Bot para que o comando de barra /discourse post funcione.
Eu achei que o escopo channels:join poderia ser tudo o que era necessário para permitir que o bot se juntasse automaticamente a um canal, mas, com base nos meus testes, isso não funciona. Acredito que a maneira mais fácil de adicionar o bot a um canal agora está descrita na etapa 15 do guia. Se houver uma maneira melhor de fazer isso, por favor, me avise.
Vou limpar as respostas neste tópico em alguns dias, assim que confirmarmos que o estado atual do guia está funcionando para as pessoas.
E aí, pessoal! Estou tentando configurar isso para um lugar com restrições de segurança mais rígidas. Ao revisar as escopos necessárias documentadas na postagem original versus o que é atualmente permitido, vejo o seguinte:
chat:write # ? incerto, mas chat:write:bot está OK
chat:write.customize ? incerto, mas chat:write:bot está OK
users:read # X rejeitado
channels:history X rejeitado
groups:history # OK, aceito com cautela
im:history # OK, aceito
Se o aplicativo fosse configurado apenas com as seguintes escopos, o que funcionaria e o que quebraria?
chat:write:bot
groups:history
im:history
Por exemplo, eu ficaria bem em abrir mão das transcrições…
Já faz um tempo desde que implementei isso pela primeira vez, e parece que as scopes do Slack mudaram bastante desde então. Vejo que as pessoas têm mantido a wiki do OP atualizada, o que é ótimo! ![]()
Acho que chat:write:bot e chat:write:user foram descontinuadas em favor de chat:write.
Parece que chat:write.customize é necessária porque personalizamos o author_name e o author_icon da mensagem para corresponder ao usuário do Discourse.
As scopes users:read e *:history são usadas apenas para a postagem de transcrições. Sei que parece muito! Mas, fundamentalmente, o Discourse precisa de acesso ao seu histórico de chat para construir a transcrição. Se você preferir não conceder essas permissões, está tudo bem em ignorá-las e continuar sem a postagem de transcrições.
Quando uso comandos com barra, recebo este erro: /hub falhou com o erro "dispatch_failed"
(Nós usamos /hub em vez de /discourse)
Consegui adicionar o aplicativo ao canal. Também consegui enviar uma postagem de teste do Discourse para nosso Slack, mas não consegui entender os comandos com /. Gostaria muito de ajuda para resolver isso!
Você pode verificar as permissões que adicionou ao aplicativo no Slack? Na última vez que configurei isso, todas as permissões dos passos 5 e 6 do guia precisavam ser adicionadas aos escopos do App:
chat:writechat:write.customizeusers:readchannels:historygroups:historyim:history
Avise-nos se isso não resolver o problema.
Acredito que tenho as permissões corretas. Aqui está uma captura de tela das configurações que tenho em Escopos do Token do Bot.
O que você acha? Infelizmente, isso significa que algo mais está acontecendo.
Já revisei o guia de configuração novamente e criei um comando de barra /hub. A execução de /hub post está funcionando para mim em todos os canais onde adicionei o aplicativo. Estou usando as mesmas permissões mostradas na captura de tela que você enviou.
Você pode confirmar se concluiu a etapa 8 do guia? Essa seção instrui a:
Ir para a página Interatividade e Atalhos, ativar a seção Interatividade alterando-a para Ligado e inserir esta URL em “URL da solicitação”:
<sua-url-do-discourse>/chat-integration/slack/interactive
Também seria bom confirmar se você consegue postar do Discourse para o canal do Slack no qual está tentando executar o comando /hub post.
Avise-nos se ainda não conseguir fazer isso funcionar.
Verifiquei e acredito que sim, segui esse passo.
Aqui está uma captura de tela.
Acho que o erro está relacionado ao Passo 7, embora.
Aqui estão minhas configurações.
É assim que aparece quando tento usar o comando de barra no Slack:
Sim, essa parte está funcionando perfeitamente.
Não, não está funcionando. ![]()
O “URL da solicitação” na seção Editar Comando da sua captura de tela não está usando HTTPS. Talvez esse seja o problema.
Isso resolveu, muito obrigado!!!
Segui as instruções deste guia e minha integração Discourse/Slack está (quase) funcionando. Excelente trabalho com este plugin! Tenho, no entanto, três perguntas/observações.
Não é possível se inscrever em mensagens de uma subcategoria inscrevendo-se na categoria pai
Isso pode ser intencional, mas não foi óbvio à primeira vista. Tenho categorias pai com subcategorias sob elas. Esperava que, ao criar uma regra que filtrasse “Todas as postagens e respostas” para a categoria pai, isso incluísse implicitamente cada uma das subcategorias também. Isso, porém, não funcionou, e precisei criar regras para cada uma das minhas (muitas) subcategorias. Seria um ótimo pedido de melhoria para simplificar a configuração de uma instalação do Discourse com muitas subcategorias sob algumas categorias pai.
Não é possível se inscrever em todas as categorias com uma única regra
Encontrei informações conflitantes sobre isso e assumo que o plugin Slack mais antigo permitia isso, mas não consegui encontrar uma maneira de criar uma única regra que simplesmente se inscrevesse em todas as postagens e respostas de TODAS as categorias do site. Eu esperava fazer tudo isso em uma única regra simples. Mas devido a isso e ao ponto acima, foram necessárias 31 regras separadas em vez de uma única regra apenas para estabelecer uma ponte básica entre toda a minha plataforma Discourse e um canal do Slack. A menos que eu tenha perdido algo, por favor, considere isso também como um pedido de melhoria.
O comando de postagem do Discourse funciona apenas em um canal
Agora, isso provavelmente é culpa minha, mas não consegui descobrir. Passei por todos os tópicos sobre o assunto e adoraria alguma ajuda. Verifiquei e reverifiquei as permissões do meu aplicativo Slack e posso confirmar que ele funciona 100%… em apenas um dos meus canais!
/discourse post 20
Então sei que o token de acesso está configurado e funcionando corretamente. No entanto, em todos os outros canais da minha equipe do Slack, o comando acima simplesmente exibe:
Carregando a transcrição...
e é só isso. Todos esses são canais públicos e tentei todas as combinações possíveis de configurações. O único canal que funciona foi criado hoje, mas quando criei outro novo canal para testar, não funcionou. Nem sei por onde começar a solucionar esse problema. Os únicos registros que conheço no Discourse são:
./launcher logs app
mas não parece haver nada lá. Que configuração posso ter deixado de lado que permitiria a postagem funcionar apenas em um canal, e onde eu deveria procurar para depurar isso?




