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

n8n workflows

AI-Corporate может запускать n8n workflows через производственный вебхук. Это удобно, когда извне AI-Corporate нужно запустить автоматизированный процесс, например создание задачи, обновление CRM-записи, запуск потока отчётности или передача данных формы в другую систему.

Пример: новостная статья на корпоративном сайте

Предположим, что организация создала рабочий процесс n8n, который публикует новость на сайте WordPress компании. В AI-Corporate вы тогда заполняете только короткий текст, например несколько предложений о кейсе клиента, мероприятии или внутреннем достижении. Этим текстом вы запускаете работу в n8n.

Далее рабочий процесс n8n может, например:

  1. Из короткого текста создать аккуратный черновик с помощью узла LLM и подсказки, подходящей к тону организации.
  2. Сгенерировать подходящую иллюстрацию вторым узлом LLM, например в фирменных цветах и в узнаваемом стилизованном виде.
  3. Подготовить или опубликовать текст и изображение как блог-пост на сайте WordPress.

Так AI-Corporate и n8n работают вместе: в AI-Corporate пользователь выбирает workflow и заполняет необходимую информацию. Затем n8n выполняет автоматизированные шаги и обеспечивает корректное размещение новости на сайте.

Что делает эта интеграция?

Вы запускаете workflow n8n через обзор workflow. Обязательны только производственный webhook, POST и авторизация Header Auth. Поля и отклики из n8n являются необязательными и могут настраиваться независимо.

  • Если у workflow нет полей, webhook вызывается сразу.
  • Если у workflow есть поля, сначала открывается форма. Пользователь заполняет поля и далее запускает workflow кнопкой.
  • Заполненные значения отправляются как JSON в POST-запросе к webhook n8n.
  • Без откликов AI-Corporate подтверждает только, что workflow запущен и далее идёт в n8n. Окно не показывает индикатор загрузки и может быть закрыто.
  • Если это включено в регистрации, workflow может отправлять промежуточные шаги или конец обратно в AI-Corporate.
  • Если в регистрации включено одобрение, пользователь может выбор сделать напрямую в AI-Corporate. Затем n8n продолжит со следующего шага после ожидания.

создание n8n workflow в AI-Corporate

Администратор регистрирует workflow следующим образом:

  1. Перейдите к Ассистенты.
  2. Откройте Рабочие процессы.
  3. Выберите Новый n8n workflow.
  4. Введите имя workflow и URL производственного n8n.
  5. Установите Header authentication с именем заголовка и секретным значением заголовка.
  6. В разделе Terugmeldingen uit n8n отметьте только те элементы, которые действительно реализованы в этом n8n-в workflow: прогресс, одобрение и/или конец workflow.
  7. При необходимости добавьте поля, которые должны быть отправлены в POST-запросе.
  8. Сохраните workflow.

Все три варианта обратной связи отключены по умолчанию. Если позже вы добавляете callbacks или шаг одобрения в n8n, обновите соответствующую регистрацию в AI-Corporate. Диалог поэтому будет знать, показывать ли только сообщение о старте или ожидать дальнейших сигналов.

Поля

  • Поля являются необязательными.
  • Каждое поле имеет одно имя поля и тип.
  • Поддерживаемые типы полей: короткий текст, длинный текст, число, да/нет, дата, один выбор и несколько выборов.
  • В разделе Единый выбор и Несколько выборов добавляйте доступные варианты. Единый выбор отображается как компактное выпадающее меню; Несколько выборов — как флажки. Выбранное значение(я) отправляются в JSON-теле.
  • Обязательные поля должны быть заполнены до запуска workflow.
  • Имя поля становится ключом в JSON-теле, который отправляется к n8n.

Создание совместимого workflow в n8n

  1. Создайте в n8n новый workflow.
  2. Добавьте в качестве первого узла Webhook.
  3. Назовите этот узел точно Start workflow. Примерные выражения ниже используют это имя.
  4. Установите HTTP Method на POST.
  5. Выберите Authentication: Header Auth и используйте ту же имя заголовка и секретное значение, что и в AI-Corporate.
  6. Установите Respond или Response Mode на Immediately.
  7. Скопируйте Production URL в поле n8n production-url в AI-Corporate. Не используйте тестовый URL с /webhook-test/.
  8. Активируйте workflow.

Полученные данные находятся в body; технические данные интеграции — в body.integration. Не удаляйте их в Edit Fields-, Set- или Code-узлах.

Пример JSON-тела

Если определить поля с именами prompt, klantnaam, doelgroepen и datum, то n8n получит, например, этот JSON-тел. AI-Corporate автоматически добавляет объект integration.

{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["medewerkers", "klanten"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}

Токен callback относится к одному выполнению. Не сохраняйте его в логах, в конфигурациях или в других системах.

Опционально: отправка прогресса и завершения

AI-Corporate может показывать только то, что возвращает n8n. Используйте эти колбэки только, если в регистрации включены Сообщать промежуточный прогресс и/или Сообщать о завершении workflow.

Настройте каждый callback-узел следующим образом:

  1. Выберите Method: POST.

  2. В поле URL нажмите Expression и вставьте:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  3. Выберите Authentication: None.

  4. Включите Send Headers и добавьте следующие заголовки.

  5. Включите Send Body и выберите Body Content Type: JSON и Specify Body: Using JSON.

Используйте следующие заголовки:

Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json

Например, отправьте это сообщение, когда начинается шаг:

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-maken-gestart",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_maken",
"label": "Document maken"
},
"message": "Het document wordt gemaakt."
}
  • Для каждого события внутри одного исполнения используйте уникальный eventId.
  • Используйте понятную нидерландскую step.label; этот текст будет отображаться в приложении.
  • Если включено Сообщать о завершении workflow, отправляйте в конце всегда type: "completed", type: "failed" или type: "rejected".
  • При completed можно дополнительно добавить output-объект с результатом.
  • При failed отправляйте понятное сообщение об ошибке. Выполнение тогда же прекратится в приложении.

Опционально: запрашивать одобрение в приложении

Используйте н8n Wait-узел с On Webhook Call, когда workflow может продолжиться только после выбора. Перед Wait-узлом отправьте callback с type: "approval_required":

Настройте Wait-узел на Resume: On Webhook Call, HTTP Method: POST и Authentication: Header Auth. Выберите те же учетные данные Header Auth, что и при Start workflow. После Wait-узла добавьте узел Switch и проверьте {{ $json.body.decision }}.

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "controle-document",
"type": "approval_required",
"executionId": "{{ $execution.id }}",
"step": {
"id": "controle_document",
"label": "Document controleren"
},
"approval": {
"question": "Mag de workflow doorgaan?",
"context": "Controleer eerst het gegenereerde document.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Goedkeuren" },
{ "value": "reject", "label": "Afwijzen" }
]
}
}

Пользователь видит варианты в окне выполнения. После выбора Wait node получит, среди прочего, decision. Затем можно, например, использовать узел Switch для определения дальнейшего пути.

Значение выбора может содержать только буквы, цифры, _ и -. Метка может содержать обычный читаемый текст.

Производственный callback-url

Производственный callback-url для AI-Corporate:

https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback

Не копируйте этот URL как статичный текст в каждом узле callback. В поле URL HTTP Request узла выберите Expression и используйте:

{{ $('Start workflow').first().json.body.integration.callbackUrl }}

AI-Corporate автоматически предоставляет в каждый старт корректный production-url. Вышеуказанный статичный URL используйте только для проверки во время тестирования, чтобы убедиться, что выражение ссылается на AI-Corporate, а не на AI-School или AI-Public.

Вызываемые функции triggerCustomN8nWorkflow, triggerN8nWorkflow и resumeN8nWorkflow будут вызываться самим приложением. Эти URL-адреса не нужно настраивать в n8n.

Обработка ошибок

Возвращайте ожидаемые ошибки с callback типа failed. Для неожиданных ошибок узлов создайте централизованное Error Workflow:

  1. Создайте новый workflow с узлом Error Trigger.

  2. Добавьте узел HTTP Request с Method: POST.

  3. В поле URL введите этот статичный production-url:

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Выберите Authentication: None и добавьте заголовок n8n-handihow-name со значением по умолчанию от администратора платформы.

  5. Выберите JSON-тело и вставьте:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Активируйте Error Workflow.
  2. Откройте настройки обычного workflow и укажите этот Error Workflow.

Сразу после Start workflow отправляйте как минимум один callback с executionId: "{{ $execution.id }}". Только тогда AI-Corporate сможет связать нештатную ошибку с нужным выполнением.

Важные ограничения

  • Поддерживается только вебхук-триггеры.
  • Поддерживаются только production webhook-urls.
  • Тестовые webhook-urls с /webhook-test/ отклоняются.
  • Поддерживается только POST.
  • Поддерживается только generic header authentication.
  • Значение заголовка обрабатывается в приложении как секрет.
  • Callback-токены и resume-url обрабатываются только на стороне сервера и недоступны напрямую пользователям.
  • Тенант определяется на стороне сервера на основе вошедшего пользователя, а не по значению, отправляемому браузером.

Устранение проблем

  • 404 или webhook не зарегистрирован: активируйте workflow в n8n и используйте production-url.
  • Ошибка аутентификации: проверьте, что имя заголовка и значение в обеих системах совпадают.
  • Отсутствующие данные: проверьте, что названия полей в приложении соответствуют ключам, ожидаемым n8n.
  • Нет запроса в n8n: проверьте, начинается ли workflow с webhook-триггера и используется ли POST.
  • Окно выполнения продолжает крутиться: если вы включили Сообщать о завершении workflow, проверьте, что n8n отправляет последний callback с completed, failed или rejected. Если вы не ожидаете откликов, отключите все три опции в регистрации.
  • Нет видимого прогресса: проверьте, включено ли в регистрации Сообщать промежуточный прогресс, сохранено ли integration-объект, и есть ли у каждого колбэка уникальный eventId.
  • Кнопки одобрения не работают: проверьте Wait node, resumeUrl, аутентификацию заголовков и допустимые символы в choices[].value.
WhatsApp