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>
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ámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
buttonStyle | 'round' | 'tab' | 'round' | Estilo del botón de chat. |
buttonPosition | string | 'br' | Posición del botón: bl, bc, br, lt, lm, lb, rt, rm, rb. |
buttonSize | number | 60 | Tamaño del botón redondo (px). |
chatWidth | number | 400 | Ancho de la ventana de chat (mín. 280px). |
chatHeight | number | 600 | Alto de la ventana de chat (mín. 300px). |
zIndex | number | 999999 | Z-index del widget. |
accentColor | string | desde ajustes | Color de acento, p.ej. '#6C63FF'. |
colors | object | — | Esquema de colores (ver setColors). |
Comportamiento
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
startHidden | boolean | false | Ocultar widget al cargar. Muéstralo con Svyazio('show'). |
disabledOnMobile | boolean | false | No mostrar en dispositivos móviles. |
mobileOnly | boolean | false | Mostrar solo en dispositivos móviles. |
disableChatOpenHash | boolean | false | Desactivar control por hash URL #svyazioChatExpanded. |
deferredLoading | boolean | false | Cargar widget tras carga completa de la página. |
customWidgetButton | string | — | Selector CSS para botón personalizado. El botón predeterminado se ocultará. |
Texto del Widget
| Parámetro | Tipo | Descripción |
|---|---|---|
headerText | string | Título del encabezado de la ventana de chat. |
welcomeText | string | Texto de bienvenida al abrir el chat. |
onlineTitle | string | Subtítulo cuando los agentes están en línea. |
offlineTitle | string | Subtítulo cuando los agentes están fuera de línea. |
offlineText | string | Texto cuando no hay nadie en línea. |
Idioma y Región
| Parámetro | Tipo | Descripción |
|---|---|---|
locale | string | object | Código de idioma ('ru', 'en', 'es', 'pt') o un objeto con anulaciones de cadenas de interfaz. |
language | string | Alias de locale. |
Datos del Visitante
| Parámetro | Tipo | Descripción |
|---|---|---|
clientId | string | ID único del usuario en tu sistema — une el historial entre dispositivos y sesiones. |
groupId | string | ID del departamento para enrutar conversaciones (Configuración → Departamentos). |
Callbacks
| Parámetro | Tipo | Descripción |
|---|---|---|
onNewMessage | function(msg) | Con cada nuevo mensaje. msg: { id, text, createdAt, type } |
onAnalyticEvent | function(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>
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
Abre la ventana de chat. true — enfoca el campo de entrada.
JSSvyazio('openChat');
Svyazio('openChat', true); // con foco
Similar a openChat, pero ignora las llamadas en móviles. Útil para disparadores de escritorio.
JSSvyazio('expandWidget', true);
Minimiza la ventana de chat. Ambos métodos son alias del mismo.
JSSvyazio('minimizeWidget');
Svyazio('closeChat'); // alias
Oculta completamente el widget (botón y ventana). Restáuralo con show().
JSSvyazio('hide');
Muestra el widget después de hide() o startHidden: true.
JSSvyazio('show');
Datos del Visitante
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"
});
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
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
Cambia el diámetro del botón redondo (px). Mín. 40, máx. 100.
JSSvyazio('setButtonSize', 72);
Define el ancho de la ventana de chat (px, mín. 280).
JSSvyazio('setChatWidth', 480);
Define el alto de la ventana de chat (px, mín. 300).
JSSvyazio('setChatHeight', 700);
Cambia el z-index del widget. Útil si los menús superponen al widget.
JSSvyazio('setZIndex', 100);
Colores
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'
});
Restablece los colores a los valores predeterminados de la configuración.
JSSvyazio('resetColors');
Idioma
Cambia el idioma de la interfaz del widget. Disponibles: 'ru', 'en', 'es', 'pt'.
JSSvyazio('setLanguage', 'es');
Svyazio('setLanguage', 'en');
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
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?');
Registra una vista de página manualmente. Útil en apps SPA donde la URL cambia sin recargar la página.
JSSvyazio('pageView');
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
Reinicia el widget manteniendo la configuración. Útil en apps SPA tras cambios de ruta.
JSSvyazio('restart');
Destruye completamente el widget: elimina los elementos del DOM y cierra WebSocket. No se puede restaurar sin recargar la página.
Ú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
};
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:
- Reemplaza
ChatraSetup→SvyazioSetup - Reemplaza
ChatraIntegration→SvyazioIntegration - Reemplaza todas las llamadas
Chatra('método')→Svyazio('método')
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étodo | Argumentos | Descripción |
|---|---|---|
openChat | focus? | Abrir chat |
expandWidget | focus? | Abrir (solo escritorio) |
minimizeWidget | — | Minimizar chat |
closeChat | — | Alias de minimizeWidget |
hide | — | Ocultar widget |
show | — | Mostrar widget |
setIntegrationData | data | Datos del visitante (sobrescribir) |
updateIntegrationData | data | Datos del visitante (merge) |
setButtonPosition | code | Mover botón |
resetButtonPosition | — | Restablecer posición |
setButtonSize | size | Tamaño del botón (px) |
setChatWidth | width | Ancho de ventana (px) |
setChatHeight | height | Alto de ventana (px) |
setZIndex | value | Z-index del widget |
setColors | colors | Anular colores |
resetColors | — | Restablecer colores |
setLanguage | code | Cambiar idioma |
setLocale | code | object | Idioma o textos personalizados |
sendAutoMessage | text | Mensaje automático del bot |
pageView | — | Registrar página (SPA) |
setGroupId | id | null | Enrutar a departamento |
restart | — | Reiniciar widget |
kill | — | Destruir widget |