>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Go

Integración con WhatsApp Sin Hambre de RAM: Un Vistazo a Evolution Go

Si alguna vez has vinculado WhatsApp a un CRM o has construido un servicio de notificaciones, probablemente conoces el problema de los recursos. La mayoría de las soluciones Open Source listas para usar están repletas de librerías JavaScript como Baileys o ejecutan un navegador Puppeteer sin cabeza. Un par de cientos de instancias activas en este escenario pueden consumir fácilmente decenas de gigabytes de RAM.

Los desarrolladores de Evolution Foundation se encontraron directamente con esto. Su proyecto principal, Evolution API, está escrito en Node.js y funciona muy bien para la mayoría de las tareas. Pero cuando se necesitó escalar, decidieron reescribir el motor central en Go.

Eso dio origen a evolution-go — un servicio que envuelve la librería whatsmeow en una API REST limpia.

Evolution Foundation

Qué Hay Dentro del Proyecto

En el núcleo del servicio está whatsmeow — una de las librerías de Go más rápidas para trabajar con el protocolo de WhatsApp. Encima está el framework web Gin, que maneja las solicitudes HTTP, y Swagger para la documentación.

La idea principal detrás del servicio es manejar todo el trabajo de bajo nivel de sockets, sesiones, autorización por código QR y entrega de medios por su cuenta. Solo necesitas enviar una solicitud HTTP POST regular con JSON, y el servicio se encarga del resto.

Características Arquitectónicas

Es interesante cómo los autores abordaron la entrega de eventos entrantes. A menudo, tales servicios están limitados solo a webhooks regulares. Aquí, la elección es más amplia:

  • Webhooks para integraciones simples
  • WebSockets para interfaces en tiempo real
  • RabbitMQ (AMQP) y NATS para colas confiables en sistemas distribuidos

Si tu cliente envía o recibe imágenes, mensajes de voz o documentos, evolution-go puede volcarlos directamente a S3 o MinIO. Todo el historial de texto y los estados de conexión se guardan en PostgreSQL a través de GORM cuando es necesario.

Cómo Funciona en la Práctica

La forma más fácil de ejecutar el proyecto es a través de Docker.

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

Después de iniciar la aplicación, necesitas completar el archivo de configuración .env. El conjunto mínimo de ajustes se ve así:

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

Hay un detalle importante aquí que es fácil de pasar por alto durante el primer inicio. El proyecto utiliza un sistema de activación. Justo después del arranque, todos los endpoints de la API devolverán un error 403.

Para que el servicio funcione, necesitas abrir el panel de control integrado en la dirección http://localhost:8080/manager/login, ingresar tu GLOBAL_API_KEY, y pasar por un corto proceso de registro de instancia. Después de eso, el estado se guardará en la base de datos y la API estará disponible.

Enviar Tu Primer Mensaje

Después de la activación, puedes ir a Swagger UI en la dirección http://localhost:8080/swagger/index.html o hacer una solicitud desde la terminal.

Primero, creamos una instancia y obtenemos un código QR para vincular WhatsApp:

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

Captura el código QR a través de GET /instance/office_number/qrcode, escanéalo a través de la aplicación de WhatsApp en tu teléfono, y envía un texto de prueba:

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."
  }'

Dónde Resulta Útil

En primer lugar, el proyecto interesará a quienes estén construyendo sus propios sistemas CRM, servicios de soporte o sistemas de notificaciones.

Si necesitas mantener docenas de números de WhatsApp conectados simultáneamente, la opción en Go te ahorrará una cantidad significativa en servidores en comparación con las alternativas en Node.js. Tener NATS y RabbitMQ listos para usar hace que la integración en una arquitectura de microservicios existente sea mucho más fácil.

En el lado negativo, está el paso obligatorio de activación a través del gestor en el primer inicio. Si estás planeando un despliegue completamente automatizado en Kubernetes, necesitarás programar esto como un paso separado.

Evolution Go es una buena alternativa a los servicios de integración pesados. El proyecto aún es joven, pero tiene una comunidad activa detrás que está desarrollando simultáneamente todo el ecosistema de Evolution Foundation.

Vale la pena probarlo si buscas una pasarela rápida de WhatsApp con una API REST adecuada y no quieres gastar gigabytes de memoria en cada sesión activa.

Proyectos relacionados