JavaScript API: справочник
После установки браузер создаёт window.FlowtomateWidget. Для передачи ID, email и событий начните с пошаговой инструкции. Здесь собраны методы, их результаты и ранняя очередь вызовов.
| Член | Результат | Для чего нужен |
|---|---|---|
version | string | Версия загруженного виджета. |
ready() | Promise<void> | Дождаться первого цикла загрузки. Завершение не доказывает, что контент получен. |
refresh() | Promise<void> | Повторно получить настройки и контент. Ошибку обработайте через try/catch. |
identify(userId, attributes?) | Promise<void> | Передать устойчивый ID пользователя и его строковые поля, включая email. |
setTraits(attributes) | Promise<void> | Обновить отдельные строковые поля уже известного пользователя. |
setConsent(state) | void | Передать 'granted', 'denied' или 'unknown' из решения пользователя. |
reset(options?) | Promise<void> | Сбросить пользователя при выходе. Опция { clearConsent: true } также убирает выбор согласия. |
track(name, properties?) | void | Передать событие; результат не подтверждает его доставку. |
openPopup(id) | Promise<boolean> | Открыть поп-ап с разрешённым ручным запуском. |
startTour(id) | Promise<StartTourResult> | Попробовать запустить тур и получить его статус. |
openChecklist(id) | void | Открыть загруженный чек-лист. |
openFeedback(idOrKey) | void | Открыть форму обратной связи по ID или ключу. |
destroy() | void | Убрать виджет со страницы. Старый объект после этого не используйте. |
У identify и setTraits значения attributes должны быть строками. Например, передайте seats: '12'. Для track допустимы и числа, логические значения, null, массивы строк или чисел. Полные ограничения есть в статье о событиях.
ready() ждёт первый цикл загрузки, но виджет обрабатывает его сетевую ошибку внутри себя. Если нужен свежий контент, вызовите await refresh() и обработайте ошибку. Перед сменой аккаунта дождитесь await reset(), затем вызывайте identify. Подробности согласия и результатов ручного открытия есть в согласии и ручном запуске.
Ранняя очередь
Если код сайта должен передать команду до загрузки widget.js, создайте очередь перед тегом виджета:
html
<script>
window.flowtomate = window.flowtomate || function (...args) {
window.flowtomate.q.push(args);
};
window.flowtomate.q = window.flowtomate.q || [];
</script>
<script async src="https://app.flowtomate.ru/widget/v1/widget.js"
data-flowtomate-key="pub_live_REPLACE_WITH_YOUR_KEY"
data-flowtomate-api="https://api.flowtomate.ru"></script>Очередь принимает identify, setTraits, setConsent, reset, track, openPopup и startTour. Пример после фактического согласия пользователя:
js
window.flowtomate('setConsent', 'granted');
window.flowtomate('identify', 'user_42', { email: 'anna@example.com' });Ранние identify, setTraits и setConsent влияют на первую загрузку. Остальные команды виджет выполняет после ready(). До загрузки скрипта очередь не возвращает результат метода; после загрузки её вызовы также не подходят для обработки ошибок. Если нужен результат openPopup, статус startTour или подтверждение завершения reset, вызывайте метод через window.FlowtomateWidget с await. Не ставьте в очередь ready, refresh, openChecklist, openFeedback, destroy или version.