Payload de webhook de WhatsApp

Los webhooks de WhatsApp se envían para mensajes, reacciones y confirmaciones de lectura.

Payload de ejemplo

{
"event": {
"id": "evt_wa_abc123",
"channel": "whatsapp",
"timestamp": 1706640000.0,
"data": {
"timestamp": 1706640000.0,
"direction": "inbound",
"platform": "whatsapp",
"message_id": "wamid_xyz789",
"chat_id": "chat_456",
"content": "I'd like to schedule an appointment for next week",
"is_from_account": false,
"account_id": "acc_123",
"sender_attendee": {
"attendee_id": "att_789",
"attendee_name": "John Doe",
"attendee_provider_id": "+15551234567",
"attendee_profile_url": "https://..."
},
"social_event_type": "message_received",
"attendees": [
{
"attendee_id": "att_789",
"attendee_name": "John Doe",
"attendee_provider_id": "+15551234567"
}
],
"attachments": [
{
"id": "att_001",
"type": "image",
"url": "https://storage.example.com/attachments/img_001.jpg",
"mimetype": "image/jpeg",
"size": {
"width": 1024,
"height": 768
}
}
],
"usage_data": {
"prompt_tokens": 200,
"completion_tokens": 60,
"model": "gpt-4"
},
"tools_called": ["book_appointment"],
"tool_results": {
"book_appointment": {
"success": true,
"datetime": "2024-02-01T10:00:00Z"
}
},
"analysis_result": {
"sentiment": "positive",
"intent": "schedule"
},
"appointments": [
{
"datetime": "2024-02-01T10:00:00Z",
"type": "consultation"
}
]
}
},
"lead_id": "lead_123",
"lead_contact": {
"number": "+15551234567",
"email": "john@example.com",
"name": "John Doe"
},
"business_id": "biz_456",
"lead_created": false
}

Referencia de campos

Campos principales

CampoTipoRequeridoDescripción
timestampfloatMarca de tiempo Unix epoch
directionstringinbound o outbound
platformstringSiempre whatsapp
message_idstringID de mensaje de WhatsApp
chat_idstringID del hilo de conversación
contentstringContenido del mensaje
is_from_accountbooleanTrue si fue enviado por la cuenta conectada
account_idstringID de cuenta de WhatsApp conectada
social_event_typestringTipo de evento (ver valores abajo)

Valores de social_event_type

ValorDescripción
message_receivedNuevo mensaje recibido
message_reactionReacción añadida al mensaje
message_readMensaje marcado como leído
message_editedMensaje fue editado
message_deletedMensaje fue eliminado

Objeto sender_attendee

CampoTipoDescripción
attendee_idstringID interno del asistente
attendee_namestringNombre visible
attendee_provider_idstringNúmero de teléfono
attendee_profile_urlstringURL de foto de perfil (opcional)

Campos opcionales

CampoTipoDescripción
attendeesarrayLista de participantes de la conversación
attachmentsarrayAdjuntos de medios
usage_dataobjectUso de tokens LLM
tools_calledarrayLista de nombres de herramientas ejecutadas
tool_callsarrayDatos sin procesar de llamadas a herramientas
tool_resultsobjectResultados detallados de ejecución de herramientas
analysis_resultobjectResultado del análisis de IA
appointmentsarrayDatos de citas extraídos
execution_contextobjectContexto del activador de origen
reactionstringReacción emoji (para eventos de reacción)
reaction_senderobjectQuién envió la reacción

Array de attachments

CampoTipoDescripción
idstringID del adjunto
typestringimage, video, audio, document, sticker
urlstringURL de descarga
mimetypestringTipo MIME
stickerbooleanTrue si es sticker
unavailablebooleanTrue si expiró/no está disponible
sizeobjectDimensiones (ancho, alto) para imágenes/videos
message_idstringID de mensaje asociado

Campos de división de mensajes

Para mensajes largos que se dividen:

CampoTipoDescripción
split_message_infoobjectMetadatos de división
original_full_messagestringMensaje completo antes de dividir

Campos de acumulación de mensajes

Para mensajes rápidos acumulados:

CampoTipoDescripción
accumulation_infoobjectMetadatos de acumulación
accumulated_contentstringContenido del mensaje combinado