Skip to content

🚀 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:

  1. O novo bot usa https://seu-dominio.com/webhook/slack/events
  2. 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)

  1. Configure novo webhook no Slack: https://seu-dominio.com/webhook/slack/events
  2. Mantenha bot antigo rodando em paralelo
  3. 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

  1. Health Check:

    curl https://seu-dominio.com/
    

  2. Teste no Slack:

  3. Mencione o bot em um canal
  4. Envie DM para o bot
  5. Verifique logs

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

  1. Desative novo bot:

    # Cloud Run
    gcloud run services update ifriend-bot --max-instances=0
    

  2. Reative bot antigo:

    python slack_bot.py
    

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

  1. Dia 1: Deploy unified_bot.py em novo endpoint
  2. Dia 2-7: Rode ambos bots em paralelo, monitore
  3. Dia 8: Migre 10% do tráfego (via load balancer)
  4. Dia 9-14: Migre 100% gradualmente
  5. 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


Tempo estimado de migração: 30-60 minutos

Complexidade: Baixa (compatibilidade mantida)

Rollback: Fácil (basta voltar ao slack_bot.py)