@unifydesk/extension-whatsapp
Conector de WhatsApp multi-dispositivo via Baileys, sobre o SDK
@unifydesk/server atual. Um processo hospeda várias conexões (um número por
conexão) e emparelha com o painel pela tela da extension.
Como funciona
A conexão conecta ao WhatsApp e empurra o QR ao vivo para a tela da
extension (app.emit("qr", …)); o operador escaneia e a sessão fica guardada.
Mensagens de entrada viram mensagens de ticket (app.ingest); a resposta do
atendente sai pelo mesmo número.
Suporta texto e mídia (imagem, áudio, documento, sticker, com transcode de áudio), grupos, reações, edições, remoções, recibos de leitura e presença/digitação, além de sincronização de histórico e de contatos e resolução de nome. O id externo é mapeado para respostas citadas, e cada conexão tem seu roteamento de fila.
Em badSession 500 a sessão não é derrubada; os admins são avisados no
flapping.
Run (dev)
PORT=9101 bun run dev:whatsapp
# → credential token: unifydesk|<secret>|<ip>|9101
Cole o token na aba Adicionar extension do painel e Inicie a conexão; o QR aparece na tela para escanear.
Env: PORT (default 9101), WA_KV_DIR (sessão/creds). Sem WA_KV_DIR, cai em
$UNIFYDESK_STATE_DIR/wa-kv e só então em <pacote>/data/wa-kv — em container o
código é montado read-only, então o último caminho falha com EROFS.
Layout
src/
extension.ts a definição (import-safe: manifest, rotas, capabilities)
config.ts campos por conexão
runtime.ts WhatsAppConnection — ciclo de vida do cliente, host via ctx
view/ a tela do painel (QR, status, configuração)