Conversas e números
Como identificar contatos e grupos no chatId, e o que são LID e BSUID.
Toda conversa é identificada por um chatId. Nos envios você pode mandar só o número; nos eventos ele sempre chega
completo.
| Formato | Exemplo | Quando aparece |
|---|---|---|
| Número com DDI e DDD | 5511999999999 | Nos seus envios (vira 5511999999999@c.us) |
| Contato | 5511999999999@c.us | Nos eventos, sempre que o número do contato é conhecido |
| LID | 36576092528787@lid | Só quando o WhatsApp não informa o número por trás do LID |
| Grupo | 120363000000000000@g.us | Grupos (só API OnZap) |
| BSUID | BR.abc123@bsuid | API oficial: usuário com nome de usuário, sem número visível |
- Nos envios, o campo
phoneé aceito como apelido dechatId. - Nono dígito: no Brasil, o número é conferido e o nono dígito, resolvido automaticamente. Nos eventos, o
chatIdvem como o WhatsApp registrou o número: contas antigas aparecem sem o nono dígito (556199998888@c.us). Por isso use ochatIdcomo chave da conversa, e não o número digitado. - Número de origem desconhecida? Use
GET /contacts/check-exists?phone=5511999999999antes de enviar: ele diz se o número tem WhatsApp e devolve ochatIdcerto.
LID
O WhatsApp está trocando o número pelo LID (um identificador de privacidade) em várias conversas, e a mesma
pessoa pode chegar ora como 5561999998888@c.us, ora como 36576092528787@lid. Para o seu sistema não ficar com
duas conversas da mesma pessoa, a OnZap converte o LID no número sempre que ele é conhecido, em tudo o que você
usa como chave:
- nos eventos,
chatId,from.ide os ids de mensagem (id,quotedId, e omessageIdde confirmações, reações, mensagens apagadas e editadas) saem com o número (...@c.us); - nas respostas da API (conversas, histórico, contatos, grupos), os JIDs e ids de mensagem seguem a mesma regra; o
histórico de uma conversa pelo número (
GET /chats/5561999998888@c.us/messages) já inclui o que chegou pelo LID; - o LID original vem junto em
chatLidefrom.lid(nos eventos) e emlid(nas respostas), para quem quiser guardar os dois. As rotas/lidsmostram o par LID ↔ número como ele é; - só quando o WhatsApp não informa o número o
chatIdcontinua...@lid(efrom.phonevem vazio). Responda usando esse mesmochatId; o envio funciona igual.
Guarde o chatId como chave da conversa. Se você já tem conversas antigas com @lid, junte-as pelo chatLid das
mensagens novas.
Grupos
Em grupos, o chatId é o do grupo (@g.us) e from é quem mandou a mensagem. As mensagens enviadas pela própria
conta chegam com fromMe: true e o mesmo chatId do grupo.
Nome e foto da conversa
Nas mensagens (message e message.any), chatName e chatPicture descrevem a conversa, não quem mandou:
- Grupo:
chatNameé o assunto do grupo echatPicture, a foto do grupo. - Contato:
chatNameé o nome do contato (o da agenda do celular ou, na falta, o do perfil), inclusive nas mensagens enviadas pela conta, em quefromé você.
chatPicture (como from.picture) é um link temporário; sem foto visível, ele responde 404. Só na API OnZap.
Quem mandou: fromMe e from
| Situação | fromMe | from |
|---|---|---|
| Mensagem recebida | false | O contato (id, phone, pushName, picture); em grupo, o participante |
| Enviada pela conta | true | A própria conta (na API oficial vem vazio) |
Nas enviadas, source diz a origem: api (por esta API) ou app (pelo celular ou outro aparelho conectado).