الإجراءات (Actions)

ما يستطيع الـ workflow فعله.

الـ actionالوصفالمخرجات الرئيسية
logكتابة سطر في سجل الـ run{logged: true}
send_whatsappإرسال نص أو قالب{wamid, kind}
call_agentاستدعاء LLM{response, agentId}
create_taskإنشاء PmTask{taskId, title}
http_requestاستدعاء API خارجي{status, body}
conditionتفرّع if/else{matched, actual}
waitتأخير قبل العقدة التالية{waitedMs}

الاستيفاء (Interpolation)

كل حقل نصّي في الـ config يدعم {{variable}}. المتغيّرات المتاحة:

  • {{triggerData.*}} — البيانات اللي وصلت من الـ trigger.
  • {{nodeId.field}} — مخرجات أي عقدة سابقة.
jsonمثال: AI → WhatsApp
[
  {
    "id": "generate",
    "type": "call_agent",
    "config": { "agentId": "rashid", "prompt": "اكتب ترحيب لـ {{triggerData.name}}" },
    "next": ["send"]
  },
  {
    "id": "send",
    "type": "send_whatsapp",
    "config": {
      "phone": "{{triggerData.phone}}",
      "text": "{{generate.response}}"
    }
  }
]

الـ condition (الأهم للتفرّع)

condition له شكل خاص. لا يستخدم next[]، بلconfig.trueNodeId + config.falseNodeId.

{
  "id": "check",
  "type": "condition",
  "config": {
    "field": "triggerData.amount",
    "operator": "greater_than",
    "value": 1000,
    "trueNodeId": "vip_flow",
    "falseNodeId": "standard_flow"
  }
}

المُعاملات المتاحة:

  • equals, not_equals
  • contains, not_contains
  • greater_than, less_than
  • exists, not_exists
  • matches (regex)
الانتظار (wait)
لمدد قصيرة (≤60 ثانية): inline sleep. لمدد طويلة: re-queue بـ BullMQ delay — لا يعلق worker.