Configurar notificações do Slack usando o plugin discourse-chat-integration

Infelizmente, nenhuma dessas coisas é possível no momento.

2 curtidas

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.

1 curtida

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.

1 curtida

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 username
  • chat integration slack access token
  • chat 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.

2 curtidas

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

  1. Permissões do bot: A permissão chat:write.customize precisa ser adicionada para que o comando de barra /discourse funcione. Também adicionei chat:write.
  2. Você precisará criar o canal no Slack. Em seguida, execute os comandos /discourse a partir do canal ou configure uma regra no Discourse.
  3. 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".
  4. 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?”
  5. Então, consegui executar uma mensagem de teste com sucesso nas configurações dos Plugins :rocket:

Nota: Na configuração do aplicativo Slack, defini o nome do aplicativo como @discourse

5 curtidas

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!

4 curtidas

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.

1 curtida

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".

1 curtida

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.

1 curtida

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…

3 curtidas

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! :heart_eyes:

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.

3 curtidas

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:write
  • chat:write.customize
  • users:read
  • channels:history
  • groups:history
  • im:history

Avise-nos se isso não resolver o problema.

1 curtida

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.

2 curtidas

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.

1 curtida

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. :slightly_smiling_face:

1 curtida

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.

2 curtidas

Isso resolveu, muito obrigado!!!

1 curtida

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?