المُحفّزات (Triggers)

ما الذي يُشغّل الـ workflow؟

النوعمتى يُشغَّلالاستخدام النموذجي
MANUALاضغط زر “تشغيل”اختبار + مهام لمرّة واحدة
EVENTEventEmitter داخليربط workflows بأحداث النظام (task.completed، إلخ)
CRONوقت محدّدتقارير دورية، تنظيف، تذكيرات
WEBHOOKPOST خارجي للـ 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 — الرسالة تبدأ بالكلمة.