n8n فرآیندهای کاری
AI-Public میتواند فرآیندهای n8n را از طریق یک وبهوک تولیدی راهاندازی کند. این هنگام مفید است که خارج از AI-Public یک فرآیند خودکار بخواهید آغاز کنید، مانند ایجاد یک وظیفه، بهروزرسانی یک یادداشت CRM، آغاز یک جریان گزارشدهی یا انتقال دادههای فرم به سیستم دیگری.
نمونه: مقاله خبری در وبسایت سازمان
فرض کنید سازمان یک فرآیند n8n ساخته است که مقاله خبری را در وبسایت وردپرس منتشر میکند. در AI-Public تنها یک متن کوتاه وارد میکنید، مثلاً چند جمله در مورد یک نشست، پروژه یا اعلان عمومی. با آن متن فرآیند در n8n آغاز میشود.
فرآیند n8n پس از آن میتواند بهعنوان مثال:
- از متن کوتاه یک متن مفهومی مرتب با یک نود LLM و یک پرامپ که با لحن سازمان مطابقت دارد، بسازد.
- با استفاده از یک نود LLM دوم، تصویر مناسبی مطابق با سبک بصری سازمان و در سبک تصویری قابل تشخیص ایجاد کند.
- متن و تصویر را بهعنوان پست وبلاگ آماده یا در وبسایت وردپرس منتشر کند.
بدینترتیب AI-Public و n8n با هم کار میکنند: در AI-Public کاربر فرآیند کاری را انتخاب میکند و اطلاعات لازم را وارد میکند. سپس n8n گامهای خودکار را اجرا میکند و اطمینان میدهد که خبر بهدرستی در وبسایت درج میشود.
چه کاری با این همسپاری انجام میشود؟
شما فرآیند n8n را از نمای کل فرآیندها آغاز میکنید. فقط وبهوک تولیدی، POST و احراز هویت Header الزامی هستند. فیلدها و بازخوردها از n8n اختیاری هستند و میتوانند بهطور مستقل از یکدیگر تنظیم شوند.
- اگر فرآیند فیلدی نداشته باشد، وبهوک بلافاصله فراخوانی میشود.
- اگر فرآیند فیلد داشته باشد، ابتدا یک فرم باز میشود. کاربر فیلدها را وارد میکند و سپس با فشار دکمه، فرآیند را آغاز میکند.
- مقادیر پر شده بهعنوان JSON در یک درخواست POST به وبهوك n8n ارسال میشود.
- بدون بازخوردها، AI-Public فقط تأیید میکند که فرآیند آغاز شده و در n8n ادامه مییابد. پنجره بدون نشانگر.spinner نمایش داده میشود و میتواند مستقیماً بسته شود.
- اگر این گزینه در ثبتنام فعال شده باشد، فرآیند میتواند گامهای میانی یا پایان را به AI-Public بازگرداند.
- اگر تأیید در ثبتنام فعال شده باشد، کاربر میتواند انتخاب را مستقیماً در AI-Public انجام دهد. سپس n8n از همان نقطه منتظر گام بعدی میشود.
ایجاد ن8n workflow در AI-Public
یک مدیر فرآیند را بهصورت زیر ثبت میکند:
- به Assistenten بروید.
- باز کنید Workflows.
- گزینه Nieuwe n8n workflow را انتخاب کنید.
- نام فرآیند کاری و آدرس تولید n8n را وارد کنید.
- Header authentication را با نام هدر و مقدار هدر مخفی تنظیم کنید.
- زیر Terugmeldingen uit n8n تنها مواردی را که واقعاً در این ن8n-workflow ساخته شدهاند: پیشرفت، تأیید و/یا پایان فرآیند را انتخاب کنید.
- در صورت نیاز فیلدهایی که باید در درخواست POST ارسال شوند را اضافه کنید.
- فرآیند را ذخیره کنید.
هر سه گزینه بازخوردی بهصورت پیشفرض خاموش هستند. اگر بعداً callbackها یا گام تأیید را در n8n اضافه کردید، ثبت در AI-Public نیز بهروزرسانی کنید. گفتوگو اینگونه تشخیص میدهد که آیا فقط باید تأیید آغاز نمایش داده شود یا به سیگنالهای بعدی نیز منتظر بماند.
فیلدها
- فیلدها اختیاریاند.
- هر فیلد یک نام فیلد و یک نوع دارد.
- Типهای پشتیبانیشده: متن کوتاه، متن بلند، عدد، بله/خیر، تاریخ، یک گزینه و چ ند گزینه.
- در یک گزینه و چند گزینه گزینههای موجود اضافه میشوند. یک گزینه بهصورت فهرست گزینههای فشرده نمایش داده میشود؛ چند گزینه گزینههای چکباکس را نشان میدهد. مقدار انتخابشده یا مقادیر، بهصورت JSON ارسال میشود.
- فیلدهای ضروری باید پیش از آغاز فرآیند پر شوند.
- نام فیلد به کلید در بدنه JSON که به n8n ارسال میشود، تبدیل میشود.
ایجاد فرآیند سازگار در n8n
- در n8n یک فرآیند جدید بسازید.
- بهعنوان نخستین نود یک Webhook اضافه کنید.
- دقیقاً به این نام نود را با نام Start workflow بدهید. Expressions نمونه زیر از این نام استفاده میکنند.
- HTTP Method را روی POST قرار دهید.
- Authentication: Header Auth را انتخاب کنید و همان نام هدر و مقدار مخفی که در AI-Public استفاده میشود را به کار برید.
- Respond یا Response Mode را روی Immediately تنظیم کنید.
- URL تولیدی را به فیلد n8n productie-url در AI-Public کپی کنید. از URL تست با «/webhook-test/» استفاده نکنید.
- فرآیند را فعال کنید.
دادههای دریافتی در بخش body قرار دارند؛ دادههای فنی ادغام در بخش body.integration هستند. اینها را در یک فیلد ویرایش کنید، یا در نودهای Set یا Code حذف کنید.
نمونه بدنه JSON
اگر فیلدهایی با نامهای prompt, klantnaam, doelgroepen و datum تعریف کنید، n8n مثلاً این بدنه JSON را دریافت میکند. AI-Public شیء integration را بهطور خودکار اضافه میکند.
{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["inwoners", "medewerkers"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}
توکن بازخورد برای یک اجرا است. آن را در لاگها یا پیکربندی ثابت ذخیره نکنید.
اختیاری: بازگرداندن پیشرفت و پایان
AI-Public تنها میتواند آنچه n8n بازگرد میدهد را نمایش دهد. از این callbackها فقط در صورتی استفاده کنید که در ثبتنام گزینههای «اعلام پیشرفت میانی» و/یا «اعلام پایانِ فرآیند» را فعال کردهاید.
هر گره callback را بهصورت زیر تنظیم کنید:
-
گزینه Method: POST را انتخاب کنید.
-
در URL روی Expression کلیک کنید و بچسبانید:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
گزینه Authentication: None را انتخاب کنید.
-
ارسال هدرها را فعال کنید و هدرهای زیر را اضافه کنید.
-
ارسال بدنه را فعال کنید و گزینههای Body Content Type: JSON و Specify Body: Using JSON را انتخاب کنید.
این هدرها را استفاده کنید:
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استفاده کنید؛ این متن در اپ نمایش داده میشود. - اگر گزینه «اعلام پایانِ فرآیند» فعال شده باشد، در پایان همیشه
type: "completed"یاtype: "failed"یاtype: "rejected"را ارسال کنید. - در حالت
completedدر صورت وجود، یک شیءoutputبا نتیجه اضافه کنید. - اگر
failedاست، پیغام خطای قابل فهمی ارسال کنید. در این صورت اجرای فرآیند در اپ هم متوقف میشود.
اختیاری: خواسته تأیید در اپ
از یک نود Wait در n8n با گزینه On Webhook Call استفاده کنید وقتی که فرآیند پس از یک گزینه ادامه پیدا کند. قبل از نود Wait با یک callback با type: "approval_required" ارسال کنید:
نود Wait را با تنظیمات زیر پیکربندی کنید: 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 بهطور یکی از کلیدهای decision را میگیرد. سپس از یک نود Switch برای تعیین ادامه مناسب استفاده کنید.
یک مقدار انتخاب تنها میتواند حروف یا اعداد، _ و - باشد. متن(label) میتواند متن خوانا معمولی باشد.
تنظیم URL بازگشت تولیدی
production callback-url برای AI-Public عبارت است از:
https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback
این URL را بهعنوان متن ثابت در هر گره callback ن گذارید. در فیلد URL گره HTTP Request از گزینه Expression استفاده کنید و از این استفاده کنید:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-Public با هر آغاز بهطور خودکار URL تولیدی مناسب را ارائه میدهد. URL ثابت بالا را در حین آزمایش برای بررسی اینکه آیا عبارت به AI-Public اشاره میکند و نه به AI-School یا AI-Corporate استفاده کنید.
توابع triggerCustomN8nWorkflow, triggerN8nWorkflow و resumeN8nWorkflow توسط خود اپ فراخوانی میشوند. این URLها را در n8n تنظیم نکنید.
مدیریت خطاها
خطاهای مورد انتظار را با callback از نوع failed برگردانید. برای خطاهای غیرمنتظره نودهای خطای مرکزی را ایجاد کنید:
-
یک فرآیند جدید با گره Error Trigger بسازید.
-
سپس یک گره HTTP Request با Method: POST اضافه کنید.
-
در URL این URL تولیدی ثابت را وارد کنید:
https://europe-west1-ai-public-pro.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 }}"
}
- جریان خطا را فعال کنید.
- تنظیمات فرآیند عادی را باز کنید و آن را به Error Workflow اختصاص دهید.
فورا پس از Start workflow حداقل یک callback با executionId: "{{ $execution.id }}" ارسال کنید. فقط در این صورت AI-Public میتواند یک خطای غیرمنتظره را به اجرای مناسب مرتبط سازد.
محدودیتهای مهم
- تنها Triggerهای وبهوک پشتیبانی میشود.
- تنها آدرسهای وبهوک تولیدی پشتیبانی میشوند.
- تست وبهوکها با
/webhook-test/رد میشوند. - تنها POST پشتیبانی میشود.
- تنها احراز هویت Header عمومی پشتیبانی میشود.
- مقدار هدر در اپلیکیشن بهصورت محرمانه محسوب میشود.
- توکنهای callback و آدرسهای resume بهطور سرور-ساید پردازش میشوند و برای کاربران بهطور مستقیم در دسترس نیستند.
- tenant بهصورت سرور-ساید از کاربر واردشده تعیین میشود، نه از مقداری که مرورگر ارسال میکند.
عیبیابی
- 404 یا webhook ثبت نشده: فرآیند را در n8n فعال کنید و از URL تولیدی استفاده کنید.
- خطای احراز هویت: ب ررسی کنید که نام هدر و مقدار آن در هر دو سیستم دقیقاً برابر باشند.
- دادههای مفقود: بررسی کنید که نامهای فیلدها در اپلیکیشن با کلیدهایی که n8n انتظار دارد مطابقت دارند.
- هیچ درخواستی در n8n نیست: بررسی کنید که فرآیند با یک webhook آغاز میشود و از POST استفاده میکند.
- پنجره اجرایی دائم فعال است: اگر گزینه پایان فرآیند را فعال کردهاید، بررسی کنید که آیا n8n یک callback نهایی را با
completed،failedیاrejectedارسال میکند. اگر انتظار بازخوردی ندارید، همه سه گزینه ثبتنام را غیرفعال کنید. - پیشرفت نامشهود است: بررسی کنید که آیا گزینه Tussentijdse voortgang melden در ثبتنام فعال است یا شیء
integrationحفظ میشود و هر callback یکeventIdمنحصر به فرد دارد. - دکمههای تأیید کار نمیکنند: بررسی کنید که Wait node،
resumeUrl، احراز هویت هدر و مجاز بودن کاراکترها درchoices[].valueدرست باشد.