Программное управление (JS API)
Виджет можно открывать не только по своей кнопке, но и из кода вашего сайта. Это нужно, например, чтобы кнопка «Записаться онлайн» на сайте открывала онлайн-запись, или если вы выбрали режим «Только JS API» (без кнопки виджета - см. Внешний вид).
После установки кода на странице появляется dialogi. Это функция: любой метод можно вызвать и напрямую, и по имени - dialogi.booking.open() и dialogi('booking.open') делают одно и то же.
Методы открытия окон
dialogi.booking.open() // открыть онлайн-запись
dialogi.chat.open() // открыть чат с Нейро
dialogi.neuro.open() // то же окно чата
dialogi.perezvoni.open() // открыть форму обратного звонка
dialogi.open('booking') // то же, что dialogi.booking.open()
dialogi.open() // первый канал кнопки виджета
dialogi.booking.close() // закрыть окно записи
dialogi.close() // закрыть все окна виджета
Вызывайте нужный метод из обработчика на своём элементе. Пример - открыть запись по клику на свою кнопку:
<button onclick="dialogi.booking.open()">Записаться онлайн</button>
Открывая запись, виджет закрывает чат: оба окна живут в одном месте у кнопки виджета.
Запись на нужную услугу
Окно записи можно открыть сразу на нужной услуге, специалисте, точке или дне:
dialogi.booking.open({
service_id: '…', // услуга
resource_id: '…', // специалист или объект аренды; 'any' - любой свободный
branch_id: '…', // точка, если их несколько
date: '2026-10-12', // день, с которого показать свободное время
})
Все параметры необязательны. Чего нет среди доступного для онлайн-записи (услугу удалили или скрыли, у специалиста нет этой услуги), виджет пропускает: окно откроется без этого выбора, ошибки не будет. Дата в прошлом и несуществующая дата тоже пропускаются. Точка, если её не назвали, берётся по специалисту.
Идентификаторы услуг, специалистов и точек отдаёт публичный API: GET /v1/services, GET /v1/resources, GET /v1/branches.
Кнопка без скрипта
Ссылке или кнопке на сайте достаточно атрибута data-dialogi-open - код писать не нужно:
<a href="/zapis" data-dialogi-open="booking">Записаться онлайн</a>
Значение атрибута - окно: booking (запись), chat (чат), neuro (тот же чат), perezvoni (обратный звонок). Параметры записи задаются атрибутами:
<a href="/zapis"
data-dialogi-open="booking"
data-dialogi-service="…"
data-dialogi-resource="…"
data-dialogi-branch="…"
data-dialogi-date="2026-10-12">Записаться к Анне</a>
Как работает такая ссылка:
- клик открывает окно виджета, со страницы посетитель не уходит;
- если модуль окна у виджета выключен или виджет не загрузился, ссылка ведёт по своему адресу
href- оставьте там страницу с контактами или формой записи; - клик с Ctrl, Cmd или Shift открывает ссылку в новой вкладке или окне, как обычно;
- кнопки, которые сайт добавил на страницу позже, тоже работают.
Вызов до загрузки виджета
Код виджета загружается асинхронно и не тормозит страницу. Команды, которые сайт отдал раньше, чем виджет загрузился, не теряются: они выполнятся сразу после загрузки.
Пока не загрузился сам скрипт виджета (обычно доли секунды после открытия страницы), работает только вызов по имени - dialogi('booking.open', {...}). Поэтому в коде, который выполняется при загрузке страницы, используйте его. В обработчике клика подходят оба вызова: к моменту клика скрипт уже на странице.
Если окно не открывается
Метод сработает только для того окна, чей модуль включён в возможностях виджета. Например, dialogi.booking.open() откроет запись, если включён модуль «Запись». Если модуль выключен, окно не откроется, а в консоли браузера появится предупреждение [dialogi] booking.open: у виджета не включён модуль «Запись», окно не откроется. Ошибки на странице при этом нет, остальные скрипты сайта работают.
Важно в режиме «Только JS API»
Если у виджета выбран режим «Только JS API», собственной кнопки виджета на сайте нет. Пока в вашем коде нет вызовов dialogi.*.open() или кнопок с data-dialogi-open, посетители не увидят виджет. Убедитесь, что разработчик подключил вызовы к нужным элементам сайта.