Validación
Todos los eventos de webhook vendrán con una firma ("X-Woztell-Signature") en el encabezado para fines de validación. Cada evento de webhook podría validarse utilizando el siguiente método.
- Usando el algoritmo HMAC-SHA256 con el secreto del canal como clave secreta, calcula el resumen para el cuerpo de la solicitud.
- Confirma que el resumen codificado en Base64 coincide con la firma en el encabezado de la solicitud X-Woztell-Signature.
Mensajes entrantes
Al suscribirte a este webhook, recibirás los eventos normalizados que WOZTELL ha preprocesado para todas las plataformas compatibles.
Ejemplo de WhatsApp
Mensaje de texto:
{
"from": "85260903521",
"to": "85268227287",
"timestamp": "1599536864",
"type": "TEXT",
"data": {
"text": "Hello"
}
"member": "memberId",
"channel": "channeId",
"app": "appId",
"memberExtraData": {
"field": "Test Metadata",
"path": "gender"
}
}
Mensaje de vídeo:
{
"from": "85260903521",
"to": "85268227287",
"timestamp": "1599536864",
"type": "MISC",
"data": {
"attachments": [{
"type": "VIDEO",
"waMediaId": "e8a85916-2386-49dc-8f05-1cd0527bfb68",
}],
}
"member": "memberId",
"channel": "channeId",
"app": "appId",
"memberExtraData": {
"field": "Test Metadata",
"path": "gender"
}
}
Actualización del estado del mensaje
Además del evento de mensaje, también puedes recibir actualizaciones del estado del mensaje suscribiéndote a los mensajes entrantes, como los eventos de ENVIADO, ENTREGADO y LEÍDO de WhatsApp.
Ejemplo de WhatsApp
When the message status becomes READ
:
{
"to": "85268227287",
"timestamp": 1701914905000,
"messageId": "wamid.ABcLODUyNTQwNjM1OTgVAgARGBJCRDc4MkU4QTUzREFCMkU3REEA",
"from": "85254063598",
"data": {
"messageId": "wamid.ABcLODUyNTQwNjM1OTgVAgARGBJCRDc4MkU4QTUzREFCMkU3REEA"
},
"type": "READ",
"eventType": "INBOUND",
"member": "MEMBER_ID",
"channel": "CHANNEL_ID",
"app": "APP_ID"
}
Mensajes Salientes
cuerpo
Propiedad | Tipo | Descripción |
---|
Tipo | Cadena | Puede ser BOT o MANUAL. Indica si el mensaje saliente es del chatbot o de la API/difusión. |
Miembro | Cadena | ID del miembro |
Canal | Cadena | ID del canal |
App | Cadena | ID de la App |
Meta | Objeto | apiSource que incluye información de la integración de origen |
Datos Extras de Miembro | Objeto | Datos adicionales del miembro y una ruta válida del miembro |
Datos de encabezados personalizados | Objeto | Clave de encabezado personalizado y valor de encabezado personalizado |
Eventos de Mensaje | Objeto | Objeto messageEvent que contiene el mensaje normalizadomessageEvent |
Propiedad
|
Tipo
|
Descripción
|
---|
De | Cadena | ID del remitente |
A | Cadena | ID del destinatario |
Marca de tiempo | Numero | Marca de tiempo Unix |
Tipo | Cadena | Tipo de Mensaje |
Fechs | Objeto | Datos del mensaje para el tipo de mensaje correspondiente |
Mensajeld | Cadena | ID del mensaje desde la plataforma externa (esta propiedad podría no existir) |
_fuente_
Prioridad | Tipo | Descripción |
---|
ID de integración | Cadena | Tipo de integración de origen |
Construir | Número | Versión de la integración |
App de Integración | Cadena | ID de la integración |
Evento de Muestra
{
"type": "MANUAL",
"app": "APP_ID",
"channel": "CHANNEL_ID",
"member": "MEMBER_ID",
"eventType": "API_OUTBOUND",
"meta": {
"agentUserId": "59cb495865243d002c6fc1f5",
"apiSource": {
"integrationId": "inbox",
"build": 1,
"appIntegration": "6420ffb53e65b445d4657ee1"
},
"__source__": {
"integrationId": "inbox",
"build": 1,
"appIntegration": "6420ffb53e65b445d4657ee1"
}
},
"messageEvent": {
"from": "14132521446",
"to": "85260903521",
"data": {
"text": "hihi"
},
"type": "TEXT",
"timestamp": 1712807869354,
"messageId": "wamid.HBgLODUyNjA5MDM1MjEVAgARGBJFMkI5MkQwODQ1NDc3Q0UwM0QA"
},
}
NOTA
El agentUserId
en el mensaje saliente se puede usar para obtener la información del miembro del equipo con la consulta de la API abierta:
query getTeamMembersUserIdAndEmail
{
apiViewer {
app {
teamMembers {
user {
_id
email {
email
}
}
}
}
}
}
Mensajes Salientes del Bot
Las respuestas del chatbot se enviarán a tu webhook designado.
Mensajes Salientes de la API
Los mensajes enviados a través de la API SendResponse se enviarán a tu webhook designado.
Mensajes Salientes de Difusión
Los mensajes enviados a través de la difusión se enviarán a tu webhook designado.
Eventos de actualización de miembros
Al suscribirte a estos eventos, recibirás notificaciones cada vez que haya un cambio de estado en un miembro de este canal.
Los eventos de actualización de miembros incluyen: creación de miembro
, actualización de estado de suscripción del miembro, actualización de estado de chat en vivo del miembro
, actualización de metadatos del miembro
, actualización de datos temporales del miembro
, actualización de etiquetas del miembro.
cuerpo
Propiedad | Tipo | Descripción |
---|
Tipo de Evento | Cadena | ACTUALIZACIÓN DE MIEMBRO |
Nombre de Funcón | Cadena | NORMAL_UPDATE_MEMBER : actualizar manualmente al miembro en la página de miembros;
BOT_UPDATE_MEMBER : actualizar el miembro con el Bot |
Miembro | Cadena | ID del miembro |
Canal | Cadena | ID del canal |
App | Cadena | ID de la App |
Antes | Objeto | Estado del miembro antes del cambio |
Después | Objeto | Estado del miembro después del cambio |
Evento de Muestra{
"eventType": "MEMBER_UPDATE",
"functionName": "NORMAL_UPDATE_MEMBER",
"member": "memberId",
"channel": "channelId",
"app": "appId",
"before": {
"liveChat": false,
"tempData": {
"faqAns": [],
"listLength": 5
},
"tags": [
"test_broadcast"
]
},
"after": {
"liveChat": true,
"tempData": {
"faqAns": [],
"listLength": 1
},
"tags": [
"test_broadcast",
"testing_tag_2"
]
}
}
Actualizaciones masivas de miembros
Cuando se actualizan varios miembros en lotes al mismo tiempo, recibirías el tipo de evento BATCH_MEMBER_UPDATE
.
cuerpo
Proiedad | Tipo | Descripción |
---|
Tipo de Evento | Cadena | BATCH_MEMBER_UPDATE |
Nombre de la función | Cadena | La función de ac tualización or lotes incluye: OPEN_API_BATCH_CREATE_CHAT , OPEN_API_UPDATE_MEMBERS , OPEN_API_BATCH_UPDATE_MEMBERS , NORMAL_UPDATE_MEMBERS , BATCH_ADD_TAGS , BATCH_DELETE_TAGS , BATCH_REPLACE_TAGS |
Miembros | Arreglo | Arreglo de IDs de miembros |
Canales | Cadena | ID del canal |
App | Cadena | ID de la App |
Actualizar | Objeto | Detalles de la actualización del miembro |
Evento de Muestra
{
"eventType": "BATCH_MEMBER_UPDATE",
"functionName": "BATCH_ADD_TAGS",
"members": [
"memberId_1",
"memberId_2",
"memberId_3",
"memberId_4",
"memberId_5",
"memberId_6"
],
"channel": "channelId",
"app": "appId",
"update": {
"$addToSet": {
"tags": {
"$each": [
"testing_tag_1"
]
}
}
}
}
Eventos activados por nodo
Al suscribirte a esto, recibirías eventos cada vez que se active un nodo en este canal.
cuerpo
Propiedad | Tipo | Descripción |
---|
Tipo de Evento | Cadena | NODE_TRIGGER |
App | Cadena | ID de la App |
Canal | Cadena | ID del Canal |
Miembro | Cadena | ID de los Miembros |
Marca de tiempo | Cadena | Tiempo en que se activa el nodo |
Nodo | Cadena | ID del Nodo |
ID compuesto | Cadena | ID único de un nodo |
Árbol | Cadena | ID del Árbol |
Evento de mensaje | Objeto | Objeto messageEvent que contiene el mensaje normalizado |
Evento de muestra
"app": "appId",
"channel": "channelId",
"member": "memberId",
"timestamp": 1680605255829,
"node": "nodeId",
"compositeId": null,
"tree": "treeId",
"eventType": "NODE_TRIGGER"
"messageEvent": {
"to": "123461662163",
"timestamp": 1680605248000,
"messageId": "wamid.HLavODUyNTpRNjM1OTgVAgASGBYzRUabcjRDNTcxQjhPQ8E3MEI0MkFCAA==",
"from": "85212345678",
"type": "TEXT",
"data": {
"text": "Testing"
}
}
}
Administrar webhooks en el canal
El nuevo sistema de webhooks del canal permite un mejor control sobre los eventos recibidos por tu webhook. En la página "Entorno" del canal, puedes gestionar los webhooks suscritos a cada entorno de un canal.
NOTa
Si tu sistema de webhooks de canal todavía está en la versión obsoleta, se mostrará un recordatorio de actualización cada vez que ingreses al entorno del canal.
Crear Webhooks
- Para agregar un webhook a tu canal, selecciona "+ Crear un nuevo webhook".
- Ingresa la URL del webhook y selecciona los eventos a los que deseas suscribirte. Finalmente, haz clic en "Confirmar" para confirmar la configuración del webhook.
- Después de cerrar el modal anterior, recuerda "Guardar" nuevamente la configuración del entorno.
Editar Webhooks
- Para editar tu webhook, haz clic en "más" y selecciona "Editar".
- Recuerda "Confirmar" los cambios realizados en el webhook existente.
Eliminar Webhooks
Para eliminar tu webhook, haz clic en "más" y selecciona "Eliminar".
Menú Avanzado
- El nuevo sistema de webhooks del canal también admite el envío de metadatos de miembros y encabezados personalizados. Para aplicarlos a tu webhook, selecciona "Mostrar Menú Avanzado".
- Entonces, podrás ver las secciones de Metadatos de Miembro y Encabezados Personalizados.
- Después de completar todos los valores requeridos, puedes hacer clic en "Confirmar" para confirmar la configuración.
Última actualización el 4/17/2024