Payload de webhook de WhatsApp

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

Payload de ejemplo

1{
2 "event": {
3 "id": "evt_wa_abc123",
4 "channel": "whatsapp",
5 "timestamp": 1706640000.0,
6 "data": {
7 "timestamp": 1706640000.0,
8 "direction": "inbound",
9 "platform": "whatsapp",
10 "message_id": "wamid_xyz789",
11 "chat_id": "chat_456",
12 "content": "I'd like to schedule an appointment for next week",
13 "is_from_account": false,
14 "account_id": "acc_123",
15 "sender_attendee": {
16 "attendee_id": "att_789",
17 "attendee_name": "John Doe",
18 "attendee_provider_id": "+15551234567",
19 "attendee_profile_url": "https://..."
20 },
21 "social_event_type": "message_received",
22 "attendees": [
23 {
24 "attendee_id": "att_789",
25 "attendee_name": "John Doe",
26 "attendee_provider_id": "+15551234567"
27 }
28 ],
29 "attachments": [
30 {
31 "id": "att_001",
32 "type": "image",
33 "url": "https://storage.example.com/attachments/img_001.jpg",
34 "mimetype": "image/jpeg",
35 "size": {
36 "width": 1024,
37 "height": 768
38 }
39 }
40 ],
41 "usage_data": {
42 "prompt_tokens": 200,
43 "completion_tokens": 60,
44 "model": "gpt-4"
45 },
46 "tools_called": ["book_appointment"],
47 "tool_results": {
48 "book_appointment": {
49 "success": true,
50 "datetime": "2024-02-01T10:00:00Z"
51 }
52 },
53 "analysis_result": {
54 "sentiment": "positive",
55 "intent": "schedule"
56 },
57 "appointments": [
58 {
59 "datetime": "2024-02-01T10:00:00Z",
60 "type": "consultation"
61 }
62 ]
63 }
64 },
65 "lead_id": "lead_123",
66 "lead_contact": {
67 "number": "+15551234567",
68 "email": "john@example.com",
69 "name": "John Doe"
70 },
71 "business_id": "biz_456",
72 "lead_created": false
73}

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