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
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
timestamp | float | Sí | Marca de tiempo Unix epoch |
direction | string | Sí | inbound o outbound |
platform | string | Sí | Siempre whatsapp |
message_id | string | Sí | ID de mensaje de WhatsApp |
chat_id | string | Sí | ID del hilo de conversación |
content | string | Sí | Contenido del mensaje |
is_from_account | boolean | Sí | True si fue enviado por la cuenta conectada |
account_id | string | Sí | ID de cuenta de WhatsApp conectada |
social_event_type | string | Sí | Tipo de evento (ver valores abajo) |
Valores de social_event_type
| Valor | Descripción |
|---|---|
message_received | Nuevo mensaje recibido |
message_reaction | Reacción añadida al mensaje |
message_read | Mensaje marcado como leído |
message_edited | Mensaje fue editado |
message_deleted | Mensaje fue eliminado |
Objeto sender_attendee
| Campo | Tipo | Descripción |
|---|---|---|
attendee_id | string | ID interno del asistente |
attendee_name | string | Nombre visible |
attendee_provider_id | string | Número de teléfono |
attendee_profile_url | string | URL de foto de perfil (opcional) |
Campos opcionales
| Campo | Tipo | Descripción |
|---|---|---|
attendees | array | Lista de participantes de la conversación |
attachments | array | Adjuntos de medios |
usage_data | object | Uso de tokens LLM |
tools_called | array | Lista de nombres de herramientas ejecutadas |
tool_calls | array | Datos sin procesar de llamadas a herramientas |
tool_results | object | Resultados detallados de ejecución de herramientas |
analysis_result | object | Resultado del análisis de IA |
appointments | array | Datos de citas extraídos |
execution_context | object | Contexto del activador de origen |
reaction | string | Reacción emoji (para eventos de reacción) |
reaction_sender | object | Quién envió la reacción |
Array de attachments
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del adjunto |
type | string | image, video, audio, document, sticker |
url | string | URL de descarga |
mimetype | string | Tipo MIME |
sticker | boolean | True si es sticker |
unavailable | boolean | True si expiró/no está disponible |
size | object | Dimensiones (ancho, alto) para imágenes/videos |
message_id | string | ID de mensaje asociado |
Campos de división de mensajes
Para mensajes largos que se dividen:
| Campo | Tipo | Descripción |
|---|---|---|
split_message_info | object | Metadatos de división |
original_full_message | string | Mensaje completo antes de dividir |
Campos de acumulación de mensajes
Para mensajes rápidos acumulados:
| Campo | Tipo | Descripción |
|---|---|---|
accumulation_info | object | Metadatos de acumulación |
accumulated_content | string | Contenido del mensaje combinado |