Estamos desarrollando un SaaS de recordatorios de citas mediante WhatsApp, utilizando
Node.js y la librería @whiskeysockets/baileys. La conexión se establece a través de WhatsApp Web, vinculando el número con un código QR, y la sesión se guarda para mantener la conexión y reconectar posteriormente.
Actualmente, enfrentamos un problema intermitente relacionado con la gestión de sesiones, el cifrado y las notificaciones. Hemos observado dos escenarios principales:
Escenario 1: Mensajes enviados desde Cliente 1 a Cliente 2 a través de Baileys/WhatsApp Web. Los mensajes suelen llegar correctamente, pero ocasionalmente el teléfono receptor no muestra la notificación o el sonido esperado. En los logs, aparece el evento 'Closing open session in favor of incoming prekey bundle'.
Escenario 2: Comportamiento similar observado sin Baileys, enviando directamente desde un Teléfono físico 1 a un Teléfono físico 2. En algunas ocasiones, la sesión parece quedar en un estado incorrecto, y el teléfono deja de recibir notificaciones normalmente. La funcionalidad se restablece después de interactuar nuevamente con WhatsApp.
Debido a esto, no estamos seguros si el problema reside específicamente en Baileys o si está relacionado con aspectos más profundos de las sesiones criptográficas, el protocolo Signal, las prekeys, los dispositivos vinculados o algún comportamiento intrínseco de WhatsApp.
Buscamos un experto con experiencia comprobada en Baileys, WhatsApp Web, Signal Protocol y sesiones multidispositivo para ayudarnos a:
- Analizar a fondo las sesiones Signal y las prekeys.
- Revisar la persistencia de claves implementada.
- Evaluar el uso de useMultiFileAuthState y makeCacheableSignalKeyStore.
- Investigar las reconexiones y la posible existencia de sockets duplicados.
- Revisar la implementación de getMessage.
- Determinar el significado exacto y las implicaciones del evento 'Closing open session...'.
- Identificar la causa raíz del problema y proponer una solución para lograr una implementación estable y confiable para producción.
Estamos preparados para proporcionar el código fuente de nuestra aplicación, los logs relevantes y un entorno de pruebas para facilitar el diagnóstico y la resolución.
Duración del proyecto No definido