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

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

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

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

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

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

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

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

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

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

Рисунок 1

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

Важно!!! В данной инструкции используйте название переменных именно client_name и client_phone!

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

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

Рисунок 2

При каждом вызове мы передаем параметр "client_type":"#{client_type}" - это необходимо для того, что функция могла определить в каком мессенджере идет общение, и если это будет мессенджер не поддерживающий кнопки она будет выводить текстовый цифровой выбор вариантов. При первом вызове мы передаем в параметрах id гугл-таблицы, в которую будет производиться запись.

{"client_type":"#{client_type}", "id": "id вашей таблицы"}

Если вы хотите использовать несколько листов в таблице (например для записи к разным мастерам) вам нужно скопировать имеющийся в таблице лист столько раз сколько вам нужно. И передавать в функцию при каждом вызове два дополнительных параметра

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

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

Для примера: так будут выглядеть параметры при первом вызове

{"client_type":"#{client_type}", "id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "list": "2", "list_id": "1727441620"}

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

Параметры вызова:

{"client_type":"#{client_type}", "id": "id вашей таблицы", "day": "#{day1}"}

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

{"client_type":"#{client_type}", "id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "day": "#{day1}", "list": "2", "list_id": "1727441620"}

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

Рисунок 3

В следующем блоке мы выводим клавиатуру с выбором свободного времени либо текстовый выбор для мессенджеров без кнопок (Рисунок 4)

Рисунок 4

Далее мы сохраняем в стрелке выбранное время в переменную #{time2}

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

{"client_type":"#{client_type}", "id": "id вашей таблицы", "day": "#{day1}", "time": "#{time2}", "name": "#{client_name}", "phone":"#{client_phone}", "knop": "#{knop}"}

либо в случае с несколькими листами:

{"client_type":"#{client_type}", "id": "id вашей таблицы", "day": "#{day1}", "time": "#{time2}", "name": "#{client_name}", "phone":"#{client_phone}", "list": "2", "list_id": "1727441620", "knop": "#{knop}"}

функция производит запись в таблицу в выбранный день на выбранное время и возвращает статус 1 (запись успешна), выбранный день и выбранное время, также дополнительно возвращаются данные ячейки в которую была произведена запись Рисунок 5

Рисунок 5

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

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

‘’delta”: “3”.

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

“day_for_show”: “20”

Пример:

{ "client_type":"#{client_type}", "id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "list": "2", "list_id": "1727441620", “day_for_show”: “20” }

UPD. Поправлен механизм отсечения прошедшего времени Добавлена проверка на свободность ячейки непосредственно перед записью. Это предотвратит одновременную запись разными пользователями Добавлены несколько дополнительных параметров которые возвращает функция: event_date - дата на которую осуществлена запись note_time - время за 6 часов до события. для напоминания note_day - дата дня за день до события. для напоминания cell_col и cell_row - данные ячейки в которую была произведена запись Добавлен дополнительный параметр client_field при последнем вызове функции в него можно поместить любую дополнительную информацию и она добавится к имени и телефону при записи в ячейку Также добавлена вспомогательная функция https://store.salebot.pro/function/cellerase с помощью нее можно стереть сделанную запись. Принимает параметры вот такого вида. Ничего не возвращает, просто стирает данные в выбранной ячейке {"id": "1JysraU1Bzn3Etyt6_TYSwz1Y7_mEPfgkQnb7BHEm3_0", "row": "#{row}", "col": "#{col}", "list": "2", "list_id": "1727441620" } Добавлены стрелки кнопки возврата к выбору дней из блока выбора времени, на случай если в выбранном дне нет подходящего времени. А также кнопка возврата к выбору дней из блока успешной записи для того, что бы пользователь мог изменить время записи если он передумал. В этом случае стрелка проходит через дополнительный блок с вызовом функции https://store.salebot.pro/function/cellerase куда вы передаете параметры таблицы и листа, в который была произведена запись, и параметры ячейки, в которую была произведена запись.

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

Типичные ошибки при работе с функцией записи. Данные не заносятся в таблицу: Возможные причины: 1. Созданная таблица не открыта для редактирования. решение: открыть доступ к таблице для редактирования 2. Ошибки в передаваемых параметрах. решение: внимательно проверяйте правильность передаваемых параметров 3. Не сохранены переменные day1 и time2 в стрелках Решение: сохранить эти переменные. В стрелках исходящих из блока выбора дня и блока выбора времени должно быть так

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