Оформление
JavaScript API установленного бандла
Этот API работает в браузере после установки скрипта из Настройки проекта → Установка на сайт. Это не Public REST и не MCP: здесь нет X-SN-TOKEN, управление сущностями и серверный error envelope не применяются.
Минимальный запуск
Очередь ninja(...) должна получить init до start:
html
<script>
ninja('init', '<код проекта>');
ninja('start');
</script>Код проекта и имя глобальной функции копируйте из текущего сниппета кабинета. start без init завершается ошибкой; повторный start не запускает второй runtime.
Публичные задачи и методы
| Задача | Метод bundle API | Страница |
|---|---|---|
| Достичь ручной цели | reachGoal(goalId, params?) | Ручная цель |
| Реагировать на применённый onsite-вариант | onPersonalization(options) | Подписка |
| Запросить повторную проверку указанных onsite-сущностей | applyPersonalization(items?) | Ручной запуск |
| Задать/прочитать параметры пользователя | setUserParam, deleteUserParam, getUserParam, getUserParams | User params |
| Задать/прочитать параметры страницы | setPageParam, deletePageParam, getPageParam, getPageParams, clearPageParams | Page params |
| Получить идентификаторы | getCustomerId, getCustomerIdAsync, getSessionIdAsync | Используйте async-метод, если runtime ещё стартует |
| Подключить browser-вызовы Метрики | addYandexMetrika(counterId) | Метрика через бандл |
personalizationId в общем onsite-контуре может быть ID персонализации, A/B-теста или действия по правилу. Это историческое имя параметра публичного JS-контракта, а не переименование трёх продуктов.
Что не считать работающим API
addGoogleAnalytics() остаётся в классе ради старых сниппетов, но текущая реализация — no-op. Google Analytics объясняет рабочий маршрут через цель и пользовательский handler. Не документируйте закомментированный код или внутренние Process-модули как публичные методы.
Ошибки и восстановление
Методы валидируют аргументы и пишут диагностическое сообщение в консоль; единого JSON envelope у browser API нет. Для onPersonalization используйте onFallback/onTimeoutExceeded, когда бизнес- сценарию нужен fallback. Таймаут относится к вашей подписке и не доказывает, что сама сущность сломана. Ошибки REST или OAuth-подключения диагностируются в своих поверхностях.