API JavaScript
Referencia de window.DiloEmbed — setContext, reload y protocolo postMessage.
Tras cargar embed.js, el objeto global window.DiloEmbed expone métodos para controlar el iframe sin recargar tu página.
DiloEmbed.setContext(ctx)
Actualiza tenant, contacto del usuario y recarga el iframe con los parámetros correctos.
DiloEmbed.setContext(ctx: {
clientId?: string // UUID del cliente en Dilo
externalId?: string // id_en_tu_sistema del partner
ctx?: string // Token firmado de POST /api/embed/context
contact?: {
name?: string
email?: string
phone?: string
}
}): voidTenant (empresa)
DiloEmbed.setContext({ externalId: 'acme_corp_42' })const { token } = await fetch('/tu-api/dilo-context').then((r) => r.json())
DiloEmbed.setContext({ ctx: token })Contacto (nombre, email, teléfono)
Omite en el formulario los pasos que ya conoces — p. ej. «¿Cuál es tu nombre?» si pasas contact.name:
window.DiloEmbed.setContext({
externalId: user.tenant.externalId,
contact: {
name: user.fullName,
email: user.email,
phone: user.phone,
},
})Ver la guía completa: Contexto y contacto.
DiloEmbed.reload()
Recarga el iframe con la URL actual (mismo flow + contexto). Útil tras logout/login en tu app o para reiniciar una sesión de flow.
DiloEmbed.reload()Eventos postMessage (iframe → padre)
El flow embebido notifica cambios de altura al documento padre:
| Campo | Tipo | Descripción |
|---|---|---|
type | 'dilo:resize' | Identificador del evento |
flowId | string | UUID del flow |
height | number | Altura en píxeles (mín. 120, máx. 3200 aplicado en embed.js) |
embed.js valida que event.origin coincida con el origen del script antes de aplicar el resize.
URL del iframe
El loader construye:
{origin}/f/{flowId}?embed=1
{origin}/f/{flowId}?embed=1&client={uuid}
{origin}/f/{flowId}?embed=1&external_id={id}
{origin}/f/{flowId}?embed=1&ctx={token}
{origin}/f/{flowId}?embed=1&contact_name={nombre}
{origin}/f/{flowId}?embed=1&contact_email={email}
{origin}/f/{flowId}?embed=1&contact_phone={tel}
Puedes combinar tenant y contacto en la misma URL. Puedes abrir esa URL en vista previa, pero se recomienda embed.js para burbuja, resize y API.
Disponibilidad
DiloEmbed existe después de que el script se ejecuta. Si llamas métodos antes de cargar el embed:
if (window.DiloEmbed?.setContext) {
DiloEmbed.setContext({ externalId: tenantId })
}Próximo: API REST
La referencia HTTP (POST /api/embed/context, clientes, webhooks) se publicará en API REST cuando esté lista para integraciones server-to-server documentadas.