💬 Troca do Engine Baileys
1. Problema de Renderização no WhatsApp Web
As mensagens ricas (contendo botões interativos, listas de seleção e carrosséis) não são nativamente exibidas no WhatsApp Web utilizando a biblioteca oficial @whiskeysockets/baileys. O WhatsApp Web exige nós binários adicionais de metadados de negócios injetados no stanza que a biblioteca oficial descarta.
2. A Solução: InfiniteAPI Engine Swap com Fallback
Para solucionar essa limitação e habilitar botões interativos perfeitamente no celular e na web, foi desenhada a integração do fork InfiniteAPI (baileys@github:rsalcara/InfiniteAPI), mantendo suporte e chaveamento fácil para o Baileys oficial em caso de depuração.
Arquitetura de Abstração:
A pasta backend/src/modules/whatsapp/engine/ expõe uma interface unificada que gerencia dinamicamente o chaveamento através da variável de ambiente BAILEYS_ENGINE:
- infinite.ts: Re-exporta a biblioteca
baileys (InfiniteAPI), que gerencia nativamente botões, listas e carrosséis dentro de sock.sendMessage().
- official.ts: Re-exporta a biblioteca
@whiskeysockets/baileys estável do ecossistema.
- index.ts: Carrega o adaptador correspondente à variável configurada.
3. Configuração no Arquivo .env
Para alternar entre os motores de conexão do WhatsApp, basta editar o parâmetro no arquivo de configuração do backend:
4. Tipos de Botões Suportados pelo InfiniteAPI
O motor InfiniteAPI simplifica o envio de botões, tratando toda a montagem estrutural em baixo nível. O desenvolvedor passa os payloads no seguinte formato:
A troca de engine reinicia o processo do backend de forma segura e reconecta instantaneamente todas as sessões em cerca de 5 a 10 segundos, preservando o estado de autenticação guardado em disco.