Para Desarrolladores

API JS del Widget

Controla el widget de forma programática — configuración, eventos, integración y escenarios avanzados.

Inicio Rápido

Inserta este código en todas las páginas de tu sitio — antes del cierre de </head> o </body>. Reemplaza TU_ORG_ID con el ID de la sección Configuración de tu panel.

HTML<script>
  // Configuración — establecer antes de cargar el script del widget
  window.SvyazioConfig = {
    orgId: "TU_ORG_ID"
  };
  window.Svyazio = window.Svyazio || function() {
    (window.Svyazio.q = window.Svyazio.q || []).push(arguments);
  };
</script>
<script async src="https://app.svyazio.ru/widget/svyazio.js"></script>
Cola de Comandos

Todas las llamadas a Svyazio(...) realizadas antes de que el script cargue se añaden automáticamente a la cola y se ejecutan tras la inicialización. La API es segura para uso asíncrono.

Configuración

El objeto window.SvyazioConfig (o alias window.SvyazioSetup) debe establecerse antes de que el script cargue. Los parámetros anulan la configuración del panel de administración.

Apariencia

ParámetroTipoPor defectoDescripción
buttonStyle'round' | 'tab''round'Estilo del botón de chat.
buttonPositionstring'br'Posición del botón: bl, bc, br, lt, lm, lb, rt, rm, rb.
buttonSizenumber60Tamaño del botón redondo (px).
chatWidthnumber400Ancho de la ventana de chat (mín. 280px).
chatHeightnumber600Alto de la ventana de chat (mín. 300px).
zIndexnumber999999Z-index del widget.
accentColorstringdesde ajustesColor de acento, p.ej. '#6C63FF'.
colorsobjectEsquema de colores (ver setColors).

Comportamiento

ParámetroTipoPor defectoDescripción
startHiddenbooleanfalseOcultar widget al cargar. Muéstralo con Svyazio('show').
disabledOnMobilebooleanfalseNo mostrar en dispositivos móviles.
mobileOnlybooleanfalseMostrar solo en dispositivos móviles.
disableChatOpenHashbooleanfalseDesactivar control por hash URL #svyazioChatExpanded.
deferredLoadingbooleanfalseCargar widget tras carga completa de la página.
customWidgetButtonstringSelector CSS para botón personalizado. El botón predeterminado se ocultará.

Texto del Widget

ParámetroTipoDescripción
headerTextstringTítulo del encabezado de la ventana de chat.
welcomeTextstringTexto de bienvenida al abrir el chat.
onlineTitlestringSubtítulo cuando los agentes están en línea.
offlineTitlestringSubtítulo cuando los agentes están fuera de línea.
offlineTextstringTexto cuando no hay nadie en línea.

Idioma y Región

ParámetroTipoDescripción
localestring | objectCódigo de idioma ('ru', 'en', 'es', 'pt') o un objeto con anulaciones de cadenas de interfaz.
languagestringAlias de locale.

Datos del Visitante

ParámetroTipoDescripción
clientIdstringID único del usuario en tu sistema — une el historial entre dispositivos y sesiones.
groupIdstringID del departamento para enrutar conversaciones (Configuración → Departamentos).

Callbacks

ParámetroTipoDescripción
onNewMessagefunction(msg)Con cada nuevo mensaje. msg: { id, text, createdAt, type }
onAnalyticEventfunction(eventName)Con eventos analíticos del widget.

Ejemplo completo de configuración:

JSwindow.SvyazioConfig = {
  orgId: "TU_ORG_ID",
  buttonPosition: "br",
  chatWidth: 380,
  startHidden: true,
  language: "es",
  groupId: "abc123",
  clientId: "usuario_42",
  headerText: "Soporte Técnico",
  colors: { buttonBg: "#6C63FF", buttonText: "#fff" },
  onNewMessage: function(msg) {
    console.log("Nuevo:", msg.text, "de", msg.type);
  }
};

SvyazioIntegration

Alternativa al método setIntegrationData — pasa datos del usuario antes de que cargue el widget.

HTML<script>
  window.SvyazioIntegration = {
    name: "Juan García",
    email: "juan@ejemplo.com",
    phone: "+34 600 000 000",
    plan: "pro",     // campos personalizados
    userId: "12345"
  };
</script>
<script async src="https://app.svyazio.ru/widget/svyazio.js"></script>

Abrir por Enlace

Añade el hash #svyazioChatExpanded a cualquier enlace — al hacer clic se abrirá el chat automáticamente:

HTML<a href="#svyazioChatExpanded">Contáctanos</a>

<button onclick="location.hash='#svyazioChatExpanded'">Hacer una pregunta</button>
En Móviles

El hash se añade a la URL cuando el chat se abre, por lo que el botón Atrás cierra el chat — igual que en las apps nativas.

Visibilidad y Estado

Svyazio('openChat', focus?)

Abre la ventana de chat. true — enfoca el campo de entrada.

JSSvyazio('openChat');
Svyazio('openChat', true); // con foco
Svyazio('expandWidget', focus?)

Similar a openChat, pero ignora las llamadas en móviles. Útil para disparadores de escritorio.

JSSvyazio('expandWidget', true);
Svyazio('minimizeWidget')  /  Svyazio('closeChat')

Minimiza la ventana de chat. Ambos métodos son alias del mismo.

JSSvyazio('minimizeWidget');
Svyazio('closeChat'); // alias
Svyazio('hide')

Oculta completamente el widget (botón y ventana). Restáuralo con show().

JSSvyazio('hide');
Svyazio('show')

Muestra el widget después de hide() o startHidden: true.

JSSvyazio('show');

Datos del Visitante

Svyazio('setIntegrationData', data)

Sobrescribe completamente los datos del visitante. Campos: name, email, phone, notes y cualquier campo personalizado.

JSSvyazio('setIntegrationData', {
  name: "Juan García",
  email: "juan@ejemplo.com",
  phone: "+34 600 000 000",
  plan: "pro",
  userId: "12345"
});
Svyazio('updateIntegrationData', data)

Actualiza parcialmente los datos (merge). Pasa null para eliminar un campo.

JSSvyazio('updateIntegrationData', { email: "nuevo@ejemplo.com" });
Svyazio('updateIntegrationData', { phone: null }); // eliminar

Posición y Tamaño

Svyazio('setButtonPosition', code)

Mueve el botón de chat en la pantalla. Códigos disponibles: bl, bc, br, lt, lm, lb, rt, rm, rb.

JSSvyazio('setButtonPosition', 'bl'); // izquierda inferior
Svyazio('setButtonPosition', 'rt'); // derecha superior
Svyazio('setButtonSize', size)

Cambia el diámetro del botón redondo (px). Mín. 40, máx. 100.

JSSvyazio('setButtonSize', 72);
Svyazio('setChatWidth', width)

Define el ancho de la ventana de chat (px, mín. 280).

JSSvyazio('setChatWidth', 480);
Svyazio('setChatHeight', height)

Define el alto de la ventana de chat (px, mín. 300).

JSSvyazio('setChatHeight', 700);
Svyazio('setZIndex', value)

Cambia el z-index del widget. Útil si los menús superponen al widget.

JSSvyazio('setZIndex', 100);

Colores

Svyazio('setColors', colors)

Anula la paleta de colores del widget en tiempo real. Ideal para el cambio dinámico entre modo claro/oscuro.

JSSvyazio('setColors', {
  buttonBg: '#6C63FF',
  buttonText: '#fff',
  clientBubbleBg: '#e8e5ff',
  agentBubbleBg: '#f4f4f5'
});
Svyazio('resetColors')

Restablece los colores a los valores predeterminados de la configuración.

JSSvyazio('resetColors');

Idioma

Svyazio('setLanguage', code)

Cambia el idioma de la interfaz del widget. Disponibles: 'ru', 'en', 'es', 'pt'.

JSSvyazio('setLanguage', 'es');
Svyazio('setLanguage', 'en');
Svyazio('setLocale', code | object)

Establece el idioma o anula las cadenas de la interfaz. Pasa un código de idioma o un objeto con textos personalizados.

JSSvyazio('setLocale', 'es');
Svyazio('setLocale', {
  placeholder: 'Escribe tu mensaje…',
  headerTitle: 'Soporte'
});

Acciones

Svyazio('sendAutoMessage', text)

Muestra un mensaje automático del bot en la ventana de chat. Solo visible para el visitante, no se envía a los agentes hasta que el visitante responda.

JSSvyazio('sendAutoMessage', '¡Hola! ¿Necesitas ayuda con tu pedido?');
Svyazio('pageView')

Registra una vista de página manualmente. Útil en apps SPA donde la URL cambia sin recargar la página.

JSSvyazio('pageView');
Svyazio('setGroupId', id | null)

Enruta nuevas conversaciones a un departamento específico. Pasa null para restablecer al valor predeterminado.

JSSvyazio('setGroupId', 'id_depto_ventas');
Svyazio('setGroupId', null); // restablecer

Ciclo de Vida

Svyazio('restart')

Reinicia el widget manteniendo la configuración. Útil en apps SPA tras cambios de ruta.

JSSvyazio('restart');
Svyazio('kill')

Destruye completamente el widget: elimina los elementos del DOM y cierra WebSocket. No se puede restaurar sin recargar la página.

Operación Irreversible

Úsalo solo si necesitas eliminar completamente el widget hasta el próximo recargo de página.

JSSvyazio('kill');

Callbacks

onNewMessage

JSwindow.SvyazioConfig = {
  orgId: "TU_ORG_ID",
  onNewMessage: function(msg) {
    // msg.id, msg.text, msg.createdAt (ms), msg.type: "agent"|"client"|"bot"
    console.log(msg);
  }
};

// Ejemplo: contador de no leídos en el título
let noLeidos = 0;
window.SvyazioConfig.onNewMessage = function(msg) {
  if (msg.type === 'agent' || msg.type === 'bot') {
    document.title = '(' + (++noLeidos) + ') ' + document.title;
  }
};

onAnalyticEvent

JSwindow.SvyazioConfig = {
  orgId: "TU_ORG_ID",
  onAnalyticEvent: function(eventName) {
    // Google Analytics 4
    gtag('event', eventName, { event_category: 'Live Chat' });

    // Mixpanel / Amplitude
    if (window.mixpanel) {
      mixpanel.track('chat_' + eventName);
    }
  }
};

Ejemplos de Uso

Mostrar chat después de N segundos

JSsetTimeout(function() {
  Svyazio('show');
  Svyazio('openChat');
}, 15000);

Pasar datos tras el inicio de sesión

JSfunction alIniciarSesion(usuario) {
  Svyazio('setIntegrationData', {
    name: usuario.name,
    email: usuario.email,
    plan: usuario.plan,
    clientId: 'usuario_' + usuario.id
  });
}

Enrutar clientes VIP al departamento prioritario

JSif (usuarioActual.plan === 'enterprise') {
  Svyazio('setGroupId', 'id_depto_vip');
}

Ocultar en páginas específicas

JSif (window.location.pathname === '/pago') {
  Svyazio('hide');
} else {
  Svyazio('show');
}

Botón personalizado

HTML<button id="mi-btn-chat">Contactar Soporte</button>

<script>
  window.SvyazioConfig = {
    orgId: "TU_ORG_ID",
    customWidgetButton: "#mi-btn-chat"
  };
</script>

clientId — historial entre dispositivos

JSwindow.SvyazioConfig = {
  orgId: "TU_ORG_ID",
  clientId: "usuario_" + usuarioActual.id
};
Importante

clientId debe ser permanente para el usuario. No uses valores aleatorios o temporales.

Migración desde Chatra

La mayoría de los métodos del API JS de Chatra son compatibles con Svyazio. Migrar tu código solo requiere renombrar objetos y llamadas:

  1. Reemplaza ChatraSetupSvyazioSetup
  2. Reemplaza ChatraIntegrationSvyazioIntegration
  3. Reemplaza todas las llamadas Chatra('método')Svyazio('método')
La migración toma solo unos minutos

Los métodos principales — openChat, hide, show, setIntegrationData, sendAutoMessage y otros — están implementados y funcionan. Algunos métodos raros de Chatra pueden no estar disponibles — consulta la tabla de referencia.

Todos los Métodos

MétodoArgumentosDescripción
openChatfocus?Abrir chat
expandWidgetfocus?Abrir (solo escritorio)
minimizeWidgetMinimizar chat
closeChatAlias de minimizeWidget
hideOcultar widget
showMostrar widget
setIntegrationDatadataDatos del visitante (sobrescribir)
updateIntegrationDatadataDatos del visitante (merge)
setButtonPositioncodeMover botón
resetButtonPositionRestablecer posición
setButtonSizesizeTamaño del botón (px)
setChatWidthwidthAncho de ventana (px)
setChatHeightheightAlto de ventana (px)
setZIndexvalueZ-index del widget
setColorscolorsAnular colores
resetColorsRestablecer colores
setLanguagecodeCambiar idioma
setLocalecode | objectIdioma o textos personalizados
sendAutoMessagetextMensaje automático del bot
pageViewRegistrar página (SPA)
setGroupIdid | nullEnrutar a departamento
restartReiniciar widget
killDestruir widget