Configuração do Slack Bot - URL de Eventos¶
📋 Resumo¶
Este documento explica como configurar a URL de eventos do Slack após o deploy do bot.
🔧 Como o Challenge funciona¶
Quando você configura uma Event Subscription URL no Slack, o Slack envia uma requisição POST de verificação:
{
"type": "url_verification",
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
"token": "Jhj5dZrVaK7ZwHHjRyZWjbDl"
}
Seu servidor deve responder imediatamente com:
{
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P"
}
✅ Implementação Automática¶
O slack_bot.py já está configurado para tratar o challenge automaticamente usando o AsyncSlackRequestHandler do Slack Bolt.
Não é necessário implementar nenhum código adicional! O Bolt já faz isso por você.
🚀 Passos para Configurar a URL no Slack¶
1. Deploy da Aplicação¶
Primeiro, faça o deploy da aplicação no Cloud Run ou servidor:
./deploy.sh
Anote a URL gerada (exemplo): https://seu-servico-abc123.run.app
2. Configure no Slack App¶
Acesse: https://api.slack.com/apps
- Selecione seu App
- Vá em Event Subscriptions (menu lateral)
- Ative "Enable Events" (toggle ON)
- Em Request URL, coloque:
https://seu-servico-abc123.run.app/slack/events - O Slack vai automaticamente enviar o challenge
- ✅ Você verá "Verified" se tudo estiver correto
3. Subscreva aos Eventos¶
Ainda em Event Subscriptions, role até Subscribe to bot events:
Adicione estes eventos:
- message.channels - Mensagens em canais públicos
- message.groups - Mensagens em canais privados
- message.im - Mensagens diretas (DM)
- app_mention - Quando o bot é mencionado com @
Clique em Save Changes no final da página.
4. Reinstale o App (se necessário)¶
Se você vir uma mensagem amarela no topo pedindo para reinstalar: - Clique em reinstall your app - Autorize novamente
🔍 Endpoints Disponíveis¶
| Endpoint | Método | Descrição |
|---|---|---|
/slack/events |
POST | Recebe eventos do Slack (incluindo challenge) |
/health |
GET | Health check da aplicação |
🧪 Testando a URL¶
Teste 1: Health Check¶
curl https://seu-servico-abc123.run.app/health
Deve retornar:
{
"status": "healthy",
"service": "ifriend_busca_produtos_slack"
}
Teste 2: Verificação Manual do Challenge¶
curl -X POST https://seu-servico-abc123.run.app/slack/events \
-H "Content-Type: application/json" \
-d '{"type": "url_verification", "challenge": "test123"}'
Deve retornar:
{
"challenge": "test123"
}
🐛 Troubleshooting¶
Erro: "Your URL didn't respond with the value of the challenge parameter"¶
Causas possíveis: 1. Servidor não está rodando 2. Firewall bloqueando a porta 3. URL incorreta 4. Timeout (Slack espera resposta em 3 segundos)
Solução:
- Verifique os logs: gcloud run logs read --service=seu-servico --limit=50
- Teste o health check primeiro
- Verifique se SLACK_SIGNING_SECRET está configurado
Erro: "Invalid signature"¶
Causa: SLACK_SIGNING_SECRET incorreto ou não configurado
Solução: 1. Vá em Basic Information > App Credentials 2. Copie o Signing Secret 3. Configure no Cloud Run:
gcloud run services update seu-servico \
--update-env-vars SLACK_SIGNING_SECRET=abc123...
📝 Variáveis de Ambiente Necessárias¶
Certifique-se de que estas variáveis estão configuradas no Cloud Run:
SLACK_BOT_TOKEN=xoxb-...
SLACK_SIGNING_SECRET=abc123...
GOOGLE_APPLICATION_CREDENTIALS=/app/service-account-key.json
🔐 Segurança¶
O Signing Secret garante que apenas o Slack pode enviar requisições válidas para seu bot.
O Slack Bolt verifica automaticamente a assinatura de cada requisição usando o SLACK_SIGNING_SECRET.