n8n workflows
AI-Corporate میتواند workflows n8n را از طریق یک webhook تولیدی آغاز کند. این وقتی مفید است که بخواهید یک فرایند خودکار خارج از AI-Corporate را آغاز کنید، به عنوان مثال ایجاد یک وظیفه، بهروزرسانی یک رکورد CRM، شروع یک جریان گزارشگیری یا ارسال دادههای فرم به یک سیستم دیگر.
نمونه: خبرنامه روی وبسایت شرکت
فرض کنید سازمان یک n8n workflow دارد که یک خبرنامه را روی وبسایت وردپرس شرکت منتشر میکند. در AI-Corporate فقط یک قطعه متن کوتاه وارد میکنید، مثلاً چند جمله درباره یک مورد مشتری، رویداد یا دستاورد داخلی. با آن متن جریان کار را در n8n آغاز میکنید.
سپس نِ8ِنِ وُورکفلو میتواند مثلاً:
- از متن کوتاه یک متن پیشنهادی با یک گره LLM و یک پرامپ مناسب با لحن سازمان ایجاد کند.
- با یک گره LLM دوم یک illustration مناسب از جمله رنگهای برند و سبک تصویری قابل تشخیص بسازد.
- متن و تصویر را برای مقاله وب آماده کرده یا روی وبسایت وردپرس منتشر کند.
بدین ترتیب AI-Corporate و n8n با هم کار میکنند: در AI-Corporate کاربر Workflow را انتخاب میکند و اطلاعات لازم را وارد میکند. سپس n8n گامهای خودکار را اجرا میکند و اطمینان میدهد که خبرنامه بهدرستی روی وبسایت قرار میگیرد.
این ادغام چه کاری انجام میدهد؟
شما از نمای کل Workflow یک جریان کار را آغاز میکنید. تنها webhook تولیدی، POST و احراز هویت Header الزامی هستند. فیلدها و بازخوردها از n8n اختیاری هستند و میتوانند بهطور مستقل از یکدیگر پیکربندی شوند.
- اگر جریان کار فیلدی نداشته باشد، webhook بلافاصله فراخوانی میشود.
- اگر جریان کار فیلد داشته باشد، ابتدا یک فرم باز میشود. کاربر فیلدها را پر کرده و سپس با دکمه آغاز، جریان کار را آغاز میکند.
- مقادیر پرشده به شکل JSON در یک درخواست POST به webhook n8n ارسال میشوند.
- بدون بازخوردها، AI-Corporate تنها تأیید آغاز جریان کار را نمایش داده و به اجرای بعدی در n8n ادامه میدهد. پنجره spinner نشان داده نمیشود و میتواند بلافاصله بسته شود.
- اگر این گزینه در ثبتنام فعال شده باشد، جریان کار میتواند گامهای میانی یا پایان را به AI-Corporate بازگرداند.
- اگر تأیید در ثبتنام فعال شده باشد، کاربر میتواند بهطور مستقیم در AI-Corporate تصمیم بگیرد. سپس n8n از همان گام منتظر ادامه میشود.
n8n workflow را در AI-Corporate بسازید
یک مدیر بهشرح زیر Workflow را ثبت میکند:
- به Assistenten بروید.
- باز کنید Workflows.
- گزینه Nieuwe n8n workflow را انتخاب کنید.
- نام Workflow و آدرس تولیدی n8n را وارد کنید.
- Header authentication را با نام هدر و مقدار هدر مخفی تنظیم کنید.
- در زیر Terugmeldingen uit n8n فقط بخشهایی را که واقعاً در این n8n-workflow ساخته شدهاند active کنید: پیشرفت، تأیید و/یا پایان Workflow.
- در صورت نیاز فیلدهایی را اضافه کنید که باید در درخواست POST ارسال شود.
- Workflow را ذخیره کنید.
هر سه گزینه بازخوردی پیشفرض غیر فعال هستند. اگر بعدها callbacks یا گام تأییدی را در n8n اضافه کنید، ثبتنام در AI-Corporate را نیز بهروزرسانی کنید. گفتگویی که در نتیجه این کار میداند که آیا تنها باید تأیید آغاز نمایش داده شود یا منتظر نشانههای بیشتری بماند.
فیلدها
- فیلدها اختیاری هستند.
- هر فیلد یک نام فیلد و یک نوع دارد.
- انواع فیلد پشتیبانیشده عبارتند از متن کوتاه، متن بلند، عدد، بله/خیر، تاریخ، یک گزینه و چند گزینه.
- در یک گزینه و چند گزینه گزینههای در دسترس اضافه میشود. یک گزینه به صورت فهرست انتخاب مختصر نمایش داده میشود؛ چند گزینه چکباکسها را نشان میدهد. مقدار انتخابشده یا مقادیر، در بدنه JSON ارسال میشوند.
- فیلدهای الزامی باید قبل از اینکه Workflow بتواند آغاز شود پر شوند.
- نام فیلد کلید در بدنه JSON است که به n8n ارسال میشود.
ایجاد Workflow سازگار در n8n
- در n8n یک workflow جدید بسازید.
- بهعنوان نخستین گره، یک Webhook اضافه کنید.
- دقیقاً نام این گره را Start workflow بگذارید. توضیحات نمونه زیر از این نام استفاده میکنند.
- روش HTTP را روی POST تنظیم کنید.
- انتخاب Authentication: Header Auth و از همان نام هدر و مقدار مخفی استفاده کنید که در AI-Corporate آمده است.
- گزینه Respond یا Response Mode را روی Immediately تنظیم کنید.
- URL تولیدی را به فیلد n8n productie-url در AI-Corporate کپی کنید. از URL تست با
/webhook-test/استفاده نکنید. - Workflow را فعال کنید.
دادههای دریافتشده در زیر body قرار میگیرند؛ دادههای فنی ادغام در زیر body.integration هستند. اینها را در یک گره Edit Fields، Set یا Code حذف نکنید.
نمونه بدنه JSON
اگر فیلدها با نامهای prompt، klantnaam، doelgroepen و datum تعریف شوند، AI-Corporate مثلاً این بدنه 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 بازخورد میدهد را نشان دهد. از این callbacks فقط زمانی استفاده کنید که در ثبتنام گزینههای گزارش پیشرفت میانی و/یا اعلام پایان Workflow را فعال کردهاید.
هر گره callback را به این صورت پیکربندی کنید:
-
روش POST را انتخاب کنید.
-
در URL روی Expression کلیک کرده و بچسبانید:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Authentication: None را انتخاب کنید.
-
ارسال Headerها را فعال کرده و Headerهای زیر را اضافه کنید.
-
ارسال بدنه را فعال کرده و گزینههای Body Content Type: JSON و Specify Body: Using JSON را انتخاب کنید.
این headerها را استفاده کنید:
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واضح به زبان هلندی استفاده کنید؛ این متن در اپ نمایش داده میشود. - اگر گزینه Het einde van de workflow melden فعال شده است، در پایان همیشه
type: "completed"یاtype: "failed"یاtype: "rejected"را ارسال کنید. - در
completedممکن است یک شیءoutputبا نتیجه اضافه کنید. - در حالت
failedپیغام خطای قابل فهمی ارسال کنید. اجرای کار در برنامه نیز متوقف میشود.
اختیاری: درخواست تأیید در اپ
از گره Wait در n8n با گزینه On Webhook Call استفاده کنید وقتی که روند کار فقط پس از یک انتخاب میتواند ادامه یابد. قبل از گره Wait یک callback با type: "approval_required" ارسال کنید:
Wait node را به صورت 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 برای تعیین ادامه مناسب استفاده کنید.
هر مقدار انتخاب فقط میتواند حروف، اعداد، _ و - باشد. label میتواند متن خوانا داشته باشد.
تنظیم URL Callback تولیدی
URL callback تولیدی برای 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 با هر آغاز بهطور خودکار آدرس تولیدی مناسب را ارائه میدهد. URL ثابت بالا را برای آزمایش و اطمینان از اینکه عبارت به AI-Corporate اشاره میکند و نه به AI-School یا AI-Public نگه دارید.
توابع triggerCustomN8nWorkflow, triggerN8nWorkflow و resumeN8nWorkflow توسط اپلیکیشن فراخوانی میشوند. این URLها را در N8n تنظیم نکنید.
مدیریت خطا
خطاهای پیشبینیشده را با callback از نوع failed ارسال کنید. همچنین برای خطای ناخواسته گرهها، یک Workflow خطای مرکزی ایجاد کنید:
-
یک Workflow جدید با گره Error Trigger بسازید.
-
سپس یک گره HTTP Request با Method: POST اضافه کنید.
-
در URL این URL تولیدی ثابت را قرار دهید:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed -
گزینه Authentication: None را انتخاب کرده و هدر
n8n-handihow-nameرا با مقدار پیشفرض امن مدیر پلتفرم اضافه کنید. -
یک بدنه JSON انتخاب کرده و این را الصاق کنید:
{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
- Workflow خطای را فعال کنید.
- تنظیمات Workflow عادی را باز کنید و این را در Error Workflow انتخاب کنید.
فوراً پس از Start workflow حداقل یک callback با executionId: "{{ $execution.id }}" ارسال کنید. فقط در این صورت AI-Corporate میتواند یک خطای غیرمنتظره را به اجرای مناسب مرتبط کند.
محدودیتهای مهم
- فقط تریگرهای webhook پشتیبانی میشوند.
- فقط URLهای webhook تولیدی پشتیبانی میشوند.
- URLهای webhook آزمایشی با
/webhook-test/رد میشوند. - فقط POST پشتیبانی میشود.
- فقط احراز هویت Header عمومی پشتیبانی میشود.
- مقدار هدر در اپلیکیشن بهصورت مخفی در نظر گرفته میشود.
- توکنهای callback و URLهای resume فقط در سمت سرور پردازش میشوند و برای کاربران مستقیماً در دسترس نیستند.
- tenant از سمت سرور و بر اساس کاربر واردشده تعیین میشود، نه از مقدار فرستادهشده توسط مرورگر.
عیبیابی
- 404 یا webhook ثبت نشده: workflow را در n8n فعال کنید و از URL تولیدی استفاده کنید.
- خطای احراز هویت: بررسی کنید که نام و مقدار هدر در هر دو سیستم دقیقاً یکسان باشند.
- دادههای گمشده: بررسی کنید که نامهای فیلدها در برنامه با کلیدهای مورد انتظار n8n مطابقت دارد.
- هیچ درخواستی در n8n: بررسی کنید که جریان کار با یک webhook آغاز میشود و از POST استفاده میکند.
- پنجره اجرا در حال چرخش است: اگر گزینه پایان Workflow فعال است، بررسی کنید که آیا n8n یک callback نهایی
completed،failedیاrejectedمیفرستد. اگر انتظار بازخوردی نیست، هر سه گزینه را از ثبتنام غیر فعال کنید. - پیشرفت قابل مشاهده نیست: بررسی کنید که آیا گزینه گزارش پیشرفت میانی در ثبتنام فعال است یا شیء
integrationحفظ شده و آیا هر callback دارای یکeventIdمنحصر به فرد است. - دکمههای تأیید کار نمیکنند: بررسی کنید Wait node،
resumeUrl، احراز هویت header و مجاز بودن ارزشهای درchoices[].value.