Интеграции: обзор

Интеграция — это сохранённое подключение к внешнему сервису: адрес сервера, логин и секрет, лежащие в рабочем пространстве, а не в графе. Нода в воркфлоу на такое подключение только ссылается; ни токена, ни пароля внутри ноды нет.

Разделение сделано ради трёх вещей. Секреты хранятся зашифрованными в отдельной колонке и наружу не отдаются: список подключений показывает только, какие поля секретов заполнены, а не их значения. Один и тот же почтовый ящик или портал CRM переиспользуется десятком воркфлоу — сменить пароль надо в одном месте. И граф можно спокойно экспортировать, показать коллеге или отдать ассистенту: в нём лежит только идентификатор подключения.

Где они заводятся

Раздел НастройкиИнтеграции. Слева список уже заведённых, справа форма выбранного. Кнопка Добавить интеграцию открывает выбор вида — вид выбирается один раз и после создания не меняется, потому что от него зависит и набор полей, и то, какие ноды увидят это подключение в своём выпадающем списке.

app.iterna.ai

Настройки

Интеграции

Роутеры моделей, LLM-провайдеры и подключения к внешним сервисам.

Добавить интеграцию
НазваниеТипСекреты
Почта поддержкиEmailпароль сохранён
amoCRM продажиamoCRMтокен сохранён
Бот магазинаTelegram botтокен сохранён
Календарь мастеровCalDAVпароль не задан
Список подключений и форма одного из них.

Поле секрета при редактировании ведёт себя не как обычное: пустое значение означает «оставить текущее», а не «стереть». Так форму можно сохранить, не вводя пароль заново, и так же сервер ни разу не отдаёт секрет обратно в браузер.

Двенадцать видов подключений

ВидЧто в нём хранитсяКто им пользуется
Emailхост IMAP/POP3 и SMTP, порты, логин, парольпочтовые ноды
WebDAVбазовый URL, логин, пароль, таймаутвнешнее файловое хранилище
CalDAVбазовый URL, логин, пароль, режим обнаружения календарейноды календаря
MCPURL сервера, тип авторизации и токен, режим работынода mcp_tool
OpenAI-совместимый провайдербазовый URL, ключ, список моделей и их назначениеноды модели, эмбеддингов, реранка
Telegram botтокен бота, имя ботаканал Telegram и его ноды
Цепочка резервных моделейпорядок моделей и условия перехода; своих секретов нетнода модели
OpenRouter (медиа)ключ APIноды распознавания речи, синтеза и картинок
Bitrix24URL входящего вебхука, опционально домен порталанода bitrix24_rest_call
amoCRMподдомен аккаунта и долгоживущий токеннода amocrm_rest_call
VKтокен доступа, версия APIнода vk_send_message
VK Teamsтокен бота, опционально базовый URL APIнода vk_teams_send_message

Столько видов знает платформа. В диалоге создания их одиннадцать: выпадающий список Тип показывает все, кроме OpenRouter (медиа) — свой ключ медиа-провайдера пользователям пока не выдают, и вид скрыт из формы вместе с выбором подключения на медиа-нодах. Сам вид при этом рабочий: уже созданное подключение такого вида показывается в списке и продолжает работать.

Проверка подключения есть не у всех

Кнопка Проверить подключение появляется ровно у трёх видов — Email, WebDAV и CalDAV. Это не недоделка, а осознанная граница: остальные подключения — HTTP-API, которые на первом же вызове отвечают внятной ошибкой провайдера («неверный токен», «нет прав»), и отдельная кнопка добавила бы поверхность, не добавив диагноза. А почта и DAV ломаются молча: до первого запуска воркфлоу никто никуда не звонит, и опечатка в хосте SMTP или пароль вместо пароля приложения обнаруживаются днями позже упавшим раном.

Что стоит знать про саму проверку:

  • она идёт по ногам, а не по подключению целиком: у почты это две независимые сессии (ящик и отправка) с разными хостами и портами, поэтому ответ бывает «IMAP работает, SMTP не пустил» — именно та диагностика, которой форма иначе не даёт;
  • проверяется сохранённая версия, а не то, что вы сейчас набрали в форме;
  • бюджет на проверку — двадцать секунд, после чего она возвращает «сервер не ответил». Так сделано намеренно: проверка держит соединение с базой на время запроса, и длинный таймаут на десятке зависших хостов выел бы пул соединений всего API;
  • текст ошибки приходит от сервера дословно, но из него вырезаются значения секретов — болтливый почтовый сервер, эхом повторяющий строку логина, не должен превращать проверку в способ посмотреть пароль.

Как нода получает подключение

Способа два, и они сосуществуют.

Отдельная нода-конфигурация. На холст ставится нода вида <сервис>_config (telegram_config, email_config, caldav_config, amocrm_config и так далее), в ней выбирается сохранённое подключение, и её выход ведётся проводом данных в порт <сервис>_config рабочей ноды. Приём тот же, что у модели: конфигурация — это отдельный узел, который подключается сбоку и на порядок исполнения не влияет. Провод, правда, другой: у модели это link_llm, у интеграций — обычный data (см. Провода).

Вход
Конфигурация amoCRM
amoCRM REST-вызов
Выход
  • Исполнение + данные
  • Данные
Подключение приезжает в рабочую ноду отдельным проводом данных. Порядок исполнения задаёт верхняя цепочка.

Выбор прямо в ноде. У рабочих нод интеграций есть поле выбора подключения в собственной форме — чтобы граф из одного вызова не требовал второй ноды на холсте.

amoCRM connection⇠ port
— выберите подключение —

Подключённый порт выигрывает: если в порт amocrm_config заведена нода-конфигурация, поле гасится.

Приоритет фиксированный: подключённый порт всегда сильнее поля. Порт — явная и видимая на холсте связь, поле — сокращение; форма поэтому гасит поле и прямо пишет, кто выигрывает, вместо того чтобы держать на экране два живых источника.

Секреты рабочего пространства

Не всё, что нужно внешнему сервису, — это подключение. Произвольная строка (ключ стороннего API для ноды HTTP-запроса, подпись вебхука, идентификатор канала) хранится в НастройкиСекреты и подставляется в любое шаблонное поле как {{ secret.ИМЯ }}. Секреты расшифровываются один раз на запуск и доступны в любой ноде графа — подробности и остальные пространства имён шаблонов на странице Шаблоны и переменные.

Кто имеет право менять

Список подключений видит любой участник рабочего пространства — но именно список: названия, виды и отметки «секрет заполнен», без значений. Создавать, редактировать и удалять их может только администратор пространства; у остальных форма показывает строку «для изменения интеграций требуются права администратора». То же правило у секретов. Разбор ролей — на странице Доступ команды.

Каждое создание, изменение и удаление подключения пишется в журнал аудита пространства.

Что дальше