WhatsApp-integratie zonder RAM-honger: een blik op Evolution Go
Als je ooit WhatsApp hebt gekoppeld aan een CRM of een notificatieservice hebt gebouwd, ben je waarschijnlijk bekend met het resourceprobleem. De meeste kant-en-klare Open Source-oplossingen zijn volgepropt met JavaScript-bibliotheken zoals Baileys of draaien een headless Puppeteer-browser. Een paar honderd actieve instanties kunnen in dit scenario gemakkelijk tientallen gigabytes aan RAM verbruiken.
Evolution Foundation-ontwikkelaars liepen hier direct tegenaan. Hun hoofdproject, Evolution API, is geschreven in Node.js en werkt prima voor de meeste taken. Maar toen opschaling nodig was, besloten ze de core-engine te herschrijven in Go.
Dat gaf geboorte aan evolution-go — een service die de whatsmeow-bibliotheek wrapt in een eenvoudige REST API.

Wat zit er in het project
In de kern van de service zit whatsmeow — een van de snelste Go-bibliotheken voor het werken met het WhatsApp-protocol. Er bovenop zit het Gin-webframework, dat HTTP-verzoeken afhandelt, en Swagger voor documentatie.
Het hoofdidee achter de service is om al het low-level socket-werk, sessies, QR-code-autorisatie en media-aflevering zelf af te handelen. Je stuurt gewoon een gewoon HTTP POST-verzoek met JSON, en de service regelt de rest.
Architecturale hoogtepunten
Het is interessant hoe de auteurs omgingen met inkomende event-aflevering. Vaak zijn dergelijke services beperkt tot alleen reguliere webhooks. Hier is de keuze breder:
- Webhooks voor eenvoudige integraties
- WebSockets voor real-time interfaces
- RabbitMQ (AMQP) en NATS voor betrouwbare queues in gedistribueerde systemen
Als je client afbeeldingen, spraakberichten of documenten verstuurt of ontvangt, kan evolution-go deze rechtstreeks dumpen naar S3 of MinIO. Alle texthistorie en verbindingsstatussen worden indien nodig opgeslagen in PostgreSQL via GORM.
Hoe het in de praktijk werkt
De gemakkelijkste manier om het project te draaien is via Docker.
git clone https://github.com/evolution-foundation/evolution-go.git
cd evolution-go
make docker-build
make docker-run
Na het starten van de applicatie moet je het configuratiebestand .env invullen. De minimale set aan instellingen ziet er zo uit:
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
Er is een belangrijk detail waar je tijdens de eerste start gemakkelijk over kunt struikelen. Het project gebruikt een activatiesysteem. Direct na opstarten geven alle API-endpoints een 403-fout terug.
Om de service werkend te krijgen, moet je het ingebouwde control panel openen op adres http://localhost:8080/manager/login, je GLOBAL_API_KEY invoeren en een kort instantie-registratieproces doorlopen. Daarna wordt de status opgeslagen in de database en wordt de API beschikbaar.
Je eerste bericht versturen
Na activering kun je naar Swagger UI gaan op adres http://localhost:8080/swagger/index.html of een verzoek maken vanuit de terminal.
Eerst maken we een instantie aan en krijgen we een QR-code voor het koppelen van WhatsApp:
curl -X POST http://localhost:8080/instance/create \
-H "apikey: super-secret-key" \
-H "Content-Type: application/json" \
-d '{"instanceName": "office_number"}'
Pak de QR-code via GET /instance/office_number/qrcode, scan deze via de WhatsApp-app op je telefoon en verstuur een testtekst:
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."
}'
Waar dit van pas komt
Allereerst zal het project degenen interesseren die hun eigen CRM-systemen, supportservices of notificatiesystemen bouwen.
Als je tientallen WhatsApp-nummers tegelijkertijd verbonden moet houden, zal de Go-optie je een aanzienlijk bedrag besparen op servers vergeleken met Node.js-alternatieven. Het standaard hebben van NATS en RabbitMQ maakt integratie in een bestaande microservices-architectuur een stuk eenvoudiger.
Aan de andere kant is er de verplichte activatiestap via de manager bij de eerste opstart. Als je een volledig geautomatiseerde deployment naar Kubernetes plant, moet je dit als een aparte stap scripten.
Evolution Go is een goed alternatief voor zware integratieservices. Het project is nog jong, maar het heeft een actieve community achter zich die tegelijkertijd het hele Evolution Foundation-ecosysteem ontwikkelt.
De moeite waard om te proberen als je op zoek bent naar een snelle WhatsApp-gateway met een goede REST API en geen gigabytes aan geheugen wilt besteden aan elke actieve sessie.
Gerelateerde projecten