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

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

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

Пример использования: парикмахерские/салоны красоты, автомойки, рестораны.

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

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

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

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

ВАЖНО! Шаблон таблицы работает на скриптах, и скрипт обращается к таблице по "образцу", поэтому ее вид должен быть как в оригинальном примере!

НЕЛЬЗЯ вносить существенные изменения в таблицу, иначе не исключено, что это приведет к ошибкам работы!

Устанавливаем шаблон в разделе "Шаблоны" под названием "Запись на прием":

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

Переменные с примера на рис. 2

zapis_function_url: https://store.salebot.pro/function/zapisnapriem sheet_id: 1Oihm2p7H1Ut0Kr51GCO2JqZlckU9OC2T3Y7bgX0gJ3glist: 0

list_id: 0

day_for_show: 7

back: Назад;0

messengers_with_buttons: ["0", "1", "2", "5", "8"]

buttons_type: inline

back_btn_text = Назад

ПеременнаяЗначение переменной

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

кнопка назад и условие перехода

back_btn_text

текст для кнопки возврата

messengers_with_buttons

идентификатор мессенджеров, у которых дни и время будет выводится кнопками (https://docs.salebot.pro/peremennye-1/peremennye#znacheniya-client_type)

buttons_type

тип кнопок, по умолчанию reply. Если желаете кнопки типа inline, то значение данной переменной прописываете inline и меняете тип кнопок в блоках 1,2,3, указанных на общей схеме бота ниже (№ 1 ниже на рис. 3).

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

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

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

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

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

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

! Тип запроса: 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 и т. д.

Видео-инструкция

Last updated