Перейти к основному содержимому

Google Календарь

Действие Google Календарь позволяет управлять календарями и событиями: создавать, изменять, удалять, проверять занятость и синхронизировать события.

Что потребуется
  • Сервисный Google-аккаунт — подробнее в отдельной статье Google Календарь.
  • ID календаря — получите его одним из способов:
    • Создайте новый календарь через операцию Календарь: добавить (кнопка «Выполнить сейчас») и сохраните id из ответа.
    • Используйте существующий календарь — привяжите почту сервисного аккаунта к этому календарю и возьмите id из его настроек.

Список операций​

События​

ОперацияЧто делает
Событие: получитьЧтение данных события по ID.
Событие: добавитьСоздание нового события.
Событие: изменитьОбновление полей события.
Событие: удалитьУдаление события.
Событие: получить списокСписок событий календаря.
Событие: перенести в другой календарьПеремещение события между календарями.
Событие: настройка уведомленийПодписка на изменения календаря. Гугл будет сам сообщать боту, что в календаре что-то поменялось. Возвращает номер канала уведомлений, номер ресурса и срок жизни подписки.
Событие: обновление уведомленийПродление подписки: старая закрывается, открывается новая. Подписка живёт ограниченный срок, дальше уведомления просто перестают приходить.
Событие: синхронизацияЧто именно изменилось с прошлого раза. Работает по nextSyncToken: возвращает только новые правки, а не весь календарь.
Проверка занятостиПроверка занятости в указанном интервале.

Обратная синхронизация: админ правит календарь — бот узнаёт​

Записать клиента в календарь бот умеет обычными операциями. Обратный путь — когда сотрудник сам создал или удалил событие прямо в Гугл Календаре — устроен иначе: Гугл присылает уведомление, а бот идёт за подробностями.

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

Как это работает​

  1. Подписка. Операция «Событие: настройка уведомлений» подписывает бота на календарь. В ответ приходят номер канала, номер ресурса и срок жизни подписки — сохраните их в список рядом с календарём.
  2. Куда Гугл стучит. Адресом подписки служит вебхук сценария. Такой сценарий начинается действием «Обмен данными» → «Ожидание данных» и запускается не блоком, а входящим запросом. Заголовки лежат в #{_request_headers}, тело — в #{_request}.
  3. Первое уведомление пропускают. Сразу после подписки Гугл шлёт пустое рукопожатие с состоянием sync — это не изменение.
  4. Что изменилось. В уведомлении события нет, только «в календаре что-то поменялось». По номеру канала находите свой календарь и спрашиваете операцией «Событие: синхронизация» с сохранённым nextSyncToken — вернутся только правки. Новый токен сразу запишите обратно в список.
  5. Разбор. status: cancelled — событие удалили: снимите слот и пометьте запись отменённой. Иначе это новая запись: заведите её, если строки с таким идентификатором события ещё нет.
  6. Продление. Подписка живёт ограниченный срок. Отдельное расписание для этого не нужно: в конце того же сценария сравните срок с сегодняшним днём и, если пора, продлите операцией «Событие: обновление уведомлений».
Уведомления повторяются

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

Событий может быть несколько сразу

Синхронизация возвращает список правок: сотрудник мог подвинуть три записи подряд. Разбирайте все элементы, а не последний.

Кого предупредить

Запись, сделанную мастером в календаре, клиент не создавал — ему сообщать не о чем. А сотрудникам нужного офиса стоит: найдите их в списке и отправьте сообщение в бот. Пометка «запись администратором» в строке потом отличит её от клиентской.

Перенос бота в другой аккаунт

Адрес вебхука сценария принадлежит аккаунту. После переноса бота адрес меняется, и подписку в Гугле нужно создать заново — старая будет стучать в никуда.


Календари​

ОперацияЧто делает
Календарь: получитьЧтение данных календаря.
Календарь: добавитьСоздание нового календаря.
Календарь: изменитьОбновление параметров календаря.
Календарь: удалитьУдаление календаря.
Списки: получить всеСписок всех календарей.

Как настроить операцию​

  1. Выберите нужную операцию, например Событие: добавить.
  2. Заполните настройки события — все поля необязательны.
  3. В конце укажите переменные для сохранения результата:
    • ID события — для последующих операций (изменение, удаление),
    • JSON-ответ — полный ответ сервера для парсинга,
    • Результат — статус успеха операции.

Добавление события


Подробнее о работе с Google Календарём

По использованию Google Календаря в боте есть отдельная статья — Google Календарь. Там описаны создание сервисного аккаунта, подключение API и работа с календарями.

Совет

Операции Календарь: добавить, Календарь: удалить, Списки: получить все можно выполнять прямо из аккаунта конструктора кнопкой «Выполнить сейчас» — без сохранения сценария.