Salebot.pro
Search
K
Comment on page

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

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

Настройка

Инструкция по использованию функции для записи на прием (собеседование)
Адрес функции:
1. Подготавливаем таблицу для записи желтым цветом выделен id таблицы, он понадобится нам позже
Готовую к использованию таблицу можно скопировать отсюда: https://docs.google.com/spreadsheets/d/18rBAJwoYdK8vpKwGzQhT5M8cytX9drYnEiki0YxGqro/edit#gid=0
Берите за основу именно данный шаблон таблицы! В ней измените время на то, которое вам необходимо, а дату начала отсчета записи меняйте в ячейке B2!
ВАЖНО! Шаблон таблицы работает на скриптах, и скрипт обращается к таблице по "образцу", поэтому ее вид должен быть как в оригинальном примере!
НЕЛЬЗЯ вносить существенные изменения в таблицу, иначе не исключено, что это приведет к ошибкам работы!
После установки шаблона перейдите в настройки проекта и добавьте переменные:
zapis_function_url: https://store.salebot.pro/function/zapisnapriem sheet_id: 1Oihm2p7H1Ut0Kr51GCO2JqZlckU9OC2T3Y7bgX0gJ3g list: 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).
Общий вид схемы представлен на рисунке 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 и т. д.