WhatsApp Adapter - Evolution API Migration¶
📅 Data¶
Janeiro 2026
🎯 Mudança Principal¶
Migração do adaptador WhatsApp de Twilio para Evolution API (self-hosted).
✨ Benefícios¶
1. Custo Zero¶
- ❌ Twilio: ~$0.005 por mensagem
- ✅ Evolution API: Gratuito (self-hosted)
2. Controle Total¶
- Self-hosted: você controla os dados
- Sem dependência de serviços terceiros
- Sem limites de taxa artificiais
3. Recursos Avançados¶
- ✅ Edição de mensagens (Evolution API)
- ✅ Deleção de mensagens (Evolution API)
- ✅ Indicador de presença/digitação (Evolution API)
- ✅ Suporte a grupos
- ❌ Limitado no Twilio
4. Facilidade de Configuração¶
- Docker one-liner para testar
- Interface web de gerenciamento
- Documentação completa em português
🔄 O Que Mudou¶
Configuração (.env)¶
Antes (Twilio):
WHATSAPP_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
WHATSAPP_AUTH_TOKEN=your-twilio-auth-token
WHATSAPP_NUMBER=+5511999999999
Depois (Evolution API):
WHATSAPP_BASE_URL=http://localhost:8080
WHATSAPP_API_KEY=sua-chave-secreta
WHATSAPP_INSTANCE_NAME=ifriend-bot
Dependências¶
Antes:
twilio>=8.11.0
Depois:
# httpx já incluído em requirements.txt
# Nenhuma dependência adicional necessária
Webhook Format¶
Antes (Twilio):
# Form-encoded data
{
"From": "whatsapp:+5511999999999",
"To": "whatsapp:+551188888888",
"Body": "texto da mensagem",
"MessageSid": "SM123..."
}
Depois (Evolution API):
{
"event": "messages.upsert",
"instance": "ifriend-bot",
"data": {
"key": {
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false,
"id": "message_id"
},
"message": {
"conversation": "texto da mensagem"
},
"messageType": "conversation",
"messageTimestamp": 1234567890,
"pushName": "Nome do usuário"
}
}
📝 Implementação¶
Arquivos Modificados¶
- messaging/adapters/whatsapp_adapter.py
- Substituído cliente Twilio por httpx
- Implementado autenticação via API key
- Parse de webhook Evolution API
-
Adicionado suporte a edição/deleção de mensagens
-
messaging/README.md
- Atualizado status: ⚠️ Exemplo → ✅ Produção
- Alterado dependência: twilio → httpx
-
Adicionado link para guia de configuração
-
.env.example
- Removido vars Twilio
- Adicionado vars Evolution API
-
Comentário com link para documentação
-
requirements-messaging.txt
- Removido twilio>=8.11.0
- Adicionado comentário indicando httpx
Arquivos Criados¶
- docs/guides/WHATSAPP_EVOLUTION_API_SETUP.md
- Guia completo de instalação
- Configuração Docker/Docker Compose
- Criação de instância
- Configuração de webhooks
- Troubleshooting
-
Exemplos de uso avançado
-
tests/test_whatsapp_evolution.py
- Script de teste de conexão
- Teste de envio de mensagem
- Validação de webhook format
🚀 Como Migrar¶
Passo 1: Instalar Evolution API¶
docker run -d \
--name evolution_api \
-p 8080:8080 \
-e AUTHENTICATION_API_KEY=minha-chave-secreta \
atendai/evolution-api:latest
Passo 2: Criar Instância¶
curl -X POST http://localhost:8080/instance/create \
-H "apikey: minha-chave-secreta" \
-H "Content-Type: application/json" \
-d '{
"instanceName": "ifriend-bot",
"qrcode": true,
"webhook": {
"url": "https://seu-dominio.com/whatsapp/webhook",
"enabled": true,
"events": ["messages.upsert"]
}
}'
Passo 3: Conectar WhatsApp¶
# Obter QR Code
curl http://localhost:8080/instance/connect/ifriend-bot \
-H "apikey: minha-chave-secreta"
# Escanear com WhatsApp no celular
Passo 4: Atualizar .env¶
# Remover (comentar) vars Twilio
# WHATSAPP_ACCOUNT_SID=...
# WHATSAPP_AUTH_TOKEN=...
# WHATSAPP_NUMBER=...
# Adicionar vars Evolution API
WHATSAPP_BASE_URL=http://localhost:8080
WHATSAPP_API_KEY=minha-chave-secreta
WHATSAPP_INSTANCE_NAME=ifriend-bot
Passo 5: Testar¶
# Teste de conexão
python tests/test_whatsapp_evolution.py
# Ou enviar via curl
curl -X POST http://localhost:8080/message/sendText/ifriend-bot \
-H "apikey: minha-chave-secreta" \
-H "Content-Type: application/json" \
-d '{
"number": "5511999999999",
"text": "Teste de migração concluído!"
}'
🔍 Compatibilidade¶
Mantido (100% compatível)¶
- ✅ Interface
MessagingAdapter - ✅ Métodos
send_message(),parse_webhook_request() - ✅ Formato markdown
- ✅ Path webhook
/whatsapp/webhook - ✅ Platform name
whatsapp
Novo (Recursos adicionais)¶
- 🆕
send_typing_indicator()- funcional - 🆕
update_message()- funcional - 🆕
delete_message()- funcional - 🆕 Suporte a mensagens de grupo
- 🆕 Metadados expandidos (pushName, timestamp, etc)
Removido¶
- ❌ Dependência de conta Twilio
- ❌ Limite de taxa Twilio
- ❌ Custos por mensagem
📚 Recursos¶
- Guia de Configuração Completo
- Evolution API Docs
- Evolution API GitHub
- Postman Collection
- Comunidade WhatsApp
✅ Checklist de Migração¶
- [ ] Evolution API instalado e rodando
- [ ] Instância criada e conectada via QR Code
- [ ] Webhook configurado e testado
- [ ] .env atualizado com novas variáveis
- [ ] Dependência twilio removida (se não usar para outros fins)
- [ ] Teste de envio de mensagem bem-sucedido
- [ ] Teste de recepção via webhook bem-sucedido
- [ ] Monitoramento configurado (logs, status)
- [ ] Backup de configuração anterior (se necessário rollback)
- [ ] Documentação interna atualizada
🤝 Suporte¶
- Issues: GitHub Issues do projeto
- Dúvidas: Ver WHATSAPP_EVOLUTION_API_SETUP.md
- Evolution API: Discord ou WhatsApp Community
Migração completa! WhatsApp agora roda com custo zero e controle total. 🎉