Сниппет и глобал LiveContext()
Универсальный способ установки для любого сайта без сборки. Один <script>
подгружает виджет чата и открывает глобальную функцию-очередь window.LiveContext(...)
для событий и идентификации.
Установка
Вставьте перед закрывающим тегом </body>, подставив свой
публичный ключ pk_live_…:
<script>
(function(w,d,s,u){w.LiveContext=w.LiveContext||function(){(w.LiveContext.q=w.LiveContext.q||[]).push(arguments)};
var j=d.createElement(s);j.type='module';j.async=true;j.src=u;d.head.appendChild(j);
})(window,document,'script','https://livecontext.ru/embed/embed.js');
LiveContext('init','pk_live_ВАШ_КЛЮЧ',{apiUrl:'https://livecontext.ru'});
</script> Сниппет асинхронный: команды, вызванные до загрузки скрипта, копятся в очереди
LiveContext.q и выполняются после инициализации. Порядок вызовов сохраняется.
Команды
Все команды вызываются как LiveContext(команда, ...аргументы).
init
Инициализация. Первый аргумент — публичный ключ, второй — необязательные опции.
LiveContext('init', 'pk_live_ВАШ_КЛЮЧ', { apiUrl: 'https://livecontext.ru' }); | Опция | Тип | Описание |
|---|---|---|
apiUrl | string | База API. Можно опустить при same-origin установке. |
page
Просмотр страницы. Отправляется автоматически при загрузке; вызывайте вручную в SPA после смены роута.
LiveContext('page');
LiveContext('page', { section: 'pricing' }); track
Произвольное событие: имя и необязательные свойства.
LiveContext('track', 'added_to_cart', { product: 'Стол Осло', price: 12990 }); identify
Связать анонимную сессию с известным пользователем. Вызывайте после логина — вся предыдущая история склеится с профилем контакта.
LiveContext('identify', 'user-42', { email: 'anna@shop.ru', name: 'Анна' }); Третий аргумент — userHash (HMAC-подпись userId секретным
ключом организации) для верификации личности. Подпись считается на сервере.
set
Кастомный атрибут контакта. Значение — string | number | boolean | Date | null
(Date уходит как ISO-8601, null — сброс атрибута).
LiveContext('set', 'plan', 'pro');
LiveContext('set', 'is_vip', true);
LiveContext('set', 'trial_ends', new Date('2026-08-15'));
LiveContext('set', 'plan', null); // сброс reset
Логаут: отправляет хвост буфера и начинает новую анонимную сессию (новый
anonymous_id). Вызывайте, когда пользователь выходит из аккаунта.
LiveContext('reset'); Как это работает
- SDK хранит
anonymous_idвlocalStorage(fallback — cookie). - События буферизуются и уходят пакетами (
POST /ingest/v1/batch); при обрыве сети — повтор с backoff, идемпотентность поmessageId. - Хвост буфера досылается через
sendBeaconпри закрытии вкладки.
Приложения со сборкой
Для React / Vue / Next вместо глобала удобнее типизированный
npm-пакет @livecontextapp/sdk — тот же транспорт,
но с автодополнением и типами.