Pular para o conteúdo principal

Envelope do evento

Toda requisição enviada ao seu webhook tem a seguinte estrutura de topo:

Campos comuns da mensagem

Todos os payloads compartilham os mesmos campos no objeto message, independente do tipo de conteúdo:

Mensagens de grupo (WhatsApp Web)

Em canais WhatsApp Web (metadata.middleware igual a "Z_API_WHATSAPP"), uma mensagem trocada em grupo traz a identificação do grupo em internal_information de cada item de contents e attachments: Em mensagem recebida de grupo, sender.identifier é o telefone de quem escreveu, não o do grupo. Os dois campos de grupo aparecem também quando a mensagem é enviada ao grupo pelo próprio número (metadata.from_me: true). Mensagens individuais não têm group_id nem group_name.
Nos webhooks no formato Z-API, enviados aos canais da Compatibilidade Z-API, a mensagem recebida de grupo segue a estrutura da Z-API: phone e chatName identificam o grupo, participantPhone e participantLid identificam quem enviou, e o callback de status traz isGroup: true.

Tipos de conteúdo

O campo que diferencia o tipo de mensagem é o @class dentro de cada item de contents ou attachments, combinado com o campo type.

TEXT — Mensagem de texto

O conteúdo fica em contents[0] com type: "TEXT".

IMAGE — Imagem com legenda

O anexo fica em attachments[0] com type: "IMAGE". O campo caption é opcional.

AUDIO — Mensagem de voz

O anexo fica em attachments[0] com type: "AUDIO".

VIDEO — Vídeo com legenda

O anexo fica em attachments[0] com type: "VIDEO". O campo caption é opcional.

STICKER — Figurinha

O anexo fica em attachments[0] com type: "STICKER". A URL aponta para um arquivo .webp.

CONTACT_ARRAY — Contato(s)

O conteúdo fica em contents[0] com type: "CONTACT_ARRAY". O array contacts pode conter múltiplos contatos, cada um com first_name, last_name, name e phones.

INTERACTIVE_BUTTON — Botões de resposta rápida (texto)

O conteúdo fica em contents[0] com type: "INTERACTIVE_BUTTON". O campo internal_information.mediaButtonType indica o tipo de mídia anexada: "TEXT" quando não há mídia.

INTERACTIVE_BUTTON — Botões de resposta rápida (com imagem)

Quando internal_information.mediaButtonType é "IMAGE", o campo thumbnail contém a URL da imagem exibida acima dos botões.

INTERACTIVE_ACTION — Botões de ação (URL e ligar)

O conteúdo fica em contents[0] com type: "INTERACTIVE_ACTION". Cada botão em buttons tem um type próprio: "URL" ou "CALL". Os campos header e footer são opcionais.

Resumo dos tipos