| النوع | متى يُشغَّل | الاستخدام النموذجي |
|---|---|---|
MANUAL | اضغط زر “تشغيل” | اختبار + مهام لمرّة واحدة |
EVENT | EventEmitter داخلي | ربط workflows بأحداث النظام (task.completed، إلخ) |
CRON | وقت محدّد | تقارير دورية، تنظيف، تذكيرات |
WEBHOOK | POST خارجي للـ endpoint | تكاملات مع Zapier، Make، أنظمة خارجية |
KEYWORD | كلمة في رسالة WhatsApp | ردود FAQ، استلام طلبات، تصنيف عملاء |
MANUAL
الأبسط. لا config. تشغّله من واجهة الـ workflow detail أو عبر API:
POST /api/automation/workflows/{id}/fire
Body: { "any": "trigger data you want" }EVENT
النظام يبثّ أحداث على EventEmitter2 wildcard bus (task.*، plan.*،whatsapp.message.received، إلخ). الـ workflow يلتقط أحداث محدّدة.
{
"eventName": "task.completed"
}نصيحة
يدعم glob:
task.* تطابق task.completed + task.failed.CRON
تعبير cron قياسي (5 حقول). توقيت آسيا/الرياض افتراضياً.
{
"cronExpression": "0 9 * * 1",
"timezone": "Asia/Riyadh"
}WEBHOOK
URL تلقائي: POST /api/automation/webhook/{workflowId}. الـ payload الـ JSON المُرسَل يصبح triggerData.body، والـ headers تصبح triggerData.headers.
معلومة
الـ endpoint عام (Public) — لا يحتاج auth. كذلك يستجيب بـ 200 مع
{status:"ignored"}لو الـ workflow غير موجود/مفعّل — لا يكشف وجود الـ ID.KEYWORD
يستمع لـ whatsapp.message.received ويطابق نص الرسالة.
{
"keywords": ["سعر", "تكلفة", "كم", "price"],
"matchType": "contains"
}contains(افتراضي) — الكلمة جزء من الرسالة.exact— الرسالة كاملة = الكلمة.startsWith— الرسالة تبدأ بالكلمة.