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