En este artículo podrás ver ejemplos de Webhooks para realizar la implementación en Botmaker.
Nombre | Tipo | Descripción | Ejemplos |
v | string | Versión del formato de la notificación. | "1.1" |
type | string | Tipo de notificación. | "message" |
chatPlatform | string | Plataforma de chat. | "webchat", "whatsapp", "messenger", "telegram", "twitter" |
contactId | string | Identificador del contacto en la plataforma de chat. WhatsApp: Número de teléfono del usuario. Messenger, Telegram, Twitter: ID de usuario en la plataforma. | "+5511999999999", "1234567890" |
whatsappNumber | string | Número de teléfono de la línea del bot (sólo para WhatsApp). | "+551149331774" |
chatIdInChatPlatform | string | ID del chat en la plataforma de chat (excepto WhatsApp). | "AR4Q1S3P1U" |
chatChannelId | string | ID del canal de chat en Botmaker. | "canal123" |
customerId | string | ID del usuario en Botmaker. | "user456" |
firstName | string | Nombre del usuario. | "Juan" |
lastName | string | Apellido del usuario. | "Pérez" |
customerCreationTime | string | Fecha y hora de creación del usuario (formato ISO 8601). | "2021-02-28T23:59:00.147Z" |
sessionCreationTime | string | Fecha y hora de inicio de la sesión (formato ISO 8601). | "2021-03-08T19:28:45.147Z" |
whatsappNickName | string | Apodo del usuario en WhatsApp. | "Juanito" |
txId | string | ID de la transacción cuando se envían plantillas por la API Botmaker. Coincide con webhookNotificationId. | "tx789" |
messages | array | Array de mensajes. | [{ "_id": "PHW3S2KV4...", ... }] |
messages[]._id | string | ID del mensaje en Botmaker. | "PHW3S2KV4VRWL17BBM1U" |
messages[].date | string | Fecha y hora del mensaje (formato ISO 8601). | "2021-03-08T19:44:14.388Z" |
messages[].message | string | Texto del mensaje. | "Hola, cómo estás?" |
messages[].fromName | string | Nombre de quien envió el mensaje ("Bot", nombre de usuario u operador). | "Ignacio Ferrari", "Bot" |
messages[].from | string | Categoría del remitente. | "bot", "user", "operator" |
messages[].fromCustomer | boolean | true si el mensaje es del usuario, undefined si no. | true, undefined |
messages[].isButton | boolean | true si el mensaje es un botón, undefined si no. | true, undefined |
messages[].hasAttachment | boolean | true si el mensaje tiene un archivo adjunto, undefined si no. | true, undefined |
messages[].image | string | URL de la imagen (si aplica). | "https://..." |
messages[].audio | string | URL del audio (si aplica). | "https://..." |
messages[].video | string | URL del video (si aplica). | "https://..." |
messages[].file | string | URL del archivo (si aplica). | "https://..." |
messages[].operatorId | string | ID del operador en Botmaker (si from es "operator"). | "bxj99dyfxEsdopib9ZuboIG5Tqr3" |
messages[].operatorName | string | Nombre del operador (si from es "operator"). | "Pepe" |
messages[].operatorEmail | string | Email del operador (si from es "operator"). | "pepe@domain.com" |
messages[].operatorRole | string | Rol del operador (si from es "operator"). | "ADMIN", "CONFIGURATOR", "SUPERVISOR", "OPERATOR", nombreRolCustom |
messages[].queue | string | ID de la cola de atención (si aplica). | "idColaAtencion" |
messages[].intentName | string | Nombre de la intención (si from es "bot"). | "Nombre de una Intención" |
messages[].location | string | Latitud y longitud (para geolocalización en WhatsApp). | "lat & long" |
messages[].caption | string | Texto que acompaña a una imagen (WhatsApp). | "Descripción de la imagen" |
messages[].payload | string | Payload configurado por el usuario (para HSM/templates con botones). | "payload_data" |
messages[].button | string | Etiqueta del botón HSM. | "Botón 1" |
messages[].templateName | string | Nombre del template con botón. | "Nombre del template" |
messages[].clientPayload | string | Payload enviado a través de la API Botmaker. | "client_payload_data" |
messages[].whatsappReferral | object | Información de referencia de WhatsApp. | { "sourceId": "...", ... } |
messages[].whatsappReferral.sourceId | string | ID de la fuente de referencia. | "source123" |
messages[].whatsappReferral.sourceURL | string | URL de la fuente de referencia. | "https://..." |
messages[].whatsappReferral.headline | string | Titular de la referencia. | "Título de la referencia" |
messages[].whatsappReferral.body | string | Cuerpo de la referencia. | "Texto de la referencia" |
messages[].cart | object | Información del carrito de compra. | { "products": [...] } |
messages[].cart.products | array | Array de productos en el carrito. | [{ "sku": "sku123", "quantity": 2 }] |
messages[].cart.products[].sku | string | SKU del producto. | "sku123" |
messages[].cart.products[].quantity | number | Cantidad del producto. | 2 |
variables | object | Mapa de variables y sus nuevos valores. | { "varName1": "new val 1", "varName2": "new val 2" } |
Ejemplo de JSON:
{
"lastName": "Gonzales",
"chatPlatform": "whatsapp",
"customerCreationTime": "2025-06-02T16:35:14.169Z",
"contactId": "551150392540",
"sessionId": "PRQICKLCR18TSUEXWVQ7_2025-06-05T15:35:14.169Z",
"type": "message",
"whatsappNumber": "551150392540",
"firstName": "Juan",
"sessionCreationTime": "2025-06-05T15:35:14.169Z",
"v": "1.1",
"customerId": "PRQICKLCR18TSUEXWVQ7",
"messages": [
{
"date": "2025-06-05T16:35:14.170Z",
"fromName": "Bot",
"_id_": "QEAH2V4UTOAQI48I688P",
"from": "bot",
"clientPayload": "",
"message": "Test message (from bot)",
"operatorId": null
}
],
"chatChannelId": "demo-whatsapp-551149331774",
"variables": {
"varName1": "new val 1",
"varName2": "new val 2"
}
}
Nombre | Tipo | Descripción | Ejemplos |
v * | string | Versión del formato del webhook. | "1.1" |
businessId | string | ID del bot en Botmaker. Permite diferenciar entre varios bots que apuntan al mismo webhook. | "12345" |
customerId* | string | ID del usuario en Botmaker. | "67890" |
contactId | string | ID del contacto en la plataforma de chat. <br> - WhatsApp: Número de teléfono del usuario. <br> - Messenger, Telegram, Twitter: ID de usuario en la plataforma. | WhatsApp: "+5491155556666" <br> Telegram: "123456789" |
chatChannelId* | string | ID del canal de chat en Botmaker. | "11121314" |
chatPlatform* | string | Plataforma de chat. | "whatsapp", "messenger", "telegram", "twitter", "webchat" |
status* | string | Estado del mensaje. | "sent", "delivered", "read" |
statusChangeTime* | string | Fecha y hora del cambio de estado en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sssZ). | "2024-07-20T14:30:00.000Z" |
messageId* | string | ID del mensaje en Botmaker que cambió de estado. Este ID hace referencia a un mensaje de salida, ya sea del bot o de un operador. | "abc123def456" |
clientPayload | string | Dato arbitrario enviado originalmente con el mensaje a través de la API Botmaker (v1 o v2). Permite al usuario del API hacer seguimiento del envío. Equivalente a webhookPayload en la v2 de la API. | "{\"orderId\":\"789\"}" |
intentTxId | string | ID de la transacción de la intención. Coincide con webhookNotificationId devuelto por la API Botmaker al enviar templates. | "ghi789jkl012" |
error | array de objetos | Contiene información de errores, si los hubiera. | [{"message": "Error al enviar el mensaje", "code": "400"}] |
error[].message | string | Descripción del error. | "Error al enviar el mensaje" |
error[].code | string | Código de error. | "400" |
Ejemplo de JSON:
{
"v": "1.0",
"businessId": "12345",
"customerId": "67890",
"contactId": "+5491155556666",
"chatChannelId": "11121314",
"chatPlatform": "whatsapp",
"status": "delivered",
"statusChangeTime": "2024-07-20T15:00:00.000Z",
"messageId": "abc123def456",
"clientPayload": "idSendInTheApi",
"intentTxId": "ghi789jkl012",
"error": []
}
Ejemplo con error:
{
"v": "1.0",
"businessId": "12345",
"customerId": "67890",
"contactId": "+5491155556666",
"chatChannelId": "11121314",
"chatPlatform": "whatsapp",
"status": "sent", // Note that status may or may not be related to the error. It depends on the specific implementation.
"statusChangeTime": "2024-07-20T15:05:00.000Z",
"messageId": "abc123def456",
"clientPayload": null,
"intentTxId": null,
"error": [
{
"message": "Error al enviar el mensaje: Destinatario no encontrado",
"code": "404"
}
]
}
Para la correspondencia entre el envío de un mensaje por api y el status validar
- webhookPayload enviado por la api corresponde al clientPayload recibido en el webhook - webhookNotificationId devuelto por el API corresponde al intentTxId recibido en el webhook.
Lista de nombres de eventos:
Nombre | Tipo | Descripción | Ejemplo |
chatPlatform* | string | Plataforma de chat utilizada. | webchat |
customerCreationTime | string | Fecha y hora de creación del cliente (ISO 8601). | 2023-06-15T18:00:00.000Z |
contactId* | string | ID del contacto. | 1234567890 |
v* | string | Versión del evento. | 1.1 |
customerId* | string | ID del cliente. | CUST-12345 |
chatIdInChatPlatform | string | ID del chat en la plataforma de chat. | CHAT-67890 |
type* | string | Tipo de dato principal. | event |
chatChannelId* | string | ID del canal de chat. | webchat-channel-123 |
events | array | Array de eventos. Contiene información detallada sobre eventos específicos dentro de la interacción. | |
events.name | string | Nombre del evento específico. Ver Lista de nombres de eventos | conversation-close |
events.info | array | Array de información adicional del evento. Contiene pares clave-valor para detalles específicos del evento. | [ { "name": "typification", "value": "resolved" }, { "name": "agentName", "value": "Jane Doe" } ] |
Ejemplo JSON:
{
"chatPlatform": "webchat",
"customerCreationTime": "2023-06-15T18:00:00.000Z",
"contactId": "1234567890",
"v": "1.1",
"customerId": "CUST-12345",
"chatIdInChatPlatform": "CHAT-67890",
"type": "event",
"chatChannelId": "webchat-channel-123",
"events": [
{
"name": "conversation-close",
"info": [
{
"name": "typification",
"value": "resolved"
},
{
"name": "agentName",
"value": "Jane Doe"
}
]
}
]
}