n8n workflows
AI-School може запускати n8n workflow через виробничий веб-хук. Це зручно, коли ви хочете запустити автоматизований процес поза AI-School, наприклад створити завдання, оновити CRM-запис, запустити потік звітності або передати дані форми в іншу систему.
Приклад: новина на шкільному сайті
Припустімо, що школа створила n8n workflow, який публікує новину на веб-сайті WordPress школи. В AI-School ви заповнюєте лише короткий текст, наприклад кілька речень про тиждень проектів, спортивний день або день відкритих дверей. З цим текстом ви запускаєте workflow в n8n.
Далі n8n-workflow може, наприклад:
- З короткого тексту зробити професійний чернетковий текст за допомогою LLM-ноди та запиту, що добре відповідає тону школи.
- Створити відповідну ілюстрацію за допомогою другої LLM-ноді, наприклад у кольорах школи та в впізнаваному стилі.
- Підготувати або опублікувати текст і зображення як блог-публікацію на веб-сайті WordPress.
Так AI-School і n8n працюють разом: у AI-School користувач обирає workflow та заповнює потрібну інформацію. Далі n8n виконує автоматизовані кроки і забезпечує, щоб новина коректно з’явилася на сайті.
Що робить ця інтеграція?
Ви запускаєте n8n workflow з перегляду workflows. Обов’язковими є лише production-webhook, POST та Header Auth. Поля та зворотні повідомлення з n8n є опційними й можуть налаштовуватися незалежно одне від одного.
- Якщо у workflow немає полів, webhook викликається одразу.
- Якщо у workflow є поля, спочатку з’являється форма. Користувач заповнює поля та запускає workflow кнопкою.
- Заповнені значення надсилаються як JSON у POST-запиті до n8n webhook.
- Без зворотних повідомлень AI-School підтверджує лише, що workflow запущено, і далі працює в n8n. Вікно не відображає індикатор завантаження та може бути закрите одразу.
- Якщо у реєстрації увімкнено, workflow може відправляти проміжні кроки або кінець назад до AI-School.
- Якщо схвалення увімкнено у реєстрації, користувач може зробити вибір прямо в AI-School. Далі n8n продовжує з очікуваного кроку.
Що робить ця інтеграція?
Ви запускаєте n8n workflow з перегляду workflow. Тільки production webhook, POST та Header Auth обов’язкові. Поля та зворотні повідомлення з n8n є опційними й можуть налаштовуватися незалежно.
- Якщо у workflow немає полів, webhook викликається одразу.
- Якщо у workflow є поля, спочатку відкривається форма. Користувач заповнює поля і потім запускає workflow кнопкою.
- Заповнені значення надсилаються як JSON у POST-запит до n8n webhook.
- Без зворотних повідомлень AI-School лише підтверджує, що workflow запущено, і даліProceed.
- Якщо це увімкнено при реєстрації, workflow може повертати проміжні кроки або кінець до AI-School.
- Якщо затвердження увімкнено, користувач може зробити вибір прямо в AI-School. Потім n8n продовжує з очікуваного кроку.
Створення n8n workflow в AI-School
Керівник реєструє workflow наступним чином:
- Перейдіть до Асистенти.
- Відкрийте Работyвання.
- Виберіть Новий n8n workflow.
- Введіть назву workflow та адресу n8n production URL.
- Налаштуйте Header authentication з ім’ям заголовка та секретним значенням заголовка.
- Поставте прапорець під Тут зворотні повідомлення з n8n лише ті елементи, які фактично були побудовані в цьому n8n-workflow: прогрес, затвердження та/або кінець workflow.
- За потреби додайте поля, які мають бути надіслані в POST-запиті.
- Збережіть workflow.
Усі три варіанти зворотних повідомлень зазвичай вимкнені. Якщо пізніше ви додасте callbacks або крок затвердження в n8n, також оновіть реєстрацію в AI-School. Діалог тоді знає, чи потрібно показувати лише стартове підтвердження або очікувати подальших сигналів.
Поля
- Поля необов’язкові.
- Кожне поле має ім’я поля та тип.
- Підтримувані типи полів: короткий текст, довгий текст, число, так/ні, дата, один вибір та кілька виборів.
- Для Одного вибору та Кількох виборів додаєте доступні варіанти. Одне вибір відображається як компактний випадаючий список; Кілька виборів — як прапорці. Обране значення або значення надсилаються у JSON body.
- Обов’язкові поля мають бути заповнені перед стартом workflow.
- Ім’я поля стає ключем у JSON body, який надсилається до n8n.
Створення сумісного workflow в n8n
- Створіть у n8n новий workflow.
- Додайте на початку вузол Webhook.
- Назвіть цей вузол точно як Start workflow. Приклади далі використовують цю назву.
- Встановіть HTTP Method на POST.
- У розділі Authentication оберіть Header Auth та виберіть облікові дані Header Auth.
- Введіть у тієї зальні облікові дані ті самі ім’я заголовка та секретне значення, що й у workflow в AI-School.
- Встановіть Respond або Response Mode на Immediately. Програма відразу отримає успішне підтвердження старту, тоді як n8n продовжує працювати.
- Скопіюйте Production URL Webhook-нодa до поля n8n production-url в AI-School. Не використовуйте тестовий URL з
/webhook-test/. - Активуйте workflow в n8n.
Дані з AI-School знаходяться в n8n під body. Дані інтеграції знаходяться з того самого боку під body.integration. Не видаляйте ці дані під час редагування полів, встановлення або кодування. Нижче приклади читають їх з вузла Start workflow.
Приклад JSON тіла
Якщо ви визначаєте поля з іменами prompt, klantnaam, doelgroepen та datum, то n8n, наприклад, отримає таке JSON-тло. AI-School автоматично додає об’єкт integration.
{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["medewerkers", "ouders"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}
Токен зворотного виклику належить до одного виконання. Не зберігайте його в логах, у сталих конфігураціях або в інших системах.
Опційно: надсилати прогрес і завершення
AI-School може відображати лише те, що повертає n8n. Використовуйте ці зворотні виклики лише тоді, коли у реєстрації ввімкнено “Повідомляти проміжний прогрес” та/або “Повідомляти про кінець workflow”.
Налаштування вузла HTTP Request
-
Додайте вузол HTTP Request та назвіть його, наприклад, Повідомити прогрес.
-
Встановіть Method на POST.
-
У полі URL натисніть Expression.
-
Вставте точно таку вираз:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Виберіть у Authentication значення None. Тимчасовий токен буде доданий як заголовок на наступному кроці.
-
Увімкніть Send Headers і додайте ці два заголовки:
Name Value AuthorizationBearer {{ $('Start workflow').first().json.body.integration.callbackToken }}Content-Typeapplication/json -
Увімкніть Send Body.
-
Виберіть Body Content Type: JSON та Specify Body: Using JSON.
-
Вставте нижченаведений JSON у поле 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."
}
- Виберіть Execute step під час тестування workflow через застосунок. Нода повинна повернути статус 200.
Копіюйте цей вузол HTTP Request для кожного статус-повідомлення. Для кожної копії мінімум змініть eventId, step.id, step.label та message.
Встановлення останнього callback
Якщо увімкнено Повідомляти про кінець workflow, потрібно, щоб наприкінці кожного можливого маршруту бувостанній callback. Використовуйте type: "completed" для успішного завершення, type: "failed" для помилки, яку ви самі обробляєте, та type: "rejected" коли користувач відмовляє workflow.
Для успішного виконання body може виглядати так:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "workflow-afgerond",
"type": "completed",
"executionId": "{{ $execution.id }}",
"step": {
"id": "afronding",
"label": "Workflow afgerond"
},
"message": "De workflow is afgerond.",
"output": {
"resultaat": "Korte omschrijving of link naar het resultaat"
}
}
Використовуйте в рамках одного виконання для кожного callback інший eventId. Також завжди використовуйте чіткий step.label: ця текст користувач побачить у вікні виконання.
Опційно: запит на схвалення в додатку
Wait node налаштувати
- Додайте вузол Wait на місці, де потрібне затвердження.
- Виберіть у Resume значення On Webhook Call.
- Встановіть HTTP Method на POST.
- Виберіть у Authentication значення Header Auth.
- Оберіть ті самі облікові дані Header Auth, як і для вузла Start workflow.
- Перед Wait-nодою розмістіть копію раніше налаштованого вузла HTTP Request і назвіть його Vraag goedkeuring.
- Використовуйте в цьому вузлі ті самі динамічні URL та заголовки. Замініть лише JSON-тіло на:
{
"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" }
]
}
}
З’єднайте Vraag goedkeuring з вузлом Wait. Користувач побачить кнопки в AI-School. Таємна resume-url не передається у браузер; сервер безпечно надсилає вибір до Wait-ноди.
Обробка вибору після Wait-noda
-
Додайте після Wait-noda вузол Switch.
-
Використовуйте як значення, яке потрібно перевірити:
{{ $json.body.decision }} -
Створіть, наприклад, маршрут для
approveта маршрут дляreject. -
Кожен маршрут завершуйте відповідним зворотним повідомленням:
completed,rejectedабоfailed.
Значення вибору може містити лише літери, цифри, _ та -. Назва може містити звичайний читабельний текст.
Налаштування production callback-url
Production callback-url для AI-School:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback
Не вставляйте цей URL як постійний текст в кожен callback node. В полі URL вузла HTTP Request використайте Expression та застосуйте:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-School забезпечує для кожного запуску відповідний production URL. Постійний URL вище використовуйте лише для перевірки під час тестування.
Виклики triggerCustomN8nWorkflow, triggerN8nWorkflow та resumeN8nWorkflow викликає сама програма. Ці URL-адреси не потрібно налаштовувати в n8n.
Відправлення несподіваних помилок
Звичайний callback failed працює лише тоді, коли workflow досягає відповідного вузла HTTP Request. Використовуйте також централізований n8n Error Workflow для помилок вузлів.
Створення централізованої Error Workflow
-
У n8n створіть окремий workflow з назвою AI-School - помилки відправляти назад.
-
Додайте вузол Error Trigger.
-
Додайте вузол HTTP Request.
-
Встановіть Method на POST.
-
У полі URL використайте цю постійну production URL:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowExecutionFailed -
Оберіть Authentication: None.
-
Увімкніть Send Headers та додайте:
Name Value n8n-handihow-nameтаємне стандартне значення, яке ви отримали від адміністратора платформи Content-Typeapplication/json -
Увімкніть Send Body, оберіть JSON та вставте наступне тіло:
{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
- Активуйте Error Workflow.
- Відкрийте налаштування звичайного workflow та у полі Error Workflow оберіть цю нову Error Workflow.
Після Start workflow завжди відправляйте принаймні один прогрес- Callback із executionId: "{{ $execution.id }}". Так програма дізнається, до якого виконання відноситься несподівана помилка n8n.
Важливі обмеження
- Підтримуються лише webhook-тригери.
- Підтримуються лише production-webhook-URL.
- Тестові webhook-URL з
/webhook-test/відхиляються. - Підтримується лише POST.
- Підтримується лише generic header authentication.
- Значення заголовка обробляється у застосунку як секрет.
- Callback-токени та resume-url обробляються лише на стороні сервера і не доступні безпосередньо користувачам.
- Tenant визначається на стороні сервера з врахуванням увійшлого користувача, а не з значення, що надсилає браузер.
Вирішення проблем
- 404 або webhook не зареєстрований: активуйте workflow в n8n та використовуйте production-url.
- Аутентифікаційна помилка: перевірте, чи назва заголовка та значення в обох системах точно однакові.
- Відсутні дані: перевірте, чи відповідають імена полів ключам, очікуваним n8n.
- Немає запиту в n8n: перевірте, чи workflow починається з webhook-тригера та використовує POST.
- Вікно виконання крутиться: якщо увімкнено Повідомляти про кінець workflow, перевірте, чи n8n надсилає останній callback
completed,failedабоrejected. Якщо ви не очікуєте зворотних повідомлень, вимкніть всі три опції в реєстрації. - Немає видно прогресу: перевірте, чи увімкнено Повідомляти проміжний прогрес в реєстрації або чи збережено об’єкт
integrationі чи кожний callback має унікальнийeventId. - Кнопки затвердження не працюють: перевірте Wait node,
resumeUrl, заголовок аутентифікацію та дозволені символи вchoices[].value.