ورکفلوهای n8n
AI-Corporate میتواند ورکفلوهای n8n را از طریق یک وبهوک تولیدی آغاز کند. این کار زمانی مفید است که بخواهید خارج از AI-Corporate یک فرایند خودکار را شروع کنید؛ برای مثال ایجاد یک تسک، بهروزرسانی یک رکورد CRM، شروع یک جریان گزارشگیری یا ارسال دادههای فرم به یک سیستم دیگر.
مثال: مقاله خبری در وبسایت شرکت
فرض کنید سازمان یک ورکفلو n8n ساخته که یک مقاله خبری را روی وبسایت WordPress شرکت منتشر میکند. در AI-Corporate فقط یک متن کوتاه وارد میکنید، مثلاً چند جمله درباره یک مطالعه موردی مشتری، رویداد یا نقطه عطف داخلی. با همان متن، ورکفلو را در n8n شروع میکنید.
سپس ورکفلو n8n میتواند مثلاً:
- با یک نود LLM و یک پرامپت متناسب با لحن سازمان، از متن کوتاه یک متن پیشنویس شستهرفته بسازد.
- با یک نود LLM دوم، یک تصویرسازی مناسب تولید کند؛ مثلاً با رنگهای برند و در یک سبک تصویری آشنا.
- متن و تصویر را بهعنوان یک پست وبلاگ آماده یا منتشر کند روی وبسایت WordPress.
به این شکل AI-Corporate و n8n با هم کار میکنند: در AI-Corporate کاربر ورکفلو را انتخاب میکند و اطلاعات لازم را وارد میکند. سپس n8n مراحل خودکار را اجرا میکند و مطمئن میشود مقاله خبری بهخوبی روی وبسایت قرار میگیرد.
این یکپارچهسازی چه میکند؟
شما یک ورکفلو n8n را از نمای کلی ورکفلوها شروع میکنید. فقط وبهوک تولیدی، POST و Header Auth الزامی هستند. فیلدها و بازخوردها از n8n اختیاریاند و میتوانند مستقل از هم تنظیم شوند.
- اگر ورکفلو فیلدی نداشته باشد، وبهوک بلافاصله فراخوانی میشود.
- اگر ورکفلو فیلد داشته باشد، ابتدا یک فرم باز میشود. کاربر فیلدها را پر میکند و سپس ورکفلو را با دکمه شروع میکند.
- مقادیر واردشده بهصورت JSON در یک POST-request به وبهوک n8n ارسال میشوند.
- بدون بازخوردها، AI-Corporate فقط تأیید میکند که ورکفلو شروع شده و ادامه آن در n8n انجام میشود. پنجره هیچ spinnerی نشان نمیدهد و میتوان آن را فوراً بست.
- اگر هنگام ثبت فعال شده باشد، ورکفلو میتواند مراحل میانی یا پایان را به AI-Corporate برگرداند.
- اگر هنگام ثبت تأیید فعال شده باشد، کاربر میتواند انتخاب را مستقیم در AI-Corporate انجام دهد. n8n سپس از مرحله منتظرشده ادامه میدهد.
ساختن n8n workflow در AI-Corporate
یک مدیر، ورکفلو را به این صورت ثبت میکند:
- به Assistenten بروید.
- تب Workflow assistenten را باز کنید.
- در کارت بالایی روی Nieuwe workflow کلیک کنید و n8n workflow را انتخاب کنید.
- نام ورکفلو و n8n productie-url را وارد کنید.
- Header authentication را با یک header name و header value محرمانه تنظیم کنید.
- زیر Terugmeldingen uit n8n فقط بخشهایی را علامت بزنید که واقعاً در این n8n-workflow ساخته شدهاند: پیشرفت، تأیید و/یا پایان ورکفلو.
- در صورت نیاز، فیلدهایی را که باید در POST-request ارسال شوند اضافه کنید.
- ورکفلو را ذخیره کنید.
هر سه گزینه بازخورد بهطور پیشفرض خاموش هستند. اگر بعداً callbackها یا یک مرحله تأیید را در n8n اضافه کردید، ثبت در AI-Corporate را هم بهروزرسانی کنید. این باعث میشود دیالوگ بداند فقط باید یک تأیید شروع نشان دهد یا منتظر سیگنالهای بعدی بماند.
فیلدها
- فیلدها اختیاری هستند.
- هر فیلد یک نام فیلد و یک نوع دارد.
- نوعهای پشتیبانیشده عبارتاند از متن کوتاه، متن بلند، عدد، بله/خیر، تاریخ، یک انتخاب و چند انتخاب.
- برای یک انتخاب و چند انتخاب گزینههای در دسترس را اضافه کنید. یک انتخاب بهصورت یک فهرست انتخاب فشرده نمایش داده میشود؛ چند انتخاب چکباکسها را نشان میدهد. مقدار یا مقادیر انتخابشده در بدنه JSON ارسال میشوند.
- فیلدهای اجباری باید قبل از شروع ورکفلو پر شده باشند.
- نام فیلد، کلید (key) در بدنه JSON ارسالی به n8n میشود.
ساختن workflow سازگار در n8n
- در n8n یک workflow جدید بسازید.
- بهعنوان اولین node یک Webhook اضافه کنید.
- نام این node را دقیقاً Start workflow بگذارید. نمونهexpressionsهای پایین از این نام استفاده میکنند.
- HTTP Method را روی POST بگذارید.
- Authentication: Header Auth را انتخاب کنید و همان نام هدر و مقدار محرمانهای را که در AI-Corporate استفاده کردهاید بهکار ببرید.
- Respond یا Response Mode را روی Immediately بگذارید.
- Production URL را به فیلد n8n productie-url در AI-Corporate کپی کنید. از test-url با
/webhook-test/استفاده نکنید. - ورکفلو را فعال کنید.
دادههای دریافتی زیر body قرار دارند؛ دادههای فنی یکپارچهسازی زیر body.integration هستند. آنها را در یک Edit Fields-، Set- یا Code-node حذف نکنید.
نمونه بدنه JSON
اگر فیلدهایی با نامهای 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": "توکن-موقت-برای-این-اجرای-خاص"
}
}
callbacktoken به یک اجرا تعلق دارد. آن را در لاگها، تنظیمات ثابت یا سیستمهای دیگر ذخیره نکنید.
اختیاری: ارسال پیشرفت و پایان کار
AI-Corporate فقط میتواند چیزی را نشان دهد که n8n بازمیگرداند. از این callbackها فقط زمانی استفاده کنید که هنگام ثبت، Tussentijdse voortgang melden و/یا Het einde van de workflow melden را فعال کردهاید.
هر callbacknode را به این شکل تنظیم کنید:
-
Method: POST را انتخاب کنید.
-
کنار URL روی Expression کلیک کنید و این را بچسبانید:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Authentication: None را انتخاب کنید.
-
Send Headers را روشن کنید و headerهای زیر را اضافه کنید.
-
Send Body را روشن کنید و 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": "سند ساختن"
},
"message": "سند در حال ساخته شدن است."
}
- برای هر رویداد در یک اجرا، از یک
eventIdیکتا استفاده کنید. - از یک
step.labelواضح و قابلفهم به زبان هلندی استفاده کنید؛ این متن در برنامه نمایش داده میشود. - اگر Het einde van de workflow melden را فعال کردهاید، در پایان همیشه
type: "completed"،type: "failed"یاtype: "rejected"بفرستید. - در
completedدر صورت نیاز یک شیءoutputبا نتیجه اضافه کنید. - در
failedیک پیام خطای قابلفهم بفرستید. در این صورت اجرا هم در برنامه متوقف میشود.
اختیاری: درخواست تأیید در برنامه
وقتی ورکفلو فقط بعد از یک انتخاب باید ادامه پیدا کند، از یک n8n Wait node با On Webhook Call استفاده کنید. قبل از Wait node یک callback با type: "approval_required" بفرستید:
Wait node را روی Resume: On Webhook Call، HTTP Method: POST و Authentication: Header Auth تنظیم کنید. همان Header Auth credential را مثل 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": "آیا ورکفلو میتواند ادامه پیدا کند؟",
"context": "ابتدا سند تولیدشده را بررسی کنید.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "تأیید" },
{ "value": "reject", "label": "رد" }
]
}
}
کاربر انتخابها را در پنجره اجرا میبیند. پس از انتخاب، Wait node از جمله decision را دریافت میکند. سپس مثلاً از یک Switch node برای تعیین مسیر درست بعدی استفاده کنید.
مقدار انتخاب فقط میتواند شامل حروف، اعداد، _ و - باشد. اما label میتواند متن معمولی و خوانا داشته باشد.
تنظیم callback-url تولیدی
callback-url تولیدی برای AI-Corporate این است:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback
این URL را بهصورت متن ثابت در هر callbacknode قرار ندهید. در فیلد URL نود HTTP Request، Expression را انتخاب کنید و از این استفاده کنید:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
به این ترتیب AI-Corporate هنگام هر شروع، URL تولیدی درست را بهطور خودکار ارائه میدهد. URL ثابت بالا را برای بررسی هنگام تست بهکار ببرید تا مطمئن شوید expression به AI-Corporate اشاره میکند و نه به AI-School یا AI-Public.
callables triggerCustomN8nWorkflow، triggerN8nWorkflow و resumeN8nWorkflow توسط خود برنامه فراخوانی میشوند. لازم نیست این URLها را در n8n تنظیم کنید.
مدیریت خطاها
خطاهای مورد انتظار را با یک callback از نوع failed برگردانید. برای خطاهای غیرمنتظره نودها، علاوه بر آن یک Error Workflow مرکزی بسازید:
-
یک workflow جدید با یک Error Trigger node بسازید.
-
سپس یک HTTP Request node با Method: POST اضافه کنید.
-
در URL این URL تولیدی ثابت را وارد کنید:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed -
Authentication: None را انتخاب کنید و header
n8n-handihow-nameرا با مقدار پیشفرض محرمانه مدیر پلتفرم اضافه کنید. -
یک JSON body انتخاب کنید و این را بچسبانید:
{
"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 انتخاب کنید.
بلافاصله بعد از Start workflow دستکم یک callback با executionId: "{{ $execution.id }}" بفرستید. فقط در این صورت AI-Corporate میتواند یک خطای غیرمنتظره را به اجرای درست وصل کند.
محدودیتهای مهم
- فقط webhook triggerها پشتیبانی میشوند.
- فقط webhook-urlهای تولیدی پشتیبانی میشوند.
- test-webhook-urlها با
/webhook-test/رد میشوند. - فقط POST پشتیبانی میشود.
- فقط generic header authentication پشتیبانی میشود.
- مقدار header در برنامه بهعنوان محرمانه در نظر گرفته میشود.
- callbacktokenها و resume-urlها فقط سمت سرور پردازش میشوند و مستقیماً برای کاربران در دسترس نیستند.
- tenant بهصورت سمت سرور و بر اساس کاربر واردشده تعیین میشود، نه بر اساس مقداری که مرورگر میفرستد.
رفع اشکال
- 404 یا ثبت نشدن webhook: ورکفلو را در n8n فعال کنید و از URL تولیدی استفاده کنید.
- خطای احراز هویت: بررسی کنید نام و مقدار header در هر دو سیستم دقیقاً یکسان باشند.
- دادههای ناقص: بررسی کنید نام فیلدها در برنامه با کلیدهایی که n8n انتظار دارد مطابقت داشته باشند.
- هیچ requestی در n8n دیده نمیشود: بررسی کنید workflow با webhook trigger شروع میشود و POST استفاده میکند.
- پنجره اجرا همچنان در حال چرخش است: اگر Het einde van de workflow melden را فعال کردهاید، بررسی کنید که n8n یک callback نهایی
completed،failedیاrejectedمیفرستد. اگر هیچ بازخوردی انتظار ندارید، هر سه گزینه را هنگام ثبت خاموش کنید. - هیچ پیشرفتی دیده نمیشود: بررسی کنید Tussentijdse voortgang melden هنگام ثبت روشن باشد، شیء
integrationحفظ شده باشد و هر callback یکeventIdیکتا داشته باشد. - دکمههای تأیید کار نمیکنند: Wait node،
resumeUrl، header authentication و کاراکترهای مجاز درchoices[].valueرا بررسی کنید.