После загрузки скрипта Jivo становится доступен глобальный объект. Вызывайте методы внутри — к этому моменту виджет гарантированно готов. (jivo_api → jivo_onLoadCallback())
jivo_api.open(params) / jivo_api.close()
Открывает чат в указанном режиме или закрывает/сворачивает. Параметр start: 'call', 'menu', 'chat'.
<button onclick="jivo_api.open()">Написать нам</button>
<button onclick="jivo_api.open({ start: 'call' })">Заказать звонок</button>
jivo_api.chatMode()
Возвращает текущий режим: (операторы доступны) или 'online' / 'offline'.
function jivo_onLoadCallback() {
if (jivo_api.chatMode() === 'online') {
document.getElementById('chat-btn').style.display = 'block';
}
}
jivo_api.setContactInfo(obj)
Передаёт данные о клиенте в виджет — оператор видит их в карточке посетителя.
jivo_api.setContactInfo({
name: 'Иван Петров',
email: 'ivan@example.com',
phone: '+79001234567'
});
jivo_api.getContactInfo()
Возвращает контактные данные посетителя, которые уже есть в виджете.
var info = jivo_api.getContactInfo();
// { name: '...', email: '...', phone: '...' }
jivo_api.setCustomData(arr)
Передаёт произвольные данные о посетителе — оператор видит их в карточке клиента.
jivo_api.setCustomData([
{ title: 'Тариф', content: 'Pro' },
{ title: 'ID клиента', content: '12345' }
]);
jivo_api.setClientAttributes(obj)
Устанавливает произвольные атрибуты посетителя в виде пар ключ-значение. Лимит: 10 вызовов в час.
jivo_api.setClientAttributes({ plan: 'enterprise', region: 'ru' });
jivo_api.getUnreadMessagesCount()
Возвращает количество непрочитанных сообщений от оператора.
var count = jivo_api.getUnreadMessagesCount();
document.getElementById('badge').textContent = count;
jivo_api.getVisitorNumber(callback)
Асинхронно возвращает уникальный номер посетителя.
jivo_api.getVisitorNumber(function(number) {
console.log('Номер посетителя:', number);
});
jivo_api.getUtm()
Возвращает UTM-параметры текущей сессии посетителя.
var utm = jivo_api.getUtm();
// { utm_source: '...', utm_medium: '...', utm_campaign: '...' }
jivo_api.isCallbackEnabled(callback)
Асинхронно проверяет, доступна ли функция обратного звонка.
jivo_api.isCallbackEnabled(function(enabled) {
if (enabled) showCallButton();
});
jivo_api.showProactiveInvitation(text, dept_id)
Показывает активное приглашение с заданным текстом. Опционально — направляет в конкретный отдел.
jivo_api.showProactiveInvitation('Привет! Могу помочь?');
jivo_api.setWidgetColor(color, color2)
Меняет цвет виджета (или градиент, если задан второй цвет). Цвета в формате HEX.
jivo_api.setWidgetColor('#29B05D');
jivo_api.setWidgetColor('#29B05D', '#1a8a45'); // градиент
jivo_api.startCall(phone)
Инициирует обратный звонок на указанный номер телефона.
jivo_api.startCall('+79001234567');
jivo_api.sendPageTitle(title, fromApi, url)
Отправляет оператору обновлённый заголовок страницы. Незаменимо для SPA, где URL меняется без перезагрузки.
// При навигации в SPA:
router.afterEach(function(to) {
jivo_api.sendPageTitle(to.meta.title, true, to.fullPath);
});
jivo_api.sendOfflineMessage(obj)
Отправляет офлайн-сообщение без открытия виджета — удобно для интеграции с собственной формой обратной связи.
jivo_api.sendOfflineMessage({
name: 'Иван Петров',
email: 'ivan@example.com',
message: 'Хочу узнать о тарифах'
});
jivo_api.clearHistory()
Удаляет историю переписки и локальные данные виджета (cookies, localStorage). Полезно при выходе пользователя из аккаунта.
// При выходе пользователя:
function logout() {
jivo_api.clearHistory();
// остальная логика выхода
}
jivo_destroy() / jivo_init()
Удаляет виджет со страницы или возвращает его. Полезно для страниц, где чат не нужен (например, страница оплаты).
// Скрыть виджет на странице оплаты:
if (location.pathname === '/checkout') jivo_destroy();
// Вернуть после оплаты:
jivo_init();
Кастомный ярлык виджета
На этой странице стандартная кнопка Jivo заменена на собственный ярлык — кнопка справа по центру страницы.
Стандартная кнопка скрывается через CSS, вместо неё в jivo_onLoadCallback() создаётся произвольный HTML-элемент, который вызывает jivo_api.open() по клику.
#jivo_chat_widget { display: none; }
#jivo_custom_widget {
position: fixed;
right: 24px;
top: 50%;
transform: translateY(-50%);
width: 120px;
height: 120px;
background-image: url('custom_button.png');
background-size: contain;
cursor: pointer;
z-index: 300000;
}
function jivo_onLoadCallback() {
var w = document.createElement('div');
w.id = 'jivo_custom_widget';
w.onclick = function() { jivo_api.open(); };
document.body.appendChild(w);
}
function jivo_onOpen() { document.getElementById('jivo_custom_widget').style.display = 'none'; }
function jivo_onClose() { document.getElementById('jivo_custom_widget').style.display = 'block'; }