Saltar al contenido principal

Envelope del evento

Toda petición enviada a tu webhook tiene la siguiente estructura de nivel superior:

Campos comunes del mensaje

Todos los payloads comparten los mismos campos dentro del objeto message, con independencia del tipo de contenido:

Mensajes de grupo (WhatsApp Web)

En los canales WhatsApp Web (metadata.middleware igual a "Z_API_WHATSAPP"), un mensaje intercambiado en un grupo trae la identificación del grupo en el internal_information de cada elemento de contents y attachments: En un mensaje recibido de un grupo, sender.identifier es el teléfono de quien escribió, no el del grupo. Los dos campos de grupo también aparecen cuando el mensaje se envía al grupo desde el propio número del canal (metadata.from_me: true). Los mensajes individuales no tienen group_id ni group_name.
En los webhooks con formato Z-API, enviados a los canales de Compatibilidad con Z-API, el mensaje recibido de un grupo sigue la estructura de Z-API: phone y chatName identifican el grupo, participantPhone y participantLid identifican a quien envió, y el callback de estado trae isGroup: true.

Tipos de contenido

El campo que diferencia el tipo de mensaje es @class, dentro de cada elemento de contents o attachments, combinado con el campo type.

TEXT — Mensaje de texto

El contenido está en contents[0] con type: "TEXT".

IMAGE — Imagen con pie de foto

El adjunto está en attachments[0] con type: "IMAGE". El campo caption es opcional.

AUDIO — Mensaje de voz

El adjunto está en attachments[0] con type: "AUDIO".

VIDEO — Vídeo con pie de vídeo

El adjunto está en attachments[0] con type: "VIDEO". El campo caption es opcional.

STICKER — Sticker

El adjunto está en attachments[0] con type: "STICKER". La URL apunta a un archivo .webp.

CONTACT_ARRAY — Contacto(s)

El contenido está en contents[0] con type: "CONTACT_ARRAY". El array contacts puede contener varios contactos, cada uno con first_name, last_name, name y phones.

INTERACTIVE_BUTTON — Botones de respuesta rápida (texto)

El contenido está en contents[0] con type: "INTERACTIVE_BUTTON". El campo internal_information.mediaButtonType indica el tipo de contenido multimedia adjunto: "TEXT" cuando no hay ninguno.

INTERACTIVE_BUTTON — Botones de respuesta rápida (con imagen)

Cuando internal_information.mediaButtonType es "IMAGE", el campo thumbnail contiene la URL de la imagen que se muestra encima de los botones.

INTERACTIVE_ACTION — Botones de acción (abrir URL y llamar)

El contenido está en contents[0] con type: "INTERACTIVE_ACTION". Cada botón de buttons tiene su propio type: "URL" o "CALL". Los campos header y footer son opcionales.

Resumen de los tipos