Все ноды/Integrations/Calendar

Планирование в календаре

PUT планирующего сообщения (приглашение/ответ/отмена) в настроенный outbox.

Планирование в календаре
Calendar storeSuccess
Error

Тип в графе: calendar_schedule

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
Планирование в календаре
Конфигурация CalDAV
Выход
  • Исполнение
  • Данные
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.

Как применять

Отправляет участникам iTIP-сообщение — приглашение, ответ на приглашение или отмену — через планирующий outbox сервера. Событие в календаре нода не создаёт: сначала Записать событие календаря, потом эта нода, чтобы разослать приглашение.

Работает не везде. Нужны две вещи сразу: заполненный «URL исходящих» в CalDAV-подключении и сервер, который поддерживает планирование по RFC 6638. iCloud и Google CalDAV его не поддерживают, и нода отказывает до запроса, называя провайдера; провайдер определяется по базовому URL подключения.

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

Тело сообщения собирается так же, как в записи события: из полей — обязательны «Заголовок» и «Начало» — либо из готового поля «Тело iCalendar», которое выигрывает у полей, пока оно непустое. Свойство METHOD проставляет сама нода по выбранной операции: приглашение → REQUEST, ответ → REPLY, отмена → CANCEL.

Готовое сообщение кладётся в коллекцию исходящих. На выходе { "ok": true }: это значит, что сервер принял сообщение к отправке, а не что участники его получили.

Частые ошибки

  • Пустой URL исходящих. Нода остановится с кодом VALIDATION. Поле живёт в настройках интеграции CalDAV, а не на ноде, — поправьте подключение и запустите заново.
  • Ожидание, что событие появится в календаре. Планирование только рассылает сообщение. Создаёт встречу Записать событие календаря.
  • Ответ или отмена без UID исходного события. REPLY и CANCEL адресуются к конкретной встрече: подставьте её UID в поле «UID события», например {{ nodes.<get>.output.summary.uid }}, иначе получатели увидят постороннее сообщение.
  • Не заполнен организатор. Большинство серверов требуют ORGANIZER у приглашения и отвергают сообщение без него. Поле — в разделе дополнительных.
  • Некому отправлять. Без участников сообщение уходит в никуда: адреса перечисляются в поле «Участники» через запятую или с новой строки.

Входы

ПортПроводДанныеПримечания
Calendar storecalendar_storeДанныеdata

обязателен

Выходы

ПортПроводДанныеПримечания
SuccessoutputИсполнение + данныеexecute_dataobject
Erroron_errorИсполнение + данныеexecute_data

показывается, когда expose_error_output = true

Настройки

ПолеТипПо умолчаниюОписание
Подключение CalDAVconnection_idstring""

Сохранённое подключение CalDAV из воркспейса: простому календарному воркфлоу не нужна отдельная нода CalDAV Config. Нода, подключённая к порту 'calendar_store', имеет приоритет над этим полем.

подключение: caldavперекрывается портом: calendar_store

Операция планированияoperationstringinvite

Метод iTIP, который отправляется: приглашение (REQUEST), ответ (REPLY) или отмена (CANCEL). Требуется подключение с URL планирующего outbox; iCloud и Google CalDAV планирование не реализуют вовсе.

Варианты: invite — Приглашение (REQUEST), reply — Ответ (REPLY), cancel — Отмена (CANCEL)

Тело событияbody_modestringfields

Как формируется тело iCalendar: из полей ниже или из готового iCalendar-документа. Непустое сырое тело используется независимо от этой настройки.

Варианты: fields — Собрать из полей, raw — Сырой iCalendar

Заголовокsummarystring""

Заголовок события (SUMMARY). Обязателен при сборке из полей.

поддерживает шаблоны

показывается при body_mode = fields

Началоdtstartstring""

Начало, ISO 8601 (2026-07-01T10:00:00Z) или просто дата (2026-07-01) для события на весь день. Обязательно при сборке из полей.

поддерживает шаблоны

показывается при body_mode = fields

Окончаниеdtendstring""

Конец, ISO 8601. Пусто — длительность определяет сервер.

поддерживает шаблоны

показывается при body_mode = fields

Событие на весь деньall_daybooleanfalse

Записать DTSTART/DTEND как даты (VALUE=DATE), а не как время.

показывается при body_mode = fields

Местоlocationstring""

Место в свободной форме (LOCATION), например название переговорной или ссылка на встречу.

поддерживает шаблоны

показывается при body_mode = fields

Описаниеdescriptionstring""

Текст описания события (DESCRIPTION).

поддерживает шаблоны

показывается при body_mode = fields

Тело iCalendaricsstring""

Готовый iCalendar-документ (VCALENDAR с одним VEVENT). Пока он непустой, он выигрывает у полей выше — очистите его, чтобы вернуться к сборке из полей. Обязан содержать UID и DTSTAMP: без них серверы отклоняют событие.

поддерживает шаблоны

Дополнительно
Часовой поясtimezone_idstring""

Часовой пояс IANA для времени, заданного без смещения, например Europe/Moscow. Пусто — такое время считается UTC.

поддерживает шаблоны

показывается при body_mode = fields

Правило повторенияrrulestring""

RRULE по RFC 5545 без имени свойства, например FREQ=WEEKLY;BYDAY=MO;COUNT=10. Пусто — одиночное событие.

поддерживает шаблоны

показывается при body_mode = fields

Участникиattendeesstring""

Адреса email через запятую или с новой строки. Записываются как свойства ATTENDEE.

поддерживает шаблоны

показывается при body_mode = fields

Организаторorganizerstring""

Email организатора (ORGANIZER). Большинство серверов требуют его для приглашений.

поддерживает шаблоны

показывается при body_mode = fields

UID событияevent_uidstring""

Постоянный идентификатор события. Пусто — будет сгенерирован. Чтобы обновить или отменить существующее событие, укажите его UID.

поддерживает шаблоны

показывается при body_mode = fields

Статусevent_statusstringnone

Свойство STATUS события. «Не задан» — свойство в событие не пишется.

Варианты: none — Не задан, CONFIRMED — Подтверждено, TENTATIVE — Предварительно, CANCELLED — Отменено

показывается при body_mode = fields

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.