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

n8n workflows

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

Приклад: новина на шкільному сайті

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

Далі n8n-workflow може, наприклад:

  1. З короткого тексту зробити професійний чернетковий текст за допомогою LLM-ноди та запиту, що добре відповідає тону школи.
  2. Створити відповідну ілюстрацію за допомогою другої LLM-ноді, наприклад у кольорах школи та в впізнаваному стилі.
  3. Підготувати або опублікувати текст і зображення як блог-публікацію на веб-сайті 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 наступним чином:

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

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

Поля

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

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

  1. Створіть у n8n новий workflow.
  2. Додайте на початку вузол Webhook.
  3. Назвіть цей вузол точно як Start workflow. Приклади далі використовують цю назву.
  4. Встановіть HTTP Method на POST.
  5. У розділі Authentication оберіть Header Auth та виберіть облікові дані Header Auth.
  6. Введіть у тієї зальні облікові дані ті самі ім’я заголовка та секретне значення, що й у workflow в AI-School.
  7. Встановіть Respond або Response Mode на Immediately. Програма відразу отримає успішне підтвердження старту, тоді як n8n продовжує працювати.
  8. Скопіюйте Production URL Webhook-нодa до поля n8n production-url в AI-School. Не використовуйте тестовий URL з /webhook-test/.
  9. Активуйте 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

  1. Додайте вузол HTTP Request та назвіть його, наприклад, Повідомити прогрес.

  2. Встановіть Method на POST.

  3. У полі URL натисніть Expression.

  4. Вставте точно таку вираз:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  5. Виберіть у Authentication значення None. Тимчасовий токен буде доданий як заголовок на наступному кроці.

  6. Увімкніть Send Headers і додайте ці два заголовки:

    NameValue
    AuthorizationBearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
    Content-Typeapplication/json
  7. Увімкніть Send Body.

  8. Виберіть Body Content Type: JSON та Specify Body: Using JSON.

  9. Вставте нижченаведений 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."
}
  1. Виберіть 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 налаштувати

  1. Додайте вузол Wait на місці, де потрібне затвердження.
  2. Виберіть у Resume значення On Webhook Call.
  3. Встановіть HTTP Method на POST.
  4. Виберіть у Authentication значення Header Auth.
  5. Оберіть ті самі облікові дані Header Auth, як і для вузла Start workflow.
  6. Перед Wait-nодою розмістіть копію раніше налаштованого вузла HTTP Request і назвіть його Vraag goedkeuring.
  7. Використовуйте в цьому вузлі ті самі динамічні 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

  1. Додайте після Wait-noda вузол Switch.

  2. Використовуйте як значення, яке потрібно перевірити:

    {{ $json.body.decision }}
  3. Створіть, наприклад, маршрут для approve та маршрут для reject.

  4. Кожен маршрут завершуйте відповідним зворотним повідомленням: 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

  1. У n8n створіть окремий workflow з назвою AI-School - помилки відправляти назад.

  2. Додайте вузол Error Trigger.

  3. Додайте вузол HTTP Request.

  4. Встановіть Method на POST.

  5. У полі URL використайте цю постійну production URL:

    https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowExecutionFailed
  6. Оберіть Authentication: None.

  7. Увімкніть Send Headers та додайте:

    NameValue
    n8n-handihow-nameтаємне стандартне значення, яке ви отримали від адміністратора платформи
    Content-Typeapplication/json
  8. Увімкніть Send Body, оберіть 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 оберіть цю нову 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.
WhatsApp