Broker (postMessage)
Protocolo postMessage entre la consola de Videsk y tu app embebida. Aquí está el contrato completo: handshake, payloads y patrones de uso.
El broker es el canal de mensajería entre la consola y tu iframe. Está implementado con la API estándar postMessage; no se requiere ninguna librería ni SDK.
Todos los mensajes del protocolo usan el prefijo videsk: en el campo type. Mensajes con otro type o sin él se ignoran.
Handshake e init
Cuando tu iframe termina de cargar, la consola envía el primer mensaje. Como no siempre está garantizado que tu app haya registrado su message listener antes del load, tu app puede pedir el init explícitamente con videsk:ready.
El mensaje videsk:init se entrega tanto al load del iframe como cada vez que recibimos un videsk:ready. Es seguro (e idempotente) escuchar siempre videsk:init.
Mensajes
Host → App
type
Payload
Cuándo se envía
videsk:init
{ type, context }
Al load del iframe y como respuesta a videsk:ready.
El campo context contiene los bloques que declaraste en contextScopes (ver Configuración y Plantillas para el detalle de cada campo).
App → Host
type
Payload
Efecto
videsk:ready
{ type }
Pide el videsk:init al host.
videsk:resize
{ type, height: number }
Ajusta la altura del iframe a height píxeles.
videsk:emit
{ type, event: string, payload: any }
Notifica un evento de negocio al host (ver patrones más abajo).
Validación de origen
El host valida el event.origin de cada mensaje contra el origin de la iframe.url configurada. Por ejemplo, si configuraste:
Solo se aceptan mensajes provenientes de https://apps.example.com. Mensajes de cualquier otro origen se descartan.
Por simetría, te recomendamos validar también el origen en tu app antes de actuar sobre un mensaje. Los dominios oficiales de Videsk son https://console.videsk.io y https://app.videsk.io.
Patrones de uso
El broker resuelve dos casos de uso muy distintos. Identifica primero cuál aplica a tu app antes de diseñar el flujo.
Patrón A: broker como habilitador
El broker entrega un dato puntual (token, sessionId, id de cliente) y, a partir de ahí, tu app vive sola: hace sus propias llamadas a tu backend, autentica al usuario, etc. La consola es solo el detonante.
Cuándo usarlo:
La app tiene su propia sesión y solo necesita saber "quién es el agente" o "qué llamada es".
Tu backend es la fuente de verdad y la consola no necesita enterarse de lo que pasa dentro.
Quieres un flujo simple: una vez inicializado, no hay más mensajes.
Patrón B: broker como canal continuo
La app y el host conversan durante toda la llamada. La app emite eventos cuando ocurren cosas relevantes (ej. "lead creado", "ticket cerrado") y/o ajusta su altura cuando su contenido cambia.
Cuándo usarlo:
El agente debe ver feedback en tiempo real (resize, notificaciones).
Quieres registrar acciones del agente en el contexto de la llamada de Videsk.
La altura de tu UI cambia y necesitas que el iframe se acomode.
Los dos patrones no son excluyentes: una app puede recibir un token vía videsk:init (Patrón A) y, además, emitir eventos durante su uso (Patrón B).
Buenas prácticas
No codifiques datos sensibles en la URL. Si tu app necesita un token, considera generarlo desde tu backend en lugar de pasarlo por query string. Como segunda opción, recíbelo por el
videsk:init.Filtra siempre por
type. Otros scripts de la página (extensiones del navegador, librerías) también pueden emitirmessage. Verifica queevent.data.type === 'videsk:init'antes de leer.No spamees
videsk:resize. Úsalo cuando la altura realmente cambia (conResizeObservero equivalente). Decenas de mensajes por segundo degradan la consola.Usa
contextScopesmínimos. Solo recibirás los bloques que declaras: pedir todo "por si acaso" expone datos innecesarios a tu app.
Última actualización
¿Te fue útil?

