🚀 Guia Rápido de Migração¶
Do slack_bot.py para unified_bot.py¶
✅ Passo 1: Instalar Dependências¶
# Dependências obrigatórias (Slack)
pip install slack-bolt slack-sdk
# Dependências opcionais (outras plataformas)
pip install python-telegram-bot # Telegram
pip install twilio # WhatsApp
✅ Passo 2: Configurar Variáveis de Ambiente¶
Mínimo (apenas Slack - compatível com bot antigo):
# .env
SLACK_BOT_TOKEN=xoxb-seu-token
SLACK_SIGNING_SECRET=seu-secret
# Backends (já existentes)
SESSION_BACKEND=redis
MEMORY_BACKEND=cloudsql
REDIS_URL=redis://localhost:6379/0
Múltiplas plataformas:
# .env
# Plataformas ativas
MESSAGING_PLATFORMS=slack,telegram
# Slack
SLACK_BOT_TOKEN=xoxb-...
SLACK_SIGNING_SECRET=...
# Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
# Backends
SESSION_BACKEND=redis
MEMORY_BACKEND=cloudsql
REDIS_URL=redis://localhost:6379/0
✅ Passo 3: Testar Localmente¶
# Rodar o bot unificado
python unified_bot.py
# Em outro terminal, verificar saúde
curl http://localhost:8080/
# Deve retornar algo como:
# {
# "status": "ok",
# "platforms": ["slack"],
# "adapters": {...}
# }
✅ Passo 4: Configurar Webhook¶
Opção A: Manter mesmo webhook (substituição direta)
Se seu webhook atual é https://seu-dominio.com/slack/events:
- O novo bot usa
https://seu-dominio.com/webhook/slack/events - Configure redirect/proxy temporário no nginx/load balancer:
# nginx.conf
location /slack/events {
proxy_pass http://localhost:8080/webhook/slack/events;
}
Opção B: Novo webhook (migração gradual)
- Configure novo webhook no Slack:
https://seu-dominio.com/webhook/slack/events - Mantenha bot antigo rodando em paralelo
- Quando estável, desative bot antigo
✅ Passo 5: Deploy¶
Docker (recomendado):
# Build
docker build -t ifriend-bot .
# Run
docker run -p 8080:8080 \
--env-file .env \
ifriend-bot
Cloud Run:
# Usar cloudbuild.yaml existente, apenas apontar para unified_bot.py
gcloud run deploy ifriend-bot \
--source . \
--set-env-vars SLACK_BOT_TOKEN=... \
--set-env-vars SLACK_SIGNING_SECRET=...
✅ Passo 6: Validar¶
-
Health Check:
curl https://seu-dominio.com/ -
Teste no Slack:
- Mencione o bot em um canal
- Envie DM para o bot
-
Verifique logs
-
Verificar Logs:
# Deve aparecer: # ✅ Plataformas registradas: slack # ✅ Slack Bot User ID: U... # 📨 Mensagem recebida de slack: ... # ✅ Resposta enviada para U... via slack
🔄 Rollback (se necessário)¶
Se algo der errado:
-
Desative novo bot:
# Cloud Run gcloud run services update ifriend-bot --max-instances=0 -
Reative bot antigo:
python slack_bot.py -
Restaure webhook original no Slack
🎯 Checklist de Migração¶
- [ ] Dependências instaladas (
slack-bolt, etc.) - [ ] Env vars configuradas (
.env) - [ ] Bot roda localmente (
python unified_bot.py) - [ ] Health check retorna OK (
curl localhost:8080) - [ ] Webhook configurado no Slack
- [ ] Teste de menção funciona
- [ ] Teste de DM funciona
- [ ] Logs aparecem corretamente
- [ ] Deploy em produção
- [ ] Monitoramento ativo
- [ ] Bot antigo desativado (após validação)
💡 Dicas¶
Migração Zero-Downtime¶
- Dia 1: Deploy
unified_bot.pyem novo endpoint - Dia 2-7: Rode ambos bots em paralelo, monitore
- Dia 8: Migre 10% do tráfego (via load balancer)
- Dia 9-14: Migre 100% gradualmente
- Dia 15: Desative
slack_bot.py
Debugging¶
# Logs detalhados
export LOG_LEVEL=DEBUG
python unified_bot.py
# Testar webhook manualmente
curl -X POST http://localhost:8080/webhook/slack/events \
-H "Content-Type: application/json" \
-d @test_slack_event.json
Performance¶
A nova arquitetura tem mesma performance que a antiga: - Overhead de abstração: <1ms (negligível) - Latência total: dominada por rede e processamento do agente
🆘 Problemas Comuns¶
Bot não responde¶
Causa: Webhook incorreto ou env vars erradas
Solução:
# Verificar
echo $SLACK_BOT_TOKEN
curl http://localhost:8080/
# Logs
# Deve ter: "✅ Plataformas registradas: slack"
"Platform not configured"¶
Causa: MESSAGING_PLATFORMS incorreto ou env vars faltando
Solução:
# Remover MESSAGING_PLATFORMS para auto-detect
unset MESSAGING_PLATFORMS
# Ou definir explicitamente
export MESSAGING_PLATFORMS=slack
Mensagens duplicadas¶
Causa: Ambos bots rodando no mesmo webhook
Solução: - Desative um dos bots - Use webhooks diferentes temporariamente
📞 Suporte¶
- Documentação: MESSAGING_ARCHITECTURE.md
- Exemplos: MESSAGING_EXAMPLES.md
- Issues: Abra issue no repositório
Tempo estimado de migração: 30-60 minutos
Complexidade: Baixa (compatibilidade mantida)
Rollback: Fácil (basta voltar ao slack_bot.py)