>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Go

Intégration WhatsApp sans faim de RAM : Un regard sur Evolution Go

Si vous avez déjà lié WhatsApp à un CRM ou construit un service de notification, vous connaissez probablement le problème de ressources. La plupart des solutions Open Source prêtes à l'emploi sont bourrées de bibliothèques JavaScript comme Baileys ou exécutent un navigateur Puppeteer headless. Quelques centaines d'instances actives dans ce scénario peuvent facilement consommer des dizaines de gigaoctets de RAM.

Les développeurs d'Evolution Foundation ont rencontré directement ce problème. Leur projet principal, Evolution API, est écrit en Node.js et fonctionne très bien pour la plupart des tâches. Mais quand la mise à l'échelle était nécessaire, ils ont décidé de réécrire le moteur central en Go.

Cela a donné naissance à evolution-go — un service qui enveloppe la bibliothèque whatsmeow dans une API REST propre.

Evolution Foundation

Ce qu'il y a à l'intérieur du projet

Au cœur du service se trouve whatsmeow — l'une des bibliothèques Go les plus rapides pour travailler avec le protocole WhatsApp. Au-dessus se trouve le framework web Gin, qui gère les requêtes HTTP, et Swagger pour la documentation.

L'idée principale derrière le service est de gérer lui-même tout le travail de socket de bas niveau, les sessions, l'autorisation par code QR et la livraison de médias. Vous envoyez simplement une requête HTTP POST régulière avec du JSON, et le service s'occupe du reste.

Points forts architecturaux

C'est intéressant de voir comment les auteurs ont abordé la livraison des événements entrants. Souvent, de tels services sont limités aux webhooks réguliers uniquement. Ici, le choix est plus large :

  • Webhooks pour les intégrations simples
  • WebSockets pour les interfaces en temps réel
  • RabbitMQ (AMQP) et NATS pour les files d'attente fiables dans les systèmes distribués

Si votre client envoie ou reçoit des images, des messages vocaux ou des documents, evolution-go peut les déposer directement sur S3 ou MinIO. Tout l'historique textuel et les statuts de connexion sont sauvegardés dans PostgreSQL via GORM si nécessaire.

Comment ça fonctionne en pratique

Le moyen le plus simple d'exécuter le projet est via Docker.

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

Après avoir démarré l'application, vous devez remplir le fichier de configuration .env. L'ensemble minimal de paramètres ressemble à ceci :

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

Il y a un détail important ici qui est facile à louper lors du premier lancement. Le projet utilise un système d'activation. Juste après le démarrage, tous les points de terminaison API retourneront une erreur 403.

Pour faire fonctionner le service, vous devez ouvrir le panneau de contrôle intégré à l'adresse http://localhost:8080/manager/login, entrer votre GLOBAL_API_KEY, et suivre un court processus d'enregistrement d'instance. Ensuite, le statut sera sauvegardé dans la base de données et l'API deviendra disponible.

Envoyer votre premier message

Après l'activation, vous pouvez aller à l'interface Swagger à l'adresse http://localhost:8080/swagger/index.html ou faire une requête depuis le terminal.

D'abord, nous créons une instance et obtenons un code QR pour lier WhatsApp :

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

Récupérez le code QR via GET /instance/office_number/qrcode, scannez-le via l'application WhatsApp sur votre téléphone, et envoyez un texte de 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."
  }'

Où cela sera utile

Avant tout, le projet intéressera ceux qui construisent leurs propres systèmes CRM, services de support ou systèmes de notification.

Si vous avez besoin de maintenir des dizaines de numéros WhatsApp connectés simultanément, l'option Go vous fera économiser une quantité significative sur les serveurs par rapport aux alternatives Node.js. Avoir NATS et RabbitMQ prêts à l'emploi facilite considérablement l'intégration dans une architecture de microservices existante.

Du côté négatif, il y a l'étape d'activation obligatoire via le gestionnaire lors du premier démarrage. Si vous planifiez un déploiement entièrement automatisé vers Kubernetes, vous devrez scripter cela comme une étape séparée.

Evolution Go est une bonne alternative aux services d'intégration lourds. Le projet est encore jeune, mais il a une communauté active derrière lui qui développe simultanément tout l'écosystème Evolution Foundation.

Ça vaut le coup d'essayer si vous cherchez une passerelle WhatsApp rapide avec une API REST appropriée et que vous ne voulez pas dépenser des gigaoctets de mémoire pour chaque session active.

Projets similaires