Integrazione WhatsApp Senza Fame di RAM: Uno Sguardo a Evolution Go
Se hai mai collegato WhatsApp a un CRM o creato un servizio di notifica, probabilmente conosci il problema delle risorse. La maggior parte delle soluzioni Open Source pronte all'uso sono piene di librerie JavaScript come Baileys o eseguono un browser Puppeteer headless. In questo scenario, qualche centinaio di istanze attive può facilmente consumare decine di gigabyte di RAM.
Gli sviluppatori di Evolution Foundation si sono imbattuti direttamente in questo problema. Il loro progetto principale, Evolution API, è scritto in Node.js e funziona ottimamente per la maggior parte dei compiti. Tuttavia, quando è stato necessario scalare, hanno deciso di riscrivere il motore principale in Go.
Questo ha dato vita a evolution-go — un servizio che racchiude la libreria whatsmeow in una REST API pulita.

Cosa c'è Dentro il Progetto
Al centro del servizio c'è whatsmeow — una delle librerie Go più veloci per lavorare con il protocollo WhatsApp. Sopra troviamo il framework web Gin, che gestisce le richieste HTTP, e Swagger per la documentazione.
L'idea principale dietro il servizio è gestire tutto il lavoro di basso livello sui socket, le sessioni, l'autorizzazione tramite QR code e la consegna dei media autonomamente. Devi solo inviare una normale richiesta HTTP POST con JSON, e il servizio si occupa del resto.
Caratteristiche Architetturali
È interessante come gli autori abbiano affrontato la distribuzione degli eventi in entrata. Spesso, questi servizi sono limitati ai soli webhook tradizionali. Qui, la scelta è più ampia:
- Webhook per integrazioni semplici
- WebSocket per interfacce in tempo reale
- RabbitMQ (AMQP) e NATS per code affidabili nei sistemi distribuiti
Se il tuo client invia o riceve immagini, messaggi vocali o documenti, evolution-go può scaricarli direttamente su S3 o MinIO. Tutta la cronologia testuale e gli stati di connessione vengono salvati su PostgreSQL tramite GORM quando necessario.
Come Funziona in Pratica
Il modo più semplice per eseguire il progetto è tramite Docker.
git clone https://github.com/evolution-foundation/evolution-go.git
cd evolution-go
make docker-build
make docker-run
Dopo aver avviato l'applicazione, devi compilare il file di configurazione .env. L'insieme minimo di impostazioni si presenta così:
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
C'è un dettaglio importante qui che è facile incontrare al primo avvio. Il progetto utilizza un sistema di attivazione. Subito dopo l'avvio, tutti gli endpoint API restituiranno un errore 403.
Per far funzionare il servizio, devi aprire il pannello di controllo integrato all'indirizzo http://localhost:8080/manager/login, inserire il tuo GLOBAL_API_KEY e completare un breve processo di registrazione dell'istanza. Dopo di che, lo stato verrà salvato nel database e l'API diventerà disponibile.
Inviare il Tuo Primo Messaggio
Dopo l'attivazione, puoi andare su Swagger UI all'indirizzo http://localhost:8080/swagger/index.html o fare una richiesta dal terminale.
Per prima cosa, creiamo un'istanza e otteniamo un codice QR per collegare WhatsApp:
curl -X POST http://localhost:8080/instance/create \
-H "apikey: super-secret-key" \
-H "Content-Type: application/json" \
-d '{"instanceName": "office_number"}'
Acquisisci il QR code tramite GET /instance/office_number/qrcode, scansionalo attraverso l'app WhatsApp sul tuo telefono e invia un messaggio di test:
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."
}'
Dove Può Tornare Utile
Prima di tutto, il progetto interesserà chi costruisce sistemi CRM personalizzati, servizi di supporto o sistemi di notifica.
Se hai bisogno di mantenere collegati contemporaneamente decine di numeri WhatsApp, l'opzione Go ti farà risparmiare una quantità significativa sui server rispetto alle alternative Node.js. Avere NATS e RabbitMQ out of the box rende l'integrazione in un'architettura a microservizi esistente molto più semplice.
Come svantaggio, c'è il passaggio obbligatorio di attivazione tramite il manager al primo avvio. Se stai pianificando una distribuzione completamente automatizzata su Kubernetes, dovrai scriptare questo come un passaggio separato.
Evolution Go è una buona alternativa ai servizi di integrazione pesanti. Il progetto è ancora giovane, ma ha una comunità attiva alle spalle che sta sviluppando simultaneamente l'intero ecosistema Evolution Foundation.
Vale la pena provarlo se stai cercando un gateway WhatsApp veloce con una REST API corretta e non vuoi spendere gigabyte di memoria per ogni sessione attiva.
Progetti correlati