Ganchos Web

Ganchos Web

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.
  1. Usando el algoritmo HMAC-SHA256 con el secreto del canal como clave secreta, calcula el resumen para el cuerpo de la solicitud.
  2. 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

PropiedadTipoDescripción
TipoCadenaPuede ser BOT o MANUAL. Indica si el mensaje saliente es del chatbot o de la API/difusión.
MiembroCadenaID del miembro
CanalCadenaID del canal
AppCadenaID de la App
MetaObjetoapiSource que incluye información de la integración de origen
Datos Extras de MiembroObjetoDatos adicionales del miembro y una ruta válida del miembro
Datos de encabezados personalizadosObjetoClave de encabezado personalizado y valor de encabezado personalizado
Eventos de MensajeObjetoObjeto messageEvent que contiene el mensaje normalizadomessageEvent

Propiedad

Tipo

Descripción
DeCadenaID del remitente
ACadenaID del destinatario
Marca de tiempoNumeroMarca de tiempo Unix
TipoCadenaTipo de Mensaje 
FechsObjetoDatos del mensaje para el tipo de mensaje correspondiente
MensajeldCadenaID del mensaje desde la plataforma externa (esta propiedad podría no existir)

_fuente_

PrioridadTipoDescripción
ID de integraciónCadenaTipo de integración de origen
ConstruirNúmeroVersión de la integración
App de IntegraciónCadenaID 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 miembroactualización de estado de suscripción del miembro, actualización de estado de chat en vivo del miembro, actualización de metadatos del miembroactualización de datos temporales del miembroactualización de etiquetas del miembro.

cuerpo

PropiedadTipoDescripción
Tipo de EventoCadenaACTUALIZACIÓN DE MIEMBRO
Nombre de FuncónCadenaNORMAL_UPDATE_MEMBER: actualizar manualmente al miembro en la página de miembros;
BOT_UPDATE_MEMBER: actualizar el miembro con el Bot 
MiembroCadenaID del miembro
CanalCadenaID del canal
AppCadenaID de la App
AntesObjetoEstado del miembro antes del cambio
DespuésObjetoEstado 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     TipoDescripción
Tipo de Evento CadenaBATCH_MEMBER_UPDATE
Nombre de la funciónCadenaLa función de ac tualización or lotes incluye: OPEN_API_BATCH_CREATE_CHATOPEN_API_UPDATE_MEMBERSOPEN_API_BATCH_UPDATE_MEMBERSNORMAL_UPDATE_MEMBERSBATCH_ADD_TAGSBATCH_DELETE_TAGSBATCH_REPLACE_TAGS
MiembrosArregloArreglo de IDs de miembros 
CanalesCadenaID del canal
AppCadenaID de la App
ActualizarObjetoDetalles 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

PropiedadTipoDescripción
Tipo de EventoCadenaNODE_TRIGGER
AppCadenaID de la App
CanalCadenaID del Canal
MiembroCadenaID de los Miembros
Marca de tiempoCadenaTiempo en que se activa el nodo
NodoCadenaID del Nodo
ID compuestoCadenaID único de un nodo
ÁrbolCadenaID del Árbol
Evento de mensajeObjetoObjeto 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

  1. Para agregar un webhook a tu canal, selecciona "+ Crear un nuevo webhook".
  1. 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.
  1. Después de cerrar el modal anterior, recuerda "Guardar" nuevamente la configuración del entorno.

Editar Webhooks

  1. Para editar tu webhook, haz clic en "más" y selecciona "Editar".
  1. 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

  1. 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".
  1. Entonces, podrás ver las secciones de Metadatos de Miembro y Encabezados Personalizados.
  1. 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