Digitação e gravação
Evento: presence · Transporte: POST para o seu receptor
Acompanhe presença dentro de uma conversa, como digitação e gravação de áudio.
Como interpretar
event.State informa o estado de atividade (composing ou paused); event.Media pode indicar áudio. Preserve Chat/chatid e as identidades de remetente disponíveis.
Não use este evento como confirmação de que o usuário está online ou offline. A API não envia notificações de conectividade (Presence); o fluxo de atividade da conversa (ChatPresence) é o que produz estes eventos.
Estados de atividade são transitórios e não representam envio, entrega ou leitura de mensagens.
Habilitar este evento
Adicione presence à lista events do webhook da instância. Preserve os outros eventos de que sua integração precisa.
{
"enabled": true,
"url": "https://seu-sistema.example/hooks/whatsapp",
"events": [
"presence"
]
}
Envie essa configuração para POST /webhook, usando o header token. O JSON acima configura a assinatura; os exemplos de entrega abaixo são o que seu servidor recebe.
Campos do payload
O envelope comum vem na raiz. Campos condicionais podem estar ausentes ou nulos conforme o evento; não use a tabela como obrigação de presença de todos os campos.
| Campo | Tipo | Significado |
|---|---|---|
EventType | string | Obrigatório. Tipo de evento, por exemplo connection ou messages. |
owner | string | Obrigatório. Consulte o objeto ou exemplo correspondente. |
token | string | Obrigatório. Token da instância; dado sensível. |
BaseUrl | string | Obrigatório. Consulte o objeto ou exemplo correspondente. |
instanceName | string | Consulte o objeto ou exemplo correspondente. |
type | string | O fluxo de ChatPresence usa presence. |
event | object | Atividade na conversa. |
event.chatid | string | JID da conversa, quando resolvido. |
event.chatlid | string / null | LID da conversa; pode ser ausente ou null. |
event.sender_pn | string / null | JID por telefone, quando conhecido. |
event.sender_lid | string / null | Identificador LID, quando conhecido. |
event.Chat | string | JID da conversa. |
event.Sender | string | JID do participante. |
event.State | string | Atividade recebida. |
event.Media | string | Tipo de atividade, por exemplo audio; pode estar vazio. |
event.IsFromMe | boolean | Origem na conta conectada. |
event.IsGroup | boolean | Conversa de grupo. |
Exemplos de entrega
Exemplos ilustrativos com identificadores fictícios. O conteúdo específico e os campos opcionais variam.
Contato digitando
{
"EventType": "presence",
"owner": "5511999999999",
"token": "INSTANCE_TOKEN",
"BaseUrl": "https://seu-servidor.example",
"instanceName": "Atendimento",
"type": "presence",
"event": {
"Chat": "5511888888888@s.whatsapp.net",
"Sender": "5511888888888@s.whatsapp.net",
"chatid": "5511888888888@s.whatsapp.net",
"State": "composing",
"Media": "",
"IsFromMe": false,
"IsGroup": false
}
}
Responder ao webhook
Seu receptor deve aceitar o POST JSON e devolver uma resposta 2xx rapidamente, após validar e registrar o recebimento. O corpo da resposta não é um comando para a API. Processe trabalho demorado separadamente.
O worker não repete automaticamente uma entrega HTTP malsucedida. Consulte diagnóstico de webhooks e implemente a reconciliação necessária. Eventos repetidos ou fora de ordem ainda precisam ser tolerados pelo receptor.