Запись на прием (бронирование)

Используя данный функционал вы можете организовать запись в боте. Пример использования: парикмахерские/салоны красоты, автомойки, рестораны.

Настройка

Инструкция по использованию функции для записи на прием (собеседование)

Адрес функции:

https://store.salebot.pro/function/zapisnapriem

1. Подготавливаем таблицу для записи желтым цветом выделен id таблицы, он понадобится нам позже

Готовую к использованию таблицу можно скопировать отсюда: https://docs.google.com/spreadsheets/d/18rBAJwoYdK8vpKwGzQhT5M8cytX9drYnEiki0YxGqro/edit#gid=0

Берите за основу именно данный шаблон таблицы! В ней измените время на то, которое вам необходимо, а дату начала отсчета записи меняйте в ячейке B2!

После установки шаблона перейдите в настройки проекта и добавьте переменные

zapis_function_url=https://store.salebot.pro/function/zapisnapriem sheet_id=1-kvJ6xFkgtlgN-z57E6xu-qGQce3XgV2ko6vIi4Zszg list=0 list_id=0 day_for_show=10 back=Назад;0 messengers_with_buttons=["0", "1", "2", "5", "8"]

zapis_function_url - адрес функции sheet_id - идентификатор таблицы (выше написано где его взять) list - номер листа в таблице list_id - переходим в нужный лист и копируем окончание в адресной строке https://docs.google.com/spreadsheets/d/1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0/edit#gid=1727441620 day_for_show - количество выводимых дней для записи back - кнопка назад и условие перехода messengers_with_buttons - идентификатор мессенджеров, у которых дни и время будет выводится кнопками (https://docs.salebot.pro/peremennye-1/peremennye#znacheniya-client_type)

Общий вид схемы представлен на рисунке 1

2. Создаем участок схемы бота, который будет отвечать за получение данных от клиента и заносить в таблицу.

Схему рекомендуется начать с запроса контактных данных клиента имя и телефон. Человек может и не записаться, а данные у вас все равно останутся.

Итак первый блок у нас приветственный. Далее мы запрашиваем имя клиента и сохраняем в стрелке имя клиента в переменную client_name. Затем аналогично мы запрашиваем телефон клиента и сохраняем его в переменную client_phone (если хотите переименовать или использовать другие, то не забудьте заменить названия и в блоке Запись в таблицу)

3. Следующий блок чисто информационный.

4. Далее в следующем блоке мы осуществляем первый запрос к функции zapisnapriem (Рисунок 2)

Тип запроса: POST-json URL-запроса: #{zapis_function_url} Сохраняемые значения из ответа: day_button->day_button; text_days->text_days; days_checker->days_checker

day_button - кнопки с днями для записи text_days - список с днями, если мессенджер без кнопок days_checker - условие перехода в следующий блок

JSON POST-параметров: {"client_type":"#{client_type}", "id": "#{sheet_id}", "list": "#{list}", "list_id": "#{list_id}", "day_for_show": "#{day_for_show}", "with_buttons": "#{messengers_with_buttons}"}

client_type - тип мессенджера, передается стандартная переменная id - идентификатор таблицы (берется из переменной в настройках таблицы) list и list_id, где list - это номер листа в таблице (нумерация начинается с 0), а list_id вам нужно взять из ссылки.

Переходите в таблице на нужный вам лист и копируете часть выделенную жирным шрифтом:

https://docs.google.com/spreadsheets/d/1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0/edit#gid=1727441620

day_for_show - передаем переменную с числом (указали в настройках проекта) with_buttons - передаем переменную со списком (из настроек проекта)

Запрос проверяет наличие свободных дней в таблице и возвращает клавиатуру с выбором дня, для записи для мессенджеров без кнопок предусмотрен текстовый вывод выбора дней

Далее отправляемся в блок с выводом полученных данных, в стрелке к следующему блоку указываем полученное из запроса условие перехода days_checker

Также в этой стрелке сохраняем введенные данные в переменную #{day1}, она понадобится нам в следующем запросе. Теперь у нас есть выбранный пользователем день и следующем блоке мы вызываем функцию уже с параметром выбранного дня.

Тип запроса: POST-json URL-запроса: #{zapis_function_url} Сохраняемые значения из ответа: text_time->text_time; time_button->time_button; text_vibor->text_vibor; knop->knop; day-> front_day

JSON POST-параметров: {"client_type":"#{client_type}", "id": "#{sheet_id}", "list": "#{list}", "list_id": "#{list_id}", "day_for_show": "#{day_for_show}", "with_buttons": "#{messengers_with_buttons}"}

Функция проверяет и возвращает доступное свободное время в этот день также в виде клавиатуры для выбора либо текста для мессенджеров без кнопок, а также дополнительный параметр knop, который вам необходимо сохранить knop->knop

В следующем блоке мы выводим цифровое меню с вариантами свободного времени

Далее развилка с условием в стрелке регулярное выражение.

Если пользователь введет цифру из списка, то в следующем блоке преобразуем введенный пользователем порядковый номер времени в обозначение времени. Для этого делаем запрос к функции https://store.salebot.pro/function/zapis_position с параметрами {"knop":"#{knop}", "input": "#{time2}"}, где knop - полученный при предыдущем запросе массив доступного времени, input - введенное пользователем число цифрового меню.

В поле сохраняемые значения пишем

front_time-> front_time; status->status

Далее #{front_time} используйте для показа выбранного времени клиенту.

Если пользователь нажимает на кнопку, данные просто сохраняем.

Следующий блок это подтверждение записи.

И в следующем блоке мы осуществляем последний запрос к функции, для сохранения полученных данных в таблицу.

Тип запроса: POST-json URL-запроса: #{zapis_function_url} Сохраняемые значения из ответа: day->day; status->status; cell_row->row; cell_col->col; event_date->event_date

cell_col и cell_row - данные ячейки, в которую была произведена запись

JSON POST-параметров: {"client_type":"#{client_type}", "id": "#{sheet_id}", "list": "#{list}", "list_id": "#{list_id}", "day":"#{day1}", "time":"#{front_time}", "name":"#{client_name}", "phone":"#{client_phone}", "client_field":"#{client_field}", "knop":"#{knop}", "with_buttons": "#{messengers_with_buttons}"}

client_field - переменная, в которую было сохранено название выбранной услуги, сразу после ввода номера. Не обязательный параметр.

Если вы работаете в часовом поясе, отличным от московского времени, передавайте в функцию дополнительный параметр delta, по умолчанию он равен 3

"delta": "3"

Функция производит запись в таблицу в выбранный день на выбранное время и возвращает status (1 - запись успешна, 0 - возникла проблема), выбранный день и выбранное время, также дополнительно возвращаются данные ячейки в которую была произведена запись.

Дополнительные настройки

Если вам нужно сделать какой-то из дней или время в течении какого-то дня недоступным для записи (например выходной), просто заполните ячейки этого дня прочерком или какой-нибудь надписью например выходной.

По умолчанию функция выводит ближайшие 14 дней для записи, если вам нужно больше или меньше измените переменную day_for_show в настройках проекта.

Удаление записи

После успешной записи пользователь получает информационное сообщение и две кнопки (или список):

1 - изменить время 2 - удалить запись

При выборе одной из них запись удаляется из таблицы. Далее, если была нажата кнопка “изменить время”, то пользователя отправит на выбор дня и вновь по цепочке.

Тип запроса: POST-json URL-запроса: https://store.salebot.pro/function/cellerase

JSON POST-параметров: {"id": "#{sheet_id}", "list": "#{list}", "list_id": "#{list_id}", "row": "#{row}", "col": "#{col}"}

передаются параметры таблицы и листа, в который была произведена запись, и параметры ячейки, в которую была произведена запись.

Типичные ошибки при работе с функцией записи

Данные не заносятся в таблицу:

Возможные причины:

1. Созданная таблица не открыта для редактирования. Решение: открыть доступ к таблице для редактирования

2. Ошибки в передаваемых параметрах. решение: внимательно проверяйте правильность передаваемых параметров

3. Неверно указаны параметры листа таблицы "list" и "list_id" в настройках проекта. Следует помнить, что нумерация листов в таблице начинается с 0. Таким образом если вам нужно осуществлять запись во второй лист, то параметр list должен иметь значение 1 и т. д.

Как создать бота для салона красоты