Documentación

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.

Firma
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
  }
}): void

Tenant (empresa)

Por external ID
DiloEmbed.setContext({ externalId: 'acme_corp_42' })
Por token firmado
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:

Perfil del usuario logueado
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.

javascript
DiloEmbed.reload()

Eventos postMessage (iframe → padre)

El flow embebido notifica cambios de altura al documento padre:

CampoTipoDescripción
type'dilo:resize'Identificador del evento
flowIdstringUUID del flow
heightnumberAltura 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:

javascript
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.