>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Go

Integração com WhatsApp Sem Gasto de RAM: Um Olhar sobre o Evolution Go

Se você já conectou o WhatsApp a um CRM ou construiu um serviço de notificações, provavelmente conhece o problema de recursos. A maioria das soluções Open Source prontas vem cheia de bibliotecas JavaScript como Baileys ou executa um navegador Puppeteer headless. Algumas centenas de instâncias ativas nesse cenário podem facilmente consumir dezenas de gigabytes de RAM.

Os desenvolvedores da Evolution Foundation encontraram esse problema diretamente. Seu projeto principal, Evolution API, é escrito em Node.js e funciona muito bem para a maioria das tarefas. Mas quando foi necessário escalar, decidiram reescrever o motor central em Go.

Isso deu origem ao evolution-go — um serviço que envolve a biblioteca whatsmeow em uma API REST limpa.

Evolution Foundation

O Que Tem Dentro do Projeto

No núcleo do serviço está o whatsmeow — uma das bibliotecas Go mais rápidas para trabalhar com o protocolo WhatsApp. Por cima fica o framework web Gin, que gerencia requisições HTTP, e o Swagger para documentação.

A ideia principal por trás do serviço é lidar com todo o trabalho de baixo nível de sockets, sessões, autorização por código QR e entrega de mídia por conta própria. Você simplesmente envia uma requisição HTTP POST comum com JSON, e o serviço cuida do resto.

Destaques Arquiteturais

É interessante como os autores abordaram a entrega de eventos recebidos. Frequentemente, esses serviços são limitados apenas a webhooks comuns. Aqui, a escolha é mais ampla:

  • Webhooks para integrações simples
  • WebSockets para interfaces em tempo real
  • RabbitMQ (AMQP) e NATS para filas confiáveis em sistemas distribuídos

Se seu cliente envia ou recebe imagens, mensagens de voz ou documentos, o evolution-go pode salvá-los diretamente no S3 ou MinIO. Todo o histórico de texto e status de conexão são salvos no PostgreSQL via GORM quando necessário.

Como Funciona na Prática

A maneira mais fácil de executar o projeto é via Docker.

git clone https://github.com/evolution-foundation/evolution-go.git
cd evolution-go
make docker-build
make docker-run

Após iniciar a aplicação, você precisa preencher o arquivo de configuração .env. O conjunto mínimo de configurações fica assim:

SERVER_PORT=8080 CLIENT_NAME=my_app GLOBAL_API_KEY=super-secret-key POSTGRES_AUTH_DB=postgresql://postgres:pass@localhost:5432/evogo_auth?sslmode=disable POSTGRES_USERS_DB=postgresql://postgres:pass@localhost:5432/evogo_users?sslmode=disable DATABASE_SAVE_MESSAGES=false

Há um detalhe importante aqui que é fácil tropeçar durante o primeiro lançamento. O projeto usa um sistema de ativação. Logo após a inicialização, todos os endpoints da API retornarão um erro 403.

Para colocar o serviço para funcionar, você precisa abrir o painel de controle integrado no endereço http://localhost:8080/manager/login, inserir seu GLOBAL_API_KEY e passar por um breve processo de registro de instância. Depois disso, o status será salvo no banco de dados e a API ficará disponível.

Enviando Sua Primeira Mensagem

Após a ativação, você pode acessar o Swagger UI no endereço http://localhost:8080/swagger/index.html ou fazer uma requisição pelo terminal.

Primeiro, criamos uma instância e obtemos um código QR para vincular o WhatsApp:

curl -X POST http://localhost:8080/instance/create \
  -H "apikey: super-secret-key" \
  -H "Content-Type: application/json" \
  -d '{"instanceName": "office_number"}'

Capture o código QR via GET /instance/office_number/qrcode, escaneie pelo aplicativo WhatsApp no seu celular e envie um texto de teste:

curl -X POST http://localhost:8080/message/sendText \
  -H "apikey: super-secret-key" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceName": "office_number",
    "number": "79991112233",
    "text": "Привет! Это сообщение отправлено через Evolution Go."
  }'

Onde Isso É Útil

Antes de mais nada, o projeto vai interessar quem está construindo seus próprios sistemas de CRM, serviços de suporte ou sistemas de notificação.

Se você precisa manter dezenas de números do WhatsApp conectados simultaneamente, a opção em Go vai te economizar uma quantidade significativa em servidores comparada às alternativas em Node.js. Ter NATS e RabbitMQ prontos para uso torna a integração em uma arquitetura de microsserviços existente muito mais fácil.

Na desvantagem, há a etapa obrigatória de ativação via gerenciador na primeira inicialização. Se você está planejando um deployment totalmente automatizado para Kubernetes, será necessário criar um script para isso como uma etapa separada.

Evolution Go é uma boa alternativa a serviços de integração pesados. O projeto ainda é jovem, mas tem uma comunidade ativa por trás dele que está desenvolvendo simultaneamente todo o ecossistema da Evolution Foundation.

Vale a pena experimentar se você está procurando um gateway WhatsApp rápido com uma API REST adequada e não quer gastar gigabytes de memória em cada sessão ativa.

Projetos relacionados