CHATCLI_SLACK_ADDR). Toda requisição é conferida contra o signing secret do app.
Configuração
1
Crie o app do Slack
Nas configurações de apps do seu workspace, crie um app e dê ao bot os escopos que ele precisa:
chat:write para responder, files:read para baixar arquivos de voz e imagem, files:write para respostas com imagem e os escopos de histórico das conversas que ele deve ler (por exemplo channels:history e im:history). Instale o app no workspace e copie o Bot User OAuth Token (xoxb-…) e, em Basic Information, o Signing Secret.2
Configure o ChatCLI
3
Inicie o gateway
4
Aponte o Slack para o endpoint
Ligue Event Subscriptions e defina a Request URL como o endereço HTTPS público que chega em
CHATCLI_SLACK_ADDR e CHATCLI_SLACK_PATH, por exemplo https://bot.example.com/slack/events. O Slack verifica a URL na hora, então o gateway já precisa estar rodando. Inscreva o bot nos eventos message das conversas que ele deve atender (por exemplo message.channels e message.im), salve e convide o bot para um canal ou mande uma mensagem direta para ele.Variáveis de ambiente
Quem alcança o bot
Cada requisição precisa trazer umX-Slack-Signature válido (HMAC-SHA256 da requisição com o signing secret) e um timestamp de no máximo cinco minutos; o resto recebe 401. Mensagens postadas por bots são ignoradas, então o gateway nunca responde a si mesmo.
Mensagens
- Texto: eventos
message. Menções chegam do mesmo jeito, já que uma menção é uma mensagem; eventosapp_mentionseparados não são usados. - Voz: o primeiro arquivo de áudio da mensagem é baixado com o token do bot e transcrito antes de o agente rodar.
- Imagens: o primeiro arquivo de imagem da mensagem chega ao modelo.
- Respostas com imagem são enviadas pela API de upload de arquivos do Slack, com o texto da resposta como comentário; em qualquer falha o texto é enviado sozinho.
- As respostas são postadas na conversa, não numa thread.
- Uma mensagem que traz só outros tipos de arquivo (um PDF, um zip) é ignorada.
Limites
- Uma resposta é cortada em 3500 caracteres e termina com
…. - Os erros do Slack (por exemplo
not_in_channel, quando o bot não foi convidado) ficam registrados como envios com falha em~/.chatcli/gateway.log. - O Slack reenvia um evento cujo recebimento não viu confirmado a tempo; um evento reenviado é processado de novo.
Solução de problemas
O Slack diz que a Request URL não respondeu
O Slack diz que a Request URL não respondeu
O gateway precisa estar rodando e alcançável na URL, e
CHATCLI_SLACK_SIGNING_SECRET precisa estar definido: sem ele a requisição de verificação é recusada com 401. Procure em ~/.chatcli/gateway.log o aviso sobre o secret ausente.O bot não vê nada num canal
O bot não vê nada num canal
Convide o bot para o canal e confira se o app está inscrito no evento
message daquele tipo de conversa e tem o escopo de histórico correspondente.As respostas com imagem chegam só como texto
As respostas com imagem chegam só como texto
O upload precisa do escopo
files:write; o gateway volta para texto quando o upload falha.Veja também
Chat gateway
Como as mensagens rodam, voz, imagens, continuidade e os outros canais.
Mensagens proativas
Deixe o agente postar no Slack por conta própria com
@send.