@chrono-os/whatsapp-br
v0.1.1
Published
Telefone brasileiro para WhatsApp: normalização com DDI 55 sem confundir o DDD 55, e validação de número via Z-API com modo permissivo monitorado. Zero dependências de runtime.
Maintainers
Readme
@chrono-os/whatsapp-br
Telefone brasileiro para WhatsApp. Zero dependências de runtime.
import { normalizarTelefoneBR, telefoneBRValido, criarValidadorZapi } from '@chrono-os/whatsapp-br'
normalizarTelefoneBR('(55) 99628-2511') // '5555996282511' — DDD 55 não é confundido com o DDI
telefoneBRValido('123') // false
const whatsapp = criarValidadorZapi({
instance: env.ZAPI_INSTANCE,
token: env.ZAPI_TOKEN,
clientToken: env.ZAPI_CLIENT_TOKEN, // faltando qualquer um: modo permissivo, sem chamada
logger,
})
await whatsapp.temWhatsApp(telefone) // boolean (permissivo quando a Z-API falha)
await whatsapp.verificar(telefone) // { temWhatsApp, verificado, motivo? }
whatsapp.saude() // { configurado, falhasConsecutivas, minutosDesdeUltimoSucesso, degradado } — para o /healthA regra do DDD 55
d.startsWith('55') ? d : '55' + d está errada: confunde o DDI 55 com o DDD 55 (Santa Maria / Passo Fundo). 55996282511 sai intacto e vira +55 99 6282511. O que desambigua é o tamanho: 10 ou 11 dígitos ganham o 55; 12 ou 13 começando com 55 já têm o país; fora disso, os dígitos voltam crus.
Modo permissivo, monitorado
Se a Z-API falha, a validação deixa o lead passar (não bloqueia gente de verdade). Isso abre um bypass — derrubar a Z-API desliga a validação —, então o validador conta falhas consecutivas, avisa no limiar (10) e loga erro quando a queda passa da janela (5 min). Número malformado continua barrado (false), sem gastar chamada.
