Перейти до основного змісту

n8n workflows

AI-Corporate може запускати n8n workflows через production webhook. Це зручно, коли потрібно запустити автоматизований процес поза AI-Corporate, наприклад створення задачі, оновлення запису в CRM, запуск потоку звітності або передавання даних форми до іншої системи.

Приклад: новинна стаття на корпоративному вебсайті​

Припустімо, організація створила n8n workflow, який публікує новинну статтю на WordPress-сайті компанії. В AI-Corporate тоді достатньо ввести короткий текст, наприклад кілька речень про кейс клієнта, подію або внутрішню віху. За цим текстом ви запускаєте workflow в n8n.

Після цього n8n workflow може, наприклад:

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

Так AI-Corporate і n8n працюють разом: в AI-Corporate користувач обирає workflow і вводить потрібну інформацію. Потім n8n виконує автоматизовані кроки й забезпечує, щоб новинна стаття акуратно з’явилася на сайті.

Що робить ця інтеграція?​

Ви запускаєте n8n workflow з огляду workflow. Обов’язковими є лише production webhook, POST і Header Auth. Поля та зворотні повідомлення з n8n є необов’язковими й можуть налаштовуватися незалежно одне від одного.

  • Якщо workflow не має полів, webhook викликається одразу.
  • Якщо workflow має поля, спочатку відкривається форма. Користувач заповнює поля й потім запускає workflow кнопкою.
  • Введені значення надсилаються як JSON у POST-request до n8n webhook.
  • Без зворотних повідомлень AI-Corporate лише підтверджує, що workflow запущено і далі він виконується в n8n. Вікно не показує spinner і його можна одразу закрити.
  • Якщо це ввімкнено під час реєстрації, workflow може повертати проміжні кроки або завершення до AI-Corporate.
  • Якщо під час реєстрації ввімкнено затвердження, користувач може зробити вибір безпосередньо в AI-Corporate. Після цього n8n продовжує з очікуючого кроку.

Створення n8n workflow в AI-Corporate​

Адміністратор реєструє workflow так:

  1. Перейдіть до Асистенти.
  2. Відкрийте вкладку Workflow-асистенти.
  3. Натисніть на картку зверху Новий workflow і виберіть n8n workflow.
  4. Введіть назву workflow і production URL n8n.
  5. Налаштуйте Header authentication з header name і секретним header value.
  6. У розділі Зворотні повідомлення з n8n позначте лише ті частини, які справді реалізовані в цьому n8n-workflow: прогрес, затвердження та/або завершення workflow.
  7. За потреби додайте поля, які мають передаватися в POST-request.
  8. Збережіть workflow.

Усі три параметри зворотних повідомлень за замовчуванням вимкнені. Якщо згодом додасте callbacks або крок затвердження в n8n, оновіть і реєстрацію в AI-Corporate. Так діалог знатиме, чи потрібно показати лише підтвердження запуску, чи чекати на подальші сигнали.

Поля​

  • Поля є необов’язковими.
  • Кожне поле має одну назву поля та тип.
  • Підтримувані типи полів: короткий текст, довгий текст, число, так/ні, дата, один варіант і кілька варіантів.
  • Для Один варіант і Кілька варіантів додайте доступні опції. Один варіант показується як компактний список вибору; Кілька варіантів показує прапорці. Обране значення або значення надсилаються в JSON body.
  • Обов’язкові поля мають бути заповнені, перш ніж workflow можна буде запустити.
  • Назва поля стає ключем у JSON body, який надсилається до n8n.

Створення сумісного workflow в n8n​

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

Отримані дані знаходяться в body; технічні дані інтеграції — в body.integration. Не видаляйте їх у Edit Fields-, Set- або Code-node.

Приклад JSON body​

Якщо ви визначите поля з назвами prompt, klantnaam, doelgroepen і datum, n8n отримає, наприклад, такий JSON body. AI-Corporate автоматично додає об’єкт integration.

{
"prompt": "Створи короткий підсумок запиту.",
"klantnaam": "Приклад організації",
"doelgroepen": ["співробітники", "клієнти"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "тимчасовий-token-для-цього-запуску"
}
}

Callback-token належить одному запуску. Не зберігайте його в логах, постійній конфігурації чи інших системах.

Опційно: надсилання прогресу та завершення​

AI-Corporate може показувати лише те, що повертає n8n. Використовуйте ці callbacks лише якщо під час реєстрації ви ввімкнули Повідомляти проміжний прогрес і/або Повідомляти про завершення workflow.

Налаштуйте кожен callback node так:

  1. Виберіть Method: POST.

  2. У полі URL натисніть Expression і вставте:

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

  4. Увімкніть Send Headers і додайте наведені нижче headers.

  5. Увімкніть Send Body і виберіть Body Content Type: JSON та Specify Body: Using JSON.

Використовуйте ці headers:

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": "Створення документа"
},
"message": "Документ створюється."
}
  • Для кожної події в межах одного запуску використовуйте унікальний eventId.
  • Використовуйте зрозумілий український step.label; цей текст показуватиметься в app.
  • Якщо ви ввімкнули Повідомляти про завершення workflow, наприкінці завжди надсилайте type: "completed", type: "failed" або type: "rejected".
  • Для completed за потреби додайте об’єкт output з результатом.
  • Для failed надсилайте зрозуміле повідомлення про помилку. Після цього виконання також зупиняється в app.

Опційно: запит на затвердження в app​

Використовуйте n8n Wait node з On Webhook Call, якщо workflow має продовжуватися лише після вибору. Перед Wait node надішліть callback з type: "approval_required":

Налаштуйте Wait node на Resume: On Webhook Call, HTTP Method: POST і Authentication: Header Auth. Виберіть ті самі Header Auth credentials, що й для Start workflow. Після Wait node додайте Switch node і перевірте в ньому {{ $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": "Перевірка документа"
},
"approval": {
"question": "Чи можна продовжити workflow?",
"context": "Спочатку перевірте згенерований документ.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Затвердити" },
{ "value": "reject", "label": "Відхилити" }
]
}
}

Користувач бачить варіанти у вікні виконання. Після вибору Wait node отримує, серед іншого, decision. Після цього використайте, наприклад, Switch node, щоб визначити правильний подальший крок.

Значення вибору може містити лише літери, цифри, _ і -. Label може містити звичайний читабельний текст.

Налаштування production callback-url​

Production callback-url для AI-Corporate:

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

Не вставляйте цей URL як фіксований текст у кожен callbacknode. У полі URL в HTTP Request node виберіть Expression і використайте:

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

Так AI-Corporate автоматично надає правильний production URL під час кожного запуску. Наведений вище фіксований URL використовуйте, щоб під час тестування перевірити, чи expression веде до AI-Corporate, а не до AI-School або AI-Public.

Callables triggerCustomN8nWorkflow, triggerN8nWorkflow і resumeN8nWorkflow викликає сам app. Ці URL не потрібно налаштовувати в n8n.

Обробка помилок​

Надсилайте очікувані помилки через callback типу failed. Для неочікуваних помилок node додатково створіть центральний Error Workflow:

  1. Створіть новий workflow з node Error Trigger.

  2. Далі додайте HTTP Request node з Method: POST.

  3. У полі URL вкажіть цей фіксований production URL:

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Виберіть Authentication: None і додайте header n8n-handihow-name із секретним стандартним значенням platform-адміністратора.

  5. Виберіть JSON body і вставте:

{
"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 може прив’язати неочікувану помилку до правильного виконання.

Важливі обмеження​

  • Підтримуються лише webhook triggers.
  • Підтримуються лише production webhook-urls.
  • Test-webhook-urls з /webhook-test/ відхиляються.
  • Підтримується лише POST.
  • Підтримується лише generic header authentication.
  • Значення header в застосунку обробляється як секретне.
  • Callbacktokens і resume-url-и обробляються лише на сервері й не доступні користувачам напряму.
  • Tenant визначається на сервері на основі залогіненого користувача, а не з значення, яке надсилає браузер.

Усунення проблем​

  • 404 або webhook не зареєстровано: активуйте workflow у n8n і використовуйте production URL.
  • Помилка автентифікації: перевірте, чи header name і value в обох системах збігаються точно.
  • Відсутні дані: перевірте, чи назви полів у застосунку відповідають ключам, яких очікує n8n.
  • Немає запиту в n8n: перевірте, чи workflow починається з webhook trigger і використовує POST.
  • Вікно виконання не закривається: якщо ви ввімкнули Повідомляти про завершення workflow, перевірте, чи n8n надсилає фінальний callback completed, failed або rejected. Якщо зворотні повідомлення не потрібні, вимкніть усі три опції під час реєстрації.
  • Прогрес не видно: перевірте, чи ввімкнено Повідомляти проміжний прогрес під час реєстрації, чи збережено об’єкт integration і чи кожен callback має унікальний eventId.
  • Кнопки затвердження не працюють: перевірте Wait node, resumeUrl, header authentication і дозволені символи в choices[].value.