צמתי לוגיקה
צמתי לוגיקה שולטים בזרימת ה-workflow. הם מאפשרים ליצור הסתעפויות לפי תנאים, לאכוף rate limits ולסיים במפורש מסלולי הרצה.
logic.switch
הסתעפות דטרמיניסטית על בסיס תנאים.
צומת Switch בודק קבוצת תנאים ומנתב את ההרצה למסלול המתאים. אפשר לחשוב עליו כסדרה של בדיקות if/else-if עם fallback ברירת מחדל.
קונפיגורציה
| Option | Type | Required | Description |
|---|
conditions | array | Yes | רשימת אובייקטים של תנאים, כל אחד עם field, operator ו-value |
conditions[].field | string | Yes | שדה ההקשר שנבדק, למשל message.text, contact.tags, contact.language |
conditions[].operator | string | Yes | אופרטור השוואה: equals, contains, starts_with, ends_with, gt, lt, in, not_equals |
conditions[].value | string | Yes | הערך להשוואה |
conditions[].label | string | Yes | תווית קריאה למסלול, כפי שתופיע על ידית היציאה |
Outputs
כל תנאי יוצר ידית יציאה מסומנת, ובנוסף יש ידית default עבור הודעות שלא התאימו לשום תנאי.
| Output | Description |
|---|
[condition label] | ידית אחת לכל תנאי, מופעלת כאשר אותו תנאי מתקיים |
default | מופעלת כאשר אף תנאי לא מתקיים |
Connections
- Inputs: ידית כניסה אחת מהצומת הקודם
- Outputs: ידית אחת לכל תנאי ועוד ידית default
דוגמת שימוש
אחרי ש-AI Router מסווג הודעה כ-”billing”, “support” או “sales”, אפשר להשתמש ב-Switch כדי לנתב כל קטגוריה לצומת AI Respond אחר עם system prompt ייעודי. מסלול ה-default יכול להוביל לתשובת עזרה כללית.
logic.rate_limit
מניעת ספאם ובקרת עלויות באמצעות Redis counters.
צומת Rate Limit עוקב אחרי תדירות ההודעות וחוסם עיבוד כאשר עוברים את הסף. כך אפשר להגן על תקציב הטוקנים של ה-AI ולמנוע ניצול לרעה.
קונפיגורציה
| Option | Type | Required | Description |
|---|
maxCount | number | Yes | מספר האירועים המרבי המותר בתוך חלון הזמן |
windowSeconds | number | Yes | חלון הזמן בשניות, למשל 3600 עבור שעה |
scope | string | Yes | טווח ההגבלה: per-contact עבור איש קשר בודד, או per-tenant עבור כל ה-workspace |
Outputs
| Output | Description |
|---|
allowed | הבקשה נמצאת בתוך מגבלת הקצב ויכולה להמשיך |
rate_limited | הבקשה חרגה מהמגבלה וצריך לטפל בה בהתאם |
Connections
- Inputs: ידית כניסה אחת מהצומת הקודם
- Outputs: שתי ידיות,
allowed ו-rate_limited
דוגמת שימוש
מקמו את Rate Limit מיד אחרי ה-trigger כדי להגביל כל contact ל-20 הודעות בשעה. חברו את allowed לזרימת ה-AI, ואת rate_limited להודעה מנומסת שמבקשת להאט או אל logic.end.
Rate limits משתמשים ב-Redis atomic counters, ולכן הם עובדים נכון גם תחת מקביליות גבוהה כאשר כמה workers מעבדים הודעות בו-זמנית.
logic.end
סיום מפורש של workflow run.
צומת End עוצר את ההרצה של המסלול הנוכחי. משתמשים בו כדי לסיים בצורה נקייה מסלולים שלא דורשים עוד עיבוד.
קונפיגורציה
אין אפשרויות קונפיגורציה. הצומת רק מסמן את סוף המסלול.
Outputs
אין. זהו צומת סופי.
Connections
- Inputs: ידית כניסה אחת מהצומת הקודם
- Outputs: אין, זהו צומת טרמינלי
דוגמת שימוש
במסלול ה-default של Switch שבו אף תנאי לא התקיים ולא צריך להשיב, אפשר לחבר אל End כדי לסיים במפורש את ההרצה. זה שימושי גם אחרי מסלול rate-limited שבו לא רוצים לשלוח הודעה בחזרה.