zapo expõe ambas. Entender a distinção importa assim que você mexe com grupos, porque o WhatsApp está migrando as identidades de grupo para LID por privacidade.
PN vs LID
Um LID (“linked identity”) é um identificador estável e opaco que representa um usuário sem expor seu número de telefone. O WhatsApp usa LIDs cada vez mais em grupos e comunidades para que os membros possam interagir sem compartilhar seu número.
Addressing mode
Ao enviar para um grupo, a mensagem é endereçada aos participantes por PN ou por LID — oaddressingMode: 'pn' | 'lid'. O zapo resolve isso automaticamente: ele varre os participantes do grupo e usa lid se qualquer participante for um LID, caso contrário pn. O servidor pode confirmar ou sobrepor a escolha, o que é refletido de volta no resultado do publish:
O que você recebe em uma mensagem de entrada
WaIncomingMessageEvent.key carrega ambos os identificadores quando o servidor os fornece. Em grupos, o remetente é key.participant; em chats 1:1 é key.remoteJid. Cada um ganha um campo *Alt paralelo com o endereçamento alternativo.
key.participant como um @lid e key.participantAlt como o JID de telefone (se o servidor o compartilhar).
Respondendo — qual JID usar
Oclient.message.send aceita tanto um JID PN quanto um LID e normaliza o destino para você, então você raramente precisa converter:
Mapeando um número de telefone para o seu LID
Para resolver LIDs de um conjunto de números de telefone, use o profile coordinator:lidJid é null quando o servidor não tem mapeamento de LID para aquele número.
Mudanças de LID
O LID de um usuário pode mudar (no lado do servidor, por privacidade). Quando isso acontece, você recebe ummex_notification do tipo lid_change:
zapo cuida da contabilidade subjacente da sessão Signal; este evento é para seus próprios caches/contabilidade.
Onde a ligação PN ↔ LID é armazenada
Vários schemas de app-state rastreiam o relacionamento e o sincronizam entre seus dispositivos (veja mutações de chat):Sessões Signal
As sessões Signal são indexadas pelo JID canônico (PN ou LID) mais o id do dispositivo. Ozapo canonicaliza as variantes de servidor hospedado (hosted.lid → lid, hosted → s.whatsapp.net) antes das buscas, e mantém sessões para ambas as formas de endereçamento. Se você algum dia precisar forçar uma nova sincronização de sessão para um peer, use:
