События и аналитика
Обработчики событий задаются функциями в SvyazioConfig. Ошибку внутри обработчика виджет молча перехватывает, чтобы не сломать чат, — для отладки оборачивайте код в try/catch с console.error.
onNewMessage — новое сообщение
Вызывается, когда в открытой странице появляется новое сообщение оператора или бота — в том числе автоответ и сообщение триггера. Собственные сообщения посетителя и история, загруженная при открытии страницы, обработчик не вызывают.
window.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
serverUrl: "https://app.svyazio.ru",
onNewMessage: function (message) {
// message = {
// id: "3f1c…",
// text: "Здравствуйте! Чем помочь?",
// createdAt: 1758528000000, // время в миллисекундах
// type: "agent" // "agent" или "bot"
// }
}
};| Поле | Тип | Что содержит |
|---|---|---|
id | string | ID сообщения. |
text | string | Текст сообщения. У сообщения только с вложением может быть пустым. |
createdAt | number | Время отправки в миллисекундах — подходит для new Date(createdAt). |
type | 'agent' | 'bot' | Кто написал: оператор или бот (автоответ, триггер, чат-бот). |
Пример: счётчик непрочитанных в заголовке вкладки, пока посетитель на другой вкладке.
var baseTitle = document.title;
var unread = 0;
window.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
serverUrl: "https://app.svyazio.ru",
onNewMessage: function (message) {
if (message.type !== 'agent' || !document.hidden) return;
unread += 1;
document.title = '(' + unread + ') ' + baseTitle;
}
};
// Посетитель вернулся на вкладку — убираем счётчик
document.addEventListener('visibilitychange', function () {
if (!document.hidden) {
unread = 0;
document.title = baseTitle;
}
});onAnalyticEvent — события для аналитики
Обработчик получает название события строкой. Событий два:
| Событие | Когда приходит |
|---|---|
Widget loaded | Виджет загрузился и появился на странице. Не приходит, если виджет выключен в панели, не подходит устройство или посетитель заблокирован. |
Chat initiated by visitor | Чат открыт методом openChat, expandWidget или setExpanded, своей кнопкой из customWidgetButton, ссылкой #svyazioChatExpanded или кликом по карточке входящего сообщения оператора. Не отправляют: клик по стандартной кнопке виджета, всплывающее приветствие (тизер), автооткрытие и триггеры из панели. Повторный openChat на уже открытом чате отправляет событие ещё раз — учитывайте это, если считаете по нему цели. |
Пример: цели в Яндекс Метрике и событие в Google Analytics 4.
window.SvyazioConfig = {
orgId: "ВАШ_ORG_ID",
serverUrl: "https://app.svyazio.ru",
onAnalyticEvent: function (name) {
// Яндекс Метрика: цели «chat_loaded» и «chat_opened» создайте в интерфейсе Метрики
if (typeof ym === 'function') {
if (name === 'Widget loaded') ym(12345678, 'reachGoal', 'chat_loaded');
if (name === 'Chat initiated by visitor') ym(12345678, 'reachGoal', 'chat_opened');
}
// Google Analytics 4
if (typeof gtag === 'function') {
gtag('event', 'svyazio_chat', { action: name });
}
},
onNewMessage: function (message) {
// Первый ответ оператора на этой странице — отдельная цель
if (message.type === 'agent' && !window.__svyazioReplied) {
window.__svyazioReplied = true;
if (typeof ym === 'function') ym(12345678, 'reachGoal', 'chat_reply');
}
}
};Код установки в примерах сокращён до объекта настроек. Полностью — в разделе «Установка», скрипт — https://app.svyazio.ru/widget/svyazio.js.