JS API виджета
Управляйте виджетом программно — настройка, события, интеграция и расширенные сценарии.
Быстрый старт
Вставьте код на все страницы сайта — перед закрывающим тегом </head> или </body>. Замените ВАШ_ORG_ID на ID из раздела «Настройки» в кабинете.
HTML<script>
// Конфигурация — задаётся до загрузки скрипта
window.SvyazioConfig = {
orgId: "ВАШ_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>
Все вызовы Svyazio(...) до загрузки скрипта автоматически встают в очередь и выполняются после инициализации. API безопасен для асинхронного использования.
Конфигурация
Объект window.SvyazioConfig (или алиас window.SvyazioSetup) должен быть задан до загрузки скрипта. Параметры переопределяют настройки из панели администратора.
Внешний вид
| Параметр | Тип | По умолч. | Описание |
|---|---|---|---|
buttonStyle | 'round' | 'tab' | 'round' | Стиль кнопки чата. |
buttonPosition | string | 'br' | Позиция кнопки: bl, bc, br, lt, lm, lb, rt, rm, rb. |
buttonSize | number | 60 | Размер круглой кнопки (px). |
chatWidth | number | 400 | Ширина окна чата (мин. 280px). |
chatHeight | number | 600 | Высота окна чата (мин. 300px). |
zIndex | number | 999999 | z-index виджета. |
accentColor | string | из настроек | Цвет акцента, например '#6C63FF'. |
colors | object | — | Цветовая схема (см. setColors). |
Поведение
| Параметр | Тип | По умолч. | Описание |
|---|---|---|---|
startHidden | boolean | false | Скрыть виджет при загрузке. Показать через Svyazio('show'). |
disabledOnMobile | boolean | false | Не показывать на мобильных. |
mobileOnly | boolean | false | Показывать только на мобильных. |
disableChatOpenHash | boolean | false | Отключить управление URL-хэшем #svyazioChatExpanded. |
deferredLoading | boolean | false | Загружать виджет после полной загрузки страницы. |
customWidgetButton | string | — | CSS-селектор кастомной кнопки. Стандартная кнопка скрывается. |
Текст виджета
| Параметр | Тип | Описание |
|---|---|---|
headerText | string | Заголовок окна чата. |
welcomeText | string | Приветственный текст при первом открытии. |
onlineTitle | string | Подзаголовок, когда агенты онлайн. |
offlineTitle | string | Подзаголовок, когда агенты офлайн. |
offlineText | string | Текст, когда никого нет в сети. |
Язык и локаль
| Параметр | Тип | Описание |
|---|---|---|
locale | string | object | Код языка ('ru', 'en', 'es', 'pt') или объект с оверрайдами строк интерфейса. |
language | string | Алиас для locale. |
Данные посетителя
| Параметр | Тип | Описание |
|---|---|---|
clientId | string | Уникальный ID пользователя из вашей системы — объединяет историю между устройствами и сессиями. |
groupId | string | ID отдела для маршрутизации обращений (Настройки → Отделы). |
Коллбэки
| Параметр | Тип | Описание |
|---|---|---|
onNewMessage | function(msg) | При каждом новом сообщении. msg: { id, text, createdAt, type } |
onAnalyticEvent | function(eventName) | При аналитических событиях виджета. |
Пример расширенной конфигурации:
JSwindow.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
buttonPosition: "br",
chatWidth: 380,
startHidden: true,
language: "ru",
groupId: "abc123",
clientId: "user_42",
headerText: "Служба поддержки",
colors: { buttonBg: "#6C63FF", buttonText: "#fff" },
onNewMessage: function(msg) {
console.log("Новое:", msg.text, "от", msg.type);
}
};
SvyazioIntegration
Альтернатива методу setIntegrationData — передайте данные о пользователе до загрузки виджета.
HTML<script>
window.SvyazioIntegration = {
name: "Иван Иванов",
email: "ivan@example.com",
phone: "+7 999 123 45 67",
plan: "pro", // произвольные поля
userId: "12345"
};
</script>
<script async src="https://app.svyazio.ru/widget/svyazio.js"></script>
Открытие по ссылке
Добавьте хэш #svyazioChatExpanded к любой ссылке — при клике автоматически откроется чат:
HTML<a href="#svyazioChatExpanded">Написать нам</a>
<button onclick="location.hash='#svyazioChatExpanded'">Задать вопрос</button>
Хэш добавляется в URL при открытии, чтобы кнопка «Назад» закрывала чат — как в нативных приложениях.
Видимость и состояние
Открыть окно чата. true — сфокусировать поле ввода.
JSSvyazio('openChat');
Svyazio('openChat', true); // с фокусом
Аналог openChat, но игнорирует вызов на мобильных. Удобно для десктопных триггеров.
JSSvyazio('expandWidget', true);
Свернуть окно чата. Оба метода — алиасы.
JSSvyazio('minimizeWidget');
Svyazio('closeChat'); // алиас
Полностью скрыть виджет (кнопку и окно). Восстановить через show().
JSSvyazio('hide');
Показать виджет после hide() или startHidden: true.
JSSvyazio('show');
Данные посетителя
Полностью перезаписывает данные посетителя. Поля: name, email, phone, notes и любые произвольные.
JSSvyazio('setIntegrationData', {
name: "Иван Иванов",
email: "ivan@example.com",
phone: "+7 999 123 45 67",
plan: "pro",
userId: "12345"
});
Частично обновляет данные (merge). null — удалить поле.
JSSvyazio('updateIntegrationData', { email: "new@example.com" });
Svyazio('updateIntegrationData', { phone: null }); // удалить
Позиция и размер
Переместить кнопку в одну из 9 позиций: bl, bc, br (низ), lt, lm, lb (лево), rt, rm, rb (право).
JSSvyazio('setButtonPosition', 'bl'); // снизу слева
Svyazio('resetButtonPosition'); // вернуть из конфига
Изменить диаметр круглой кнопки в пикселях.
JSSvyazio('setButtonSize', 72);
Ширина окна чата (минимум 280px).
JSSvyazio('setChatWidth', 350);
Высота окна чата (минимум 300px).
JSSvyazio('setChatHeight', 500);
Изменить z-index — если что-то перекрывает виджет на странице.
JSSvyazio('setZIndex', 99999);
Цвета
Изменить цветовую схему на лету. Поля: buttonBg, buttonText, clientBubbleBg, agentBubbleBg.
JSSvyazio('setColors', {
buttonBg: '#6C63FF',
buttonText: '#fff',
clientBubbleBg: '#7C74FF'
});
Вернуть исходные цвета из конфига.
JSSvyazio('resetColors');
Язык
Переключить язык интерфейса. Доступны: 'ru', 'en', 'es', 'pt'.
JSSvyazio('setLanguage', 'en');
Svyazio('setLanguage', 'es');
Строка — переключить язык. Объект — переопределить отдельные строки интерфейса.
JSSvyazio('setLocale', 'ru');
// Переопределить строки
Svyazio('setLocale', {
chat: { input: { placeholder: "Напишите сообщение..." } }
});
Действия
Отправить автосообщение от имени агента. Автоматически открывает чат. Идеально для триггерных сценариев.
JSSvyazio('sendAutoMessage', 'Привет! Чем могу помочь? 👋');
// Через 30 секунд после загрузки
setTimeout(function() {
Svyazio('sendAutoMessage', 'Нужна помощь? Мы онлайн!');
}, 30000);
Отправить событие просмотра страницы. Обязательно в SPA при смене маршрута.
JS// React Router
useEffect(() => { Svyazio('pageView'); }, [location.pathname]);
// Vue Router
router.afterEach(() => { Svyazio('pageView'); });
Направить обращение в отдел. null — сбросить маршрутизацию.
JSSvyazio('setGroupId', 'abc123ef');
Svyazio('setGroupId', null); // сброс
Жизненный цикл
Перезапустить виджет — читает актуальный SvyazioConfig заново. Используется при смене пользователя.
JSwindow.SvyazioConfig.clientId = 'new_user_id';
Svyazio('restart');
Полностью уничтожить виджет: удаляет DOM, закрывает WebSocket. После kill() восстановление без перезагрузки невозможно.
Используйте только если нужно полностью удалить виджет до следующей перезагрузки.
JSSvyazio('kill');
Коллбэки
onNewMessage
JSwindow.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
onNewMessage: function(msg) {
// msg.id, msg.text, msg.createdAt (ms), msg.type: "agent"|"client"|"bot"
console.log(msg);
}
};
// Пример: счётчик непрочитанных в title
let unread = 0;
window.SvyazioConfig.onNewMessage = function(msg) {
if (msg.type === 'agent' || msg.type === 'bot') {
document.title = '(' + (++unread) + ') ' + document.title;
}
};
onAnalyticEvent
JSwindow.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
onAnalyticEvent: function(eventName) {
// Google Analytics 4
gtag('event', eventName, { event_category: 'Live Chat' });
// Яндекс.Метрика
if (window.ym) {
ym(XXXXXX, 'reachGoal', 'CHAT_' + eventName.toUpperCase());
}
}
};
Примеры сценариев
Показать чат через N секунд
JSsetTimeout(function() {
Svyazio('show');
Svyazio('openChat');
}, 15000);
Передать данные после авторизации
JSfunction onUserLogin(user) {
Svyazio('setIntegrationData', {
name: user.name,
email: user.email,
plan: user.plan,
clientId: 'user_' + user.id
});
}
VIP-клиентов — в приоритетный отдел
JSif (currentUser.plan === 'enterprise') {
Svyazio('setGroupId', 'vip_dept_id');
}
Скрыть на определённых страницах
JSif (window.location.pathname === '/checkout') {
Svyazio('hide');
} else {
Svyazio('show');
}
Кастомная кнопка
HTML<button id="my-chat-btn">Написать в поддержку</button>
<script>
window.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
customWidgetButton: "#my-chat-btn"
};
</script>
clientId — история между устройствами
JSwindow.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
clientId: "user_" + currentUser.id
};
clientId должен быть постоянным для пользователя. Не используйте случайные или временные значения.
Миграция с Chatra
Большинство методов Chatra JS API поддерживаются в Связио. Для переноса кода достаточно переименовать объекты и вызовы:
- Замените
ChatraSetup→SvyazioSetup - Замените
ChatraIntegration→SvyazioIntegration - Замените все вызовы
Chatra('метод')→Svyazio('метод')
Основные методы — openChat, hide, show, setIntegrationData, sendAutoMessage и другие — реализованы и работают. Часть редких методов Chatra может отсутствовать — уточните в сводной таблице.
Все методы
| Метод | Аргументы | Описание |
|---|---|---|
openChat | focus? | Открыть чат |
expandWidget | focus? | Открыть (только десктоп) |
minimizeWidget | — | Свернуть чат |
closeChat | — | Алиас minimizeWidget |
hide | — | Скрыть виджет |
show | — | Показать виджет |
setIntegrationData | data | Установить данные (перезапись) |
updateIntegrationData | data | Обновить данные (merge) |
setButtonPosition | code | Переместить кнопку |
resetButtonPosition | — | Вернуть позицию из конфига |
setButtonSize | size | Размер кнопки (px) |
setChatWidth | width | Ширина окна (px) |
setChatHeight | height | Высота окна (px) |
setZIndex | value | z-index виджета |
setColors | colors | Изменить цвета |
resetColors | — | Сбросить цвета |
setLanguage | code | Переключить язык |
setLocale | code | object | Язык или оверрайд строк |
sendAutoMessage | text | Автосообщение от агента |
pageView | — | Трекинг страницы (SPA) |
setGroupId | id | null | Направить в отдел |
restart | — | Перезапустить виджет |
kill | — | Уничтожить виджет |