enВойти в Senler

Выбор дня и времени кнопками

Шаги day_choices и time_choices возвращают готовый массив choice_buttons для динамических кнопок сообщения. Шаг находит варианты; сообщение показывает их, а ваша схема решает, что делать после нажатия.

Как связать блоки

Откуда Куда сохранить Где использовать
day_choices.choice_buttons run.yclients_day_buttons Источник динамических кнопок сообщения выбора дня.
Нажатая кнопка дня run.yclients_day_choice Из её value.date получить дату для time_choices.date.
time_choices.choice_buttons run.yclients_time_buttons Источник динамических кнопок сообщения выбора времени.
Нажатая кнопка времени run.yclients_time_choice Из её value.datetime получить время для создания записи.
next_cursor каждого поиска Отдельная переменная дней или времени Вход cursor следующего вызова того же поиска.

В сообщении включите сохранение нажатой кнопки в переменную. Для основного продолжения используйте выход выбора динамической кнопки. Клиент видит её текст, а схема читает точные значения из value.

Первая страница и продолжение

До первого поиска создайте переменные продолжения дней и времени со значением пустой строки. Для поиска ближайших дней date_from можно передать пустым: отсчёт начнётся с сегодняшней даты в часовом поясе филиала. Сохраните возвращённый date_from для следующих страниц.

page_size задаёт от 1 до 10 вариантов на странице. По умолчанию показываются 5 дней или 6 времён. Диапазон поиска дней range_days — от 1 до 31, по умолчанию 14.

После поиска сохраните next_cursor. Когда нужно продолжение, вызовите тот же шаг с этим значением в cursor и прежними параметрами. Это может сделать кнопка «Ещё», текстовая команда или любая другая ветка схемы. Шаг сам не ждёт и не обрабатывает нажатия.

has_more показывает, есть ли следующая страница. Чтобы не предлагать пустое продолжение, по этому признаку выбирайте сообщение с кнопкой «Ещё» или без неё. Статическая кнопка не скрывается автоматически. Продолжение после последнего варианта не возвращает первую страницу.

Не смешивайте cursor с ненулевым offset. Для новых схем используйте choice_buttons: поле buttons оставлено для старого варианта со встроенной кнопкой продолжения.

Новый день и ручная дата

При смене услуги, мастера или диапазона очистите продолжение дней и времени. При выборе другого дня очистите продолжение времени. Иначе старый cursor не будет соответствовать новому поиску.

Можно добавить собственную кнопку «Другая дата» и запросить дату текстом. Шаги выбора понимают YYYY-MM-DD, ДД.ММ.ГГГГ, ДД.ММ, «сегодня», «завтра», «послезавтра». Для ДД.ММ, уже прошедшего в текущем году, выбирается следующий год. Невозможная или явно прошедшая дата ведёт в invalid_date.

Перед созданием записи

Выбор дня и времени не равен согласию на запись. Покажите клиенту итог, получите имя и телефон и добавьте отдельное подтверждение перед create_booking_v2.

Отключите повторные нажатия на кнопки одного сообщения, чтобы старый выбор не запускал второй путь. Возвраты и «Ещё» проводите через ограниченные циклы. При отсутствии дней предложите другой диапазон или мастера; при отсутствии времени — другой день.