Вопросы и ответы
В каком порядке вызывать методы для инициализации виджета?
Заголовок раздела «В каком порядке вызывать методы для инициализации виджета?»Порядок:
ДО run() — все setter’ы и подписки на события
window.vivo_api.setUserToken(token);window.vivo_api.setRegion('en');window.vivo_api.setContactInfo({ name, phone, email });window.vivo_api.onWidgetReady(() => { ... });window.vivo_api.onOpenStateChange((isOpen) => { ... });window.vivo_api.onUnreadCountChange((n) => { ... });window.vivo_api.onError(({ message, source }) => { ... });Запуск
window.vivo_api.run({ withIcon: true }); // withIcon: true - отобразить иконку виджетаПОСЛЕ run() — управление окном
await window.vivo_api.open();window.vivo_api.close();window.vivo_api.destroy(); // когда уходим со страницы / виджет больше не нужен
Как работает setRegion? При передаче в него локали приложения (например, «en»), приложение Vivo не переводится на английский язык при запуске.
Заголовок раздела «Как работает setRegion? При передаче в него локали приложения (например, «en»), приложение Vivo не переводится на английский язык при запуске.»На текущий момент язык виджета определяется через настройку канала в админ панели VivoChat.
setRegionпозволяет маршрутизировать обращение в выбранный канал, подробнее в «Маршрутизация обращений»
Как можно узнать, когда именно загрузилось приложение Vivo после вызова run(), чтобы мы могли показать прелоадер или дать возможность открыть виджет? Пока приложение не загрузилось, вызовы vivo_api.open() не отрабатывают.
Заголовок раздела «Как можно узнать, когда именно загрузилось приложение Vivo после вызова run(), чтобы мы могли показать прелоадер или дать возможность открыть виджет? Пока приложение не загрузилось, вызовы vivo_api.open() не отрабатывают.»onWidgetReady запустит переданный в нее
callbackпо готовности виджета.
Есть ли возможность в run() указать флаг, чтобы приложение сразу запустилось в «открытом» режиме?
Заголовок раздела «Есть ли возможность в run() указать флаг, чтобы приложение сразу запустилось в «открытом» режиме?»Чтобы приложение сразу запустилось в «открытом» режиме, необходимо вызвать
open()внутриcallbackпереданного в onWidgetReady
Можно ли вызывать методы после run(), чтобы изменить данные?
Заголовок раздела «Можно ли вызывать методы после run(), чтобы изменить данные?»Чтобы обновить данные необходимо «удалить» виджет после целевого действия конечного пользователя и инициировать виджет заново с обновленной информацией Правильный порядок вызова:
run(); // инициализация виджетаdestroy(); // удаление виджета