| الـ 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_equalscontains,not_containsgreater_than,less_thanexists,not_existsmatches(regex)
الانتظار (wait)
لمدد قصيرة (≤60 ثانية): inline sleep. لمدد طويلة: re-queue بـ BullMQ delay — لا يعلق worker.