Aqui abordaremos com exemplos práticos de como os webhooks disparados em casos de envio de mensagem do tipo text.
No geral, quando se envia uma mensagem no Zapfy, após a fila executar a mensagem, é disparado um webhook inicial do tipo NEW-MESSAGE, esse webhooks é disparado toda vez que uma instância envia ou recebe uma nova mensagem.
Exemplos reais
Instância envia uma mensagem do tipo text
Adicionamos comentários em cada propriedade para melhor entendimento.
{
"type": "NEW-MESSAGE",
"instanceKey": "b08f4262-b74f-4b7b-9958-1c7d5d1dc5e7", // key de identificação da instância que recebeu/enviou a mensagem
"id": "c67fad44-c6eb-4ba2-9f4e-ddc5b526dbe9", // ID da mensagem (esse ID só terá valor caso a mensagem seja enviada via API zapfy)
"data": {
"isOnWhatsApp": [
{
"exists": true, // Propriedade que diz se o contato existe ou não no WhatsApp
"jid": "5527997320619@s.whatsapp.net" // Contato que foi o destinatário da mensagem
}
],
"messageStubParameters": [],
"labels": [],
"userReceipt": [],
"reactions": [],
"pollUpdates": [],
"key": {
"remoteJid": "5527997320619@s.whatsapp.net",
"fromMe": true, // Propriedade que indica se a mensagem foi enviada pelo número conectado na instância
"id": "BAE5773A4D88E1B4", // ID da mensagem no WhatsApp
"messageUuid": "c67fad44-c6eb-4ba2-9f4e-ddc5b526dbe9" // UUID da mensagem que foi adicionada à fila do Zapfy, essa propriedade só existirá em casos em que a mensagem foi enviada pela ZAPFY
},
"message": {
"extendedTextMessage": {
"text": "Uma mensagem de texto direto da Zapfy :)" // Objeto completo da mensagem de texto, aqui será possível ver o que foi enviado nessa mensagem de texto
}
},
"messageTimestamp": {
"low": 1674317457,
"high": 0,
"unsigned": true
},
"status": 1 // Status da mensagem, você poderá entender melhor sobre status no Webhook de alteração de status de mensagem
},
"ids": [
"c67fad44-c6eb-4ba2-9f4e-ddc5b526dbe9"
] // Array contendo os uuids das mensagens que foram enviadas nessa instância, nesse job.
}
Instância recebe mensagem do tipo text:
{
"type": "NEW-MESSAGE",
"instanceKey": "b08f4262-b74f-4b7b-9958-1c7d5d1dc5e7", // Key da instância que recebeu a mensagem
"id": null, // ID da mensagem, nesse caso, como a mensagem não foi enviada pela Zapfy, o ID retorna como null.
"data": {
"isOnWhatsApp": [
{
"exists": true, // Propriedade que diz se o contato existe ou não no WhatsApp
"jid": "5527997320619@s.whatsapp.net" // Contato de quem enviou a mensagem
}
],
"key": {
"remoteJid": "5527997320619@s.whatsapp.net", // ID de identificação do contato que enviou a mensagem no whatsapp
"fromMe": false, // Propriedade indicando que a mensagem não foi enviada pelo número conectado na instância
"id": "3EB0CBF3275965A42934", // ID único de identificação da mensagem no whatsapp
"messageUuid": null // O uuid é nulo pois essa mensagem não foi enviada pela Zapfy
},
"messageTimestamp": 1674318916, // Timestamp da mensagem
"pushName": "André Rebonato", // Nome do usuário que enviou a mensagem no whatsapp
"message": {
"conversation": "Opa, beleza?", // Texto enviado pelo usuário
"messageContextInfo": {
"deviceListMetadata": {
"senderKeyHash": "NBrlAUVzZa0X2g==",
"senderTimestamp": "1674267191",
"recipientKeyHash": "gwKoARMTqmLUWw==",
"recipientTimestamp": "1674267207"
}, // Informações de autenticidade da mensagem
"deviceListMetadataVersion": 2
}
}
},
"ids": [
null
]
}
Dica
É importante lembrar que todo envio ou recebimento de mensagem gera eventos do tipo MESSAGE-UPDATED, dê uma olhada para entender melhor do que se trata em Alteração de status da mensagem.
Sempre se baseie na propriedade fromMe para saber se foi sua instância que enviou a mensagem.
Se essa propriedade for false, significa que a mensagem foi recebida, e não enviada, ou seja, alguém mandou essa mensagem para o número conectado na sua instância