<!-- נוצר אוטומטית ממקור התיעוד הקנוני של Teloring. אין לערוך קובץ זה. -->

עמוד קנוני: https://docs.teloring.com/he/docs/product/studio/actions
עודכן לאחרונה: 2026-08-20T20:49:57.000Z

# פעולות — בלוקי ה‑THEN

**פעולה** היא שלב ש*עושה משהו*: שולח הודעה, מעדכן שיחה, כותב ל‑CRM שלכם, קורא ל‑API חיצוני, שולח אימייל, או ממיר ערך עבור הבלוק הבא.

הפעולות נושאות את התג הטורקיז **THEN**. אתם מוסיפים אותן מבורר הבלוקים: גררו מחבר מכל בלוק ושחררו אותו על קנבס ריק.

## הרשימה המלאה

| פעולה | קבוצה | מה היא עושה |
| --- | --- | --- |
| [מענה בהודעה](#reply-message) | שיחות | שולחת הודעה ללקוח, ויכולה להשהות את התהליך עד שהוא ישיב. |
| [הערה פרטית](#private-note) | שיחות | מוסיפה הערה פנימית שהלקוח לעולם אינו רואה. |
| [שינוי שיחה](#change-conversation) | שיחות | מוסרת לאדם, לצוות או לתור ההמתנה; מתייגת, קובעת עדיפות, מסמנת כטופל, משנה שם ומגדירה מאפייני שיחה. |
| [סיום סשן](#end-session) | שיחות | משחררת את השיחה מסטודיו, ואופציונלית מסמנת אותה כטופלה. |
| [המתנה](#wait) | זרימה | משהה את המסלול הזה ל‑1–15 שניות. |
| [שמירה כמשתנה](#save-as-variable) | זרימה | שומרת ערך לצמיתות תחת `var.*` עבור הרצות עתידיות. |
| [עדכון איש קשר](#contact-update) | CRM | כותבת לשדות ברשומת איש הקשר. |
| [רשומת לקוח](#customer-record) | CRM | יוצרת או מעדכנת רשומת אובייקט ב‑CRM תחת לקוח. |
| [בקשת HTTP](#http-request) | חיצוני | קוראת ל‑API חיצוני, ואופציונלית לוכדת את התגובה. |
| [שליחת אימייל](#send-email) | חיצוני | שולחת אימייל מתיבה או מהשולח המערכתי של Teloring. |
| [קוד](#code) | כלים | מריצה טרנספורמציית JavaScript קטנה בסביבה מבודדת. |
| [תאריך ושעה](#date-and-time) | כלים | מקבלת, מעצבת, מוסיפה, מחסירה, משווה, מחלצת או מעגלת תאריכים. |
| [שליחת התראת Teloring](#send-teloring-notification) | כלים | מתריעה לנציגים בתוך Teloring — פעמון, צליל, אימייל ודחיפה בדפדפן. |
| [השמעת צליל](./voice-flows.md#play-sound) | קול | משמיעה הקלטה למתקשר. |
| [המתנה / השהיה](./voice-flows.md#wait--pause) | קול | משהה את השיחה לרגע קצר. |
| [תפריט IVR](./voice-flows.md#ivr-menu) | קול | משמיעה תפריט ומנתבת לפי ספרה במקלדת. |
| [העברה לנציג](./voice-flows.md#forward-to-agent) | קול | מצלצלת לנציג בדפדפן ומגשרת את השיחה. |
| [העברה לטלפון חיצוני](./voice-flows.md#forward-to-external-phone) | קול | מעבירה את השיחה למספר חיצוני. |
| [ניתוק](./voice-flows.md#hang-up) | קול | מסיימת את השיחה. |

בלוקי הסתעפות — **תנאי If/Else**, **שעות פעילות**, **זמינות נציגים** — נושאים את תג הענבר **IF** ומתועדים ב[תנאים](./conditions.md).

## דברים שנכונים לכל פעולה

- **שדות טקסט מקבלים משתנים.** הקלידו `{{` או גררו משתנה ממדור **המשתנים הזמינים**. ראו [משתנים](./variables.md).
- **פלטים הופכים למשתנים.** כל מה שפעולה מפיקה זמין לכל בלוק שאחריה.
- **התפצלות מריצה הכול.** אם מפעולה יוצאים שלושה מחברים, כל שלושת המסלולים רצים.
- **פעולה שנכשלת עוצרת את המסלול שלה בלבד**, לא את כל התהליך — הסתעפויות אחרות ממשיכות.

---

## מענה בהודעה {#reply-message}

שולחת הודעה ללקוח בשיחה, בדיוק כאילו נציג הקליד אותה. היא יוצאת בערוץ שבו השיחה מתנהלת — WhatsApp, אימייל, SMS, טלגרם, צ׳אט באתר וכן הלאה.

זה גם הבלוק שהופך תהליך לשיחה: הפעילו את **המתנה לתשובת הלקוח** והתהליך יושהה עד שהלקוח ישיב.

*תהליכי הודעות בלבד.*

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **מזהה השיחה** | לאיזו שיחה לשלוח. השאירו את ברירת המחדל כדי להשיב בשיחה שהפעילה את התהליך. | `{{conversation.id}}` |
| **הודעה** *(חובה)* | הטקסט לשליחה. השתמשו במשתנים להתאמה אישית. | ריק |
| **המתנה לתשובת הלקוח** | משהה את המסלול הזה עד שהלקוח משיב. התשובה שלו הופכת ל‑`{{message.content}}` החדש וזמינה גם כ‑`{{client_reply.content}}`. | כבוי |
| **פסק זמן להמתנה (דקות)** | כמה זמן להמתין לפני ויתור. **0 פירושו ללא פסק זמן** — התהליך ממשיך להמתין. בכל מקרה Teloring מחזיקה תהליך ממתין עד 30 יום. מופיע רק כשההמתנה מופעלת. | 0 |

![הגדרת מענה בהודעה](pathname:///img/screenshots/he/product/studio/action-reply-message.png)

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{reply.message_id}}` | ההודעה שנשלחה |
| `{{reply.conversation_id}}` | לאן היא נשלחה |
| `{{reply.sent_at}}` | מתי |
| `{{reply.status}}` | סטטוס השליחה |
| `{{client_reply.content}}` | מה הלקוח השיב (כשיש המתנה) |
| `{{client_reply.content_type}}` | סוג התשובה |
| `{{client_reply.message_id}}` · `{{client_reply.received_at}}` | הודעת התשובה וחותמת הזמן |

### איך ההמתנה מתנהגת

- כל עוד התהליך ממתין, השיחה נשארת בתור **בוט סטודיו**.
- תשובת הלקוח נצרכת על ידי התהליך הממתין — היא **אינה** מתחילה הרצה שנייה של אותו תהליך.
- לאחר ההמתנה, אפשר לבדוק את התשובה גם עם `{{message.content}}` וגם עם `{{client_reply.content}}`; שניהם מכילים את אותו טקסט.
- אם תנאי שאחרי המתנה אינו תואם לאף הסתעפות ואין הסתעפות ELSE, התהליך ממשיך להמתין באותו תנאי ומעריך אותו מחדש בהודעה הבאה של הלקוח. הוסיפו הסתעפות ELSE, או בלוק [סיום סשן](#end-session), כדי שלקוח לעולם לא ייתקע בתוך התהליך.
- אם פסק הזמן פג, ההרצה מסתיימת בסטטוס `timed_out`.

:::tip
שאלו שאלה אחת בכל מענה בהודעה. שתי שאלות בהודעה אחת מקבלות תשובה אחת, ולתנאי שלכם אין מה להתאים בצורה נקייה.
:::

---

## הערה פרטית {#private-note}

מוסיפה **הערה פנימית** לשיחה. היא מופיעה בציר הזמן של השיחה עבור הנציגים ולעולם אינה נשלחת ללקוח, בשום ערוץ.

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **מזהה השיחה** | איזו שיחה מקבלת את ההערה. | `{{conversation.id}}` |
| **הערה פרטית** | טקסט ההערה. משתנים נתמכים. | ריק |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{private_note.message_id}}` | ההערה |
| `{{private_note.conversation_id}}` | לאן היא נוספה |
| `{{private_note.created_at}}` · `{{private_note.status}}` | מתי, ומה התוצאה |

**שימושים טובים:** לתעד מה בוט אסף לפני המסירה, להדביק סטטוס הזמנה שנמשך מ‑API, או להשאיר את הסיבה להסלמת שיחה.

---

## שינוי שיחה {#change-conversation}

מעדכנת את השיחה — והכי חשוב, זה המקום שבו אתם **מוסרים אותה לאדם**: לנציג ספציפי, ל[צוות](../teams.md) שלם או לתור ההמתנה.

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **מזהה השיחה** | טקסט / משתנה | איזו שיחה לעדכן. ברירת המחדל היא `{{conversation.id}}`. |
| **התערבות אנושית** | מופעל / כבוי | מוסר את השיחה לאדם. ‏סטודיו מפסיק להחזיק בה, כך שההודעה הבאה מהלקוח מגיעה לנציג ולא חזרה לתהליך. |
| **מסירה אל** | תור ההמתנה (הנציג הפנוי הבא) · נציג ספציפי · צוות | מופיע כשההתערבות האנושית מופעלת. |
| **נציג** | בוחר נציגים | מופיע כשמוסרים לנציג ספציפי. |
| **צוות** | בוחר צוותים | מופיע כשמוסרים ל[צוות](../teams.md). הסימן `⚡` מציין צוות שמשייך אוטומטית לחבר מחובר; המספר בסוגריים הוא כמות הנציגים בו. |
| **מצב תוויות** | הוספת תוויות · החלפת תוויות · הסרת תוויות | איך התוויות שלמטה מוחלות. |
| **תוויות** | תווית אחת בכל שורה | התוויות להוספה, לקביעה או להסרה. |
| **עדיפות** | ללא שינוי · נמוכה · בינונית · גבוהה · דחופה | קובע את עדיפות השיחה. |
| **סטטוס** | ללא שינוי · פתוחה · ממתינה · טופלה | קובע את סטטוס השיחה. |
| **דגל** | ללא שינוי · ללא · חשוב · למעקב | קובע את דגל השיחה. |
| **נושא** | טקסט / משתנה | משנה את שם השיחה. |
| **מאפייני שיחה** | בוחר מאפיינים + ערך | מגדיר את [מאפייני השיחה](../conversation-attributes.md) של החשבון שלכם בשיחה הזו. בחרו את המאפיין, הקלידו את הערך — משתנים מותרים. ראו למטה. |

![הגדרת שינוי שיחה](pathname:///img/screenshots/he/product/studio/action-conversation-update.png)

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{conversation.status}}` | תוצאת העדכון |
| `{{conversation.updated_fields}}` | אילו שדות השתנו |
| `{{conversation.handover}}` | `queue`,‏ `agent`,‏ `team` או ריק |
| `{{conversation.handover_agent_id}}` | הנציג שאליו נמסרה — במסירה לצוות, החבר ששויך אוטומטית, או ריק אם היא ממתינה בתור |
| `{{conversation.handover_team_id}}` | [הצוות](../teams.md) שאליו נמסרה |
| `{{conversation.handover_team_name}}` | שם הצוות הזה |
| `{{conversation.custom_attributes}}` | כל מאפייני השיחה, כאובייקט אחד |
| `{{conversation.custom_attributes.<api_id>}}` | מאפיין בודד — למשל `{{conversation.custom_attributes.reason_for_contact}}` |

### הגדרת מאפייני שיחה {#setting-conversation-attributes}

[מאפייני שיחה](../conversation-attributes.md) הם השדות של החשבון שלכם על שיחה — *סיבת הפנייה*, *תוצאה*, *מספר הזמנה*. הם נמצאים בבלוק הזה ולא בבלוק נפרד, כי הם שדות של השיחה בדיוק כמו עדיפות ונושא.

לחצו **הוספת שדה** תחת **מאפייני שיחה**, בחרו מאפיין ותנו לו ערך. הערך מקבל משתנים, כך שתהליך יכול לסווג שיחה לפי מה שהוא כבר יודע:

| התהליך | מגדיר |
| --- | --- |
| תפריט שואל "במה מדובר?" | *סיבת הפנייה* = הכפתור שהלקוח לחץ |
| טופס פותח את השיחה | *מספר הזמנה* = `{{answers.order_number}}` |
| [בקשת HTTP](#http-request) מאתרת את הלקוח | *רמת החשבון* = `{{http.json.tier}}` |
| הבוט מסמן את השיחה כטופלה בעצמו | *תוצאה* = `נפתר על ידי הבוט` |

| כלל | התנהגות |
| --- | --- |
| הערכים מאומתים | ערך שאינו אחת מהאפשרויות ברשימה נפתחת **מכשיל את הבלוק**, כך שתהליך לעולם לא יכתוב משהו שפאנל הנציג יסרב להציג. |
| מאפיינים שנמחקו מדולגים | מאפיין שהוסר מההגדרות אחרי שהתהליך נבנה נדחה, והבלוק ממשיך לרוץ. |
| מאפיינים אחרים נשמרים | הגדרת מאפיין אחד לעולם אינה מנקה את השאר. |
| בחירה מרובה | הפרידו ערכים בפסיקים או בשורות חדשות. |

הבלוק מפיק את הערכים ה**חדשים**, כך שכל בלוק שאחריו — ובראשם בקשת HTTP — רואה את מה שנכתב זה עתה. המאפיינים זמינים גם מהטריגר, בלי הבלוק הזה, ב**הודעה נכנסת**, ב**שיחה נכנסת** וב**שינוי בשיחה**. ראו [משתנים](./variables.md#conversation-attributes).

### להבין את ההתערבות האנושית

| הגדרה | מה קורה |
| --- | --- |
| **כבויה** | רק התוויות, העדיפות, הסטטוס, הדגל והנושא משתנים. ‏סטודיו ממשיך להחזיק בשיחה והודעות מאוחרות יותר עדיין מריצות את התהליך. |
| **מופעלת ← נציג ספציפי** | השיחה משויכת לאותו נציג ויוצאת מתור בוט סטודיו. אם השיחה הייתה בצוות שהנציג אינו חבר בו, הצוות מנוקה. |
| **מופעלת ← צוות** | הצוות מקבל בעלות. אם הצוות משייך אוטומטית לנציג מחובר, אחד מחבריו המחוברים מקבל אותה מיד; אחרת היא ממתינה בתור ו**רק חברי הצוות הזה** יכולים למשוך אותה עם **קבלת הבא בתור**. שיחה שטופלה נפתחת מחדש תחילה. |
| **מופעלת ← תור ההמתנה** | השיחה מוסרת מכל שיוך ונשלחת לתור **ממתינות בתור** עבור מי שיתפנה הבא. שיחה שטופלה נפתחת מחדש תחילה, כי שיחה שטופלה אינה יכולה להמתין בתור. |

בכל מקרה, המסירה **נשארת בתוקף**: הודעות מאוחרות יותר בשיחה הזו לא יימשכו בחזרה לתהליך הזה — ולא לשום תהליך חי אחר. המסירה מנוקה אוטומטית כשהשיחה מסומנת כטופלה, כששיחה משויכת לנציג ספציפי, או כשתהליך מריץ [סיום סשן](#end-session).

:::warning שני דברים לבדוק במסירה לצוות
- **בחרו את הצוות.** אם **מסירה אל** מוגדר ל**צוות** אך לא נבחר צוות, המסירה נופלת חזרה לתור ההמתנה הרגיל. העורך מסמן את הבלוק בזמן העריכה.
- **מחיקת צוות שוברת את הבלוק.** אם הצוות שנבחר נמחק בהמשך, הבלוק **נכשל** בזמן ריצה במקום להחנות את השיחה בצוות שכבר אינו קיים. סקרו את התהליכים החיים שלכם אחרי מחיקת צוות.
:::

:::tip
לכל תהליך שמדבר עם לקוחות צריך להיות מסלול לאדם. חברו הסתעפות של "אני רוצה לדבר עם מישהו", או הסתעפות גיבוי, לבלוק שינוי שיחה עם **התערבות אנושית** מופעלת.
:::

---

## סיום סשן {#end-session}

מסיימת את מעורבות סטודיו בשיחה. ההודעה הבאה מאותו לקוח מתחילה התאמת טריגרים מאפס, כאילו התהליך מעולם לא רץ.

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **מזהה השיחה** | איזו שיחה לשחרר. | `{{conversation.id}}` |
| **לסמן גם את השיחה כטופלה?** | מסמנת גם את השיחה כטופלה. | כבוי |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{session.status}}` | תוצאה |
| `{{session.conversation_id}}` | השיחה |
| `{{session.resolved}}` | האם היא גם סומנה כטופלה |

### סיום סשן מול התערבות אנושית

| השתמשו ב | מתי |
| --- | --- |
| **סיום סשן** | הבוט סיים את תפקידו. אף אחד מסוים לא צריך לפעול, וההודעה ה*באה* צריכה להיות מסוגלת להתחיל תהליך שוב. |
| **שינוי שיחה ← התערבות אנושית** | אדם או צוות צריכים לקחת את השיחה הזו עכשיו. |

---

## המתנה {#wait}

משהה את **המסלול הזה** בתהליך למספר שניות לפני ההמשך. השתמשו בה כדי לפזר הודעות, כך שבוט יישמע פחות רובוטי.

*תהליכי הודעות בלבד. תהליכי קול משתמשים ב[המתנה / השהיה](./voice-flows.md#wait--pause).*

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **משך ההמתנה (שניות)** | בין שנייה אחת ל‑15 שניות. | 3 |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{wait.seconds}}` | כמה זמן הוא המתין |

:::info
ההמתנה מעכבת רק את ההסתעפות שהיא יושבת עליה. אם הטריגר מזין גם הסתעפות אחרת, ההסתעפות ההיא רצה מיד — היא אינה ממתינה בתור אחרי ההמתנה.
:::

---

## שמירה כמשתנה {#save-as-variable}

שומרת ערך **לצמיתות**, כך שהרצות מאוחרות יותר של אותו תהליך יוכלו לקרוא אותו בחזרה. משתנים רגילים חיים רק להרצה אחת; משתנה שמור שורד אותה.

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **מפתח המשתנה** | השם שתחתיו לשמור. תמיד בתוך מרחב השמות `var.`. מפתחות דינמיים מותרים, למשל `var.{{contact.phone}}.address`. | `var.my_value` |
| **ערך** | מה לשמור. משתנים נתמכים. | `{{message.content}}` |
| **סוג הערך** | טקסט · מספר · בוליאני · JSON | טקסט |
| **דריסת משתנה קיים** | האם מותר להחליף ערך קיים באותו מפתח. | מופעל |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{saved_variable.key}}` | המפתח המנורמל שנכתב |
| `{{saved_variable.value}}` | הערך השמור |
| `{{saved_variable.status}}` | תוצאה |

### איך משתנים שמורים עובדים

- הם **לכל תהליך בנפרד**. לשני תהליכים יכול להיות `var.counter` משלהם בלי התנגשות.
- הם נטענים ל**כל** הרצה של אותו תהליך, כך ש‑`{{var.my_value}}` זמין כבר מהבלוק הראשון.
- המפתחות נאלצים לתוך מרחב השמות `var.`, כך שערך שמור לעולם אינו יכול לדרוס משתנה של מערכת, של איש קשר, של שיחה או של הודעה.
- תווים לא נתמכים במפתח הופכים לקווים תחתונים.
- סקרו ומחקו אותם ב**⚙ הגדרות התהליך ← משתנים שמורים**.

**שימושים טובים:** לזכור העדפה של לקוח לפי מספר טלפון, לשמור את המזהה האחרון שסונכרן ממערכת חיצונית, או להחזיק מונה מצטבר.

---

## עדכון איש קשר {#contact-update}

כותבת לשדות ברשומת איש הקשר — האדם, לא החברה.

### מאפיינים

| מאפיין | מה הוא עושה | ברירת מחדל |
| --- | --- | --- |
| **מזהה איש הקשר** | איזה איש קשר לעדכן. | `{{contact.id}}` |
| **שדות לעדכון** | שורות של שדה ← ערך. שם השדה הוא **רשימה נפתחת של שדות איש הקשר שהחשבון שלכם באמת הגדיר** בעורך השדות. שדה שכבר בשימוש בשורה אחת נעלם מהרשימות האחרות. הערכים תומכים במשתנים. | ריק |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{contact.status}}` | תוצאה |
| `{{contact.updated_fields}}` | אילו שדות נכתבו |

:::note
שדות מערכת מוגנים אינם ניתנים לכתיבה על ידי תהליך. אם שדה שאתם מצפים לו חסר ברשימה, הוסיפו אותו קודם ב**עורך השדות** של איש הקשר — ראו [CRM ולקוחות](../crm.md).
:::

---

## רשומת לקוח {#customer-record}

יוצרת או מעדכנת **רשומת אובייקט ב‑CRM** תחת לקוח — קריאת שירות, הזמנה, הערה, חוזה, או כל אובייקט אחר שהחשבון שלכם הגדיר.

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **פעולה** | הוספת רשומה חדשה · עריכת רשומה קיימת | האם ליצור או לעדכן. |
| **מזהה הלקוח** | טקסט / משתנה | לאיזה לקוח הרשומה שייכת. ברירת המחדל היא `{{customer.id}}`. |
| **סוג האובייקט** *(חובה)* | רשימה נפתחת של אובייקטי ה‑CRM המופעלים בחשבון | איזה אובייקט הרשומה הזו. **רשימת השדות שלמטה נגזרת מהבחירה הזו.** |
| **מזהה הרשומה** | טקסט / משתנה | איזו רשומה לערוך. מופיע רק עבור **עריכת רשומה קיימת**. |
| **שדות הרשומה** | שורות של שדה ← ערך | הרשימה הנפתחת מציגה את השדות האמיתיים של סוג האובייקט שנבחר. מושבתת עד שנבחר סוג אובייקט. הערכים תומכים במשתנים. |

![הגדרת רשומת לקוח](pathname:///img/screenshots/he/product/studio/action-customer-record.png)

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{record.status}}` | `created` או `updated` |
| `{{record.id}}` | הרשומה |
| `{{record.schema_id}}` | סוג האובייקט |
| `{{record.customer_id}}` | הלקוח |

הערכים מאומתים מול הגדרות השדות של האובייקט לפני שנכתב משהו, כך שערך שגוי מכשיל את הבלוק במקום להשחית את הרשומה.

:::tip
יצירת רשומה כאן מפעילה את [טריגר רשומת הלקוח](./triggers.md#customer-record-trigger). זה שימושי לשרשור תהליכים — אבל היזהרו מתהליך שמפעיל את עצמו.
:::

---

## בקשת HTTP {#http-request}

שולחת נתונים למערכת חיצונית, או מושכת נתונים ממנה. זהו הגשר הכללי בין Teloring לשאר המערכות שלכם.

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **שיטה** | GET · POST · PUT · PATCH · DELETE · COPY · HEAD · OPTIONS | שיטת ה‑HTTP. |
| **כתובת** *(חובה)* | טקסט / משתנה | הכתובת המלאה. משתנים נתמכים, למשל `https://api.example.com/orders/{{contact.id}}`. |
| **כותרות הבקשה** | שורות מפתח/ערך | כל כותרת שתצטרכו. ‏`Content-Type`, ‏`Cache-Control`, ‏`User-Agent` ו‑`Accept` מוצעות כערכים מוכנים. הערכים תומכים במשתנים. |
| **סוג הגוף** | ללא · JSON · Form data | מה לשלוח בגוף הבקשה. |
| **גוף JSON** | אזור טקסט | מופיע עבור JSON. חייב להיות JSON תקין. |
| **שדות טופס** | שורות מפתח/ערך | מופיע עבור Form data. הערכים תומכים במשתנים. |
| **פסק זמן לבקשה (שניות)** | 1–60 | כמה זמן להמתין לשרת. |
| **לכידת התגובה לפעולות הבאות** | מופעל / כבוי | ראו למטה. |

![הגדרת בקשת HTTP](pathname:///img/screenshots/he/product/studio/action-http-request.png)

### לכידת התגובה — מופעל או כבוי?

| הגדרה | התנהגות | השתמשו כאשר |
| --- | --- | --- |
| **כבוי** | שגר ושכח. הבקשה נכנסת לתור ונשלחת ברקע; התהליך ממשיך מיד. | אתם מיידעים מערכת חיצונית ואינכם זקוקים לתשובתה. |
| **מופעל** | התהליך ממתין לתגובה וחושף אותה כמשתנים. | אתם זקוקים לתשובה — סטטוס הזמנה, מחיר, מזהה לקוח. |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{http.status}}` | סטטוס השליחה |
| `{{http.task_id}}` | מזהה משימת הרקע, כשהלכידה כבויה |
| `{{http.status_code}}` | קוד סטטוס HTTP, למשל `200` |
| `{{http.ok}}` | `true` עבור תגובת 2xx |
| `{{http.content_type}}` | סוג התוכן של התגובה |
| `{{http.body}}` | גוף התגובה הגולמי |
| `{{http.json}}` | התגובה מפוענחת כ‑JSON |
| `{{http.headers}}` | כותרות התגובה |
| `{{http.error}}` | השגיאה, אם הקריאה נכשלה |

כאשר התגובה היא אובייקט JSON, השדות שלה משוטחים גם למשתנים נפרדים — `{{http.json.order_id}}`, `{{http.json.customer.name}}` וכן הלאה.

### משתנים בתוך גוף JSON {#variables-in-a-json-body}

סטודיו מודע לטיפוסים כשהוא ממלא גוף JSON:

- משתנה שממלא **ערך שלם** — כתוב חשוף (`"answers": {{answers.list}}`) או כמחרוזת שלמה במרכאות (`"answers": "{{answers.list}}"`) — שומר על טיפוס ה‑JSON האמיתי שלו. מערכים נשארים מערכים, מספרים נשארים מספרים, אובייקטים נשארים אובייקטים.
- משתנה **בתוך מחרוזת ארוכה יותר** (`"greeting": "שלום {{contact.name}}!"`) מוחלף כטקסט, עם מרכאות ותווים מיוחדים שעברו בריחה בטוחה.
- משתנה שאין לו ערך נשאר כפי שהוא.

העורך מאמת את ה‑JSON תוך כדי ההקלדה. ‏JSON לא תקין צובע את התיבה באדום ומוסיף תג אזהרה על הבלוק; אפשר להמשיך לערוך, אבל תקנו לפני הפרסום.

### אבטחה

סטודיו קורא רק לכתובות **ציבוריות** ב‑`http://` וב‑`https://`. כתובות localhost, רשתות פרטיות, loopback,‏ link-local וכתובות מטא‑דאטה של ספקי ענן חסומות, כך שתהליך לעולם אינו יכול לשמש כדי להגיע לתוך התשתית.

---

## שליחת אימייל {#send-email}

שולחת אימייל. זו שליחה נקייה — היא **אינה** יוצרת שיחה, איש קשר או הודעה בציר הזמן של תיבה כלשהי, כך שאפשר לשלוח אימייל למנהל, לספק או לכתובת פנימית בלי לזהם תיבה.

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **שליחה מ** | אחת מתיבות האימייל שלי · השולח המערכתי של Teloring | ממי האימייל מגיע. |
| **תיבת אימייל** | רשימה נפתחת של תיבות אימייל מחוברות | מופיעה עבור אפשרות התיבה. כל תיבת אימייל מחוברת יכולה לשלוח — גם תיבות שיחות וגם תיבות לשליחה בלבד. |
| **שולח מערכתי** | הודעה לקריאה בלבד | מופיעה עבור אפשרות המערכת, ומציגה את הכתובת שתשמש. |
| **אל** *(חובה)* | טקסט / משתנה | כתובת אחת או יותר. ברירת המחדל היא `{{contact.email}}`. |
| **CC** · **BCC** · **כתובת למענה** | טקסט / משתנה | אופציונלי. |
| **נושא** *(חובה)* | טקסט / משתנה | שורת הנושא. |
| **פורמט הגוף** | טקסט רגיל · HTML | איך הגוף נכתב. |
| **גוף** *(חובה)* | אזור טקסט | תוכן האימייל. משתנים נתמכים. |
| **כותרות מותאמות** | שורות מפתח/ערך | כותרות טכניות אופציונליות. ‏`X-Teloring-Flow`, ‏`X-Campaign`, ‏`X-Priority` ו‑`List-Unsubscribe` מוצעות כערכים מוכנים. |

![הגדרת שליחת אימייל](pathname:///img/screenshots/he/product/studio/action-send-email.png)

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{email.status}}` | `sent`,‏ `failed` או `test` |
| `{{email.message_id}}` | ההודעה שנשלחה |
| `{{email.from}}` · `{{email.to}}` · `{{email.subject}}` | מה נשלח, ולמי |
| `{{email.provider}}` | איזה שירות מסר אותו |
| `{{email.error}}` | השגיאה, אם נכשל |

### נמענים ומגבלות

- השדות **אל**, **CC**, **BCC** ו**כתובת למענה** מקבלים כמה כתובות מופרדות בפסיקים, בנקודה‑פסיק או בשורות חדשות, ומזהים את התבנית `Name <address@example.com>`.
- כל כתובת מאומתת וכפילויות מוסרות. לכל היותר **25 נמענים** בסך הכול.
- לכל היותר **10** כותרות מותאמות. כותרות מיעון ושרשור (From, To, Cc, Bcc, Reply-To, Subject, Message-ID, Content-Type, …) נקבעות בשדות שלמעלה ואינן ניתנות לדריסה כאן.
- בכל פורמט גוף שתבחרו, נשלחים גם חלק טקסט וגם חלק HTML, כך שהאימייל מוצג נכון בכל מקום.

:::caution
תשובות ל**שולח המערכתי של Teloring** אינן חוזרות אל Teloring. אם אתם רוצים לקבל תשובות, שלחו מאחת מהתיבות שלכם או הגדירו **כתובת למענה**.
:::

:::note
**הרצת בדיקה** מזהה את השולח ומאמתת הכול, אך אינה שולחת דבר. הבלוק מדווח `email.status` = `test`.
:::

---

## קוד {#code}

מריצה טרנספורמציית **JavaScript** קטנה ומחזירה ערך לבלוקים שאחריה. השתמשו בה לדברים ששדה טקסט אינו יכול לעשות: ניקוי מספר טלפון, פיצול שם, עיצוב מחדש של מזהה, בחירת פריט אחד מתוך רשימה.

### מאפיינים

| מאפיין | מה הוא עושה |
| --- | --- |
| **קוד JavaScript** *(חובה)* | הקוד להרצה. הוא **חייב** להחזיר ערך באמצעות `return`. |

בלוקים חדשים מתחילים עם דוגמה עובדת:

```javascript
const phone = "{{contact.phone}}";
const cleanNumber = phone.replace(/^\+/, '');
return cleanNumber;
```

### קריאת משתנים

שתי דרכים, שתיהן תקינות:

```javascript
// 1 — מוחלף לפני הרצת הקוד
const name = "{{contact.name}}";

// 2 — נקרא מאובייקט המשתנים הקפוא
const phone = variables["contact.phone"];
```

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{code.status}}` | תוצאה |
| `{{code.result}}` | הערך שהוחזר, עם שמירה על הטיפוס שלו |
| `{{code.result_text}}` | הערך שהוחזר כטקסט |
| `{{code.error}}` | השגיאה, אם הקוד נכשל |

### מה הסביבה המבודדת מתירה

בלוק הקוד רץ בבידוד, עם תקרת זיכרון ומגבלת זמן קצרה. הוא נועד לעיבוד נתונים בלבד:

| מותר | חסום |
| --- | --- |
| פעולות על מחרוזות, מספרים, מערכים, אובייקטים, תאריכים וביטויים רגולריים | `fetch`,‏ `XMLHttpRequest`,‏ `WebSocket` — אין רשת |
| אובייקט ה‑`variables` וכל `{{variable}}` שתחליפו | `require`,‏ `import`,‏ `process` — אין מודולים, אין סביבה |
| החזרת כל ערך שניתן להמרה ל‑JSON | `eval`,‏ `Function`,‏ `WebAssembly` |

קוד שאינו מחזיר ערך מכשיל את הבלוק בכוונה, כך שהתהליך לעולם לא ימשיך עם נתונים חסרים. כדי לקרוא לשירות חיצוני, השתמשו ב[בקשת HTTP](#http-request).

---

## תאריך ושעה {#date-and-time}

מחשבת ומעצבת תאריכים. כל פעולה מודעת לאזור זמן.

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **פעולה** | קבלת התאריך/השעה הנוכחיים · הוספת זמן · החסרת זמן · עיצוב תאריך · חילוץ חלק · זמן בין תאריכים · עיגול תאריך | מה לחשב. |
| **תאריך קלט** | טקסט / משתנה | התאריך לעבוד עליו, בפורמט ISO. **השאירו ריק עבור "עכשיו".** |
| **תאריך שני** | טקסט / משתנה | התאריך השני. מופיע עבור **זמן בין תאריכים**. |
| **כמות** | מספר | כמה להוסיף או להחסיר. מופיע עבור **הוספה** ו**החסרה**. |
| **יחידה** | שניות · דקות · שעות · ימים · שבועות | היחידה עבור הכמות. |
| **חלק** | תאריך · שעה · שנה · חודש · יום · שעה · דקה · יום בשבוע | איזה חלק לחלץ. מופיע עבור **חילוץ חלק**. |
| **פורמט** | טקסט | תבנית הפלט, למשל `%Y-%m-%d %H:%M:%S`. מופיע עבור **עיצוב תאריך**. |
| **אזור זמן** | טקסט | אזור הזמן שבו החישוב מתבצע. ברירת המחדל היא `Asia/Jerusalem`. |

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{datetime.status}}` | תוצאה |
| `{{datetime.result}}` | הערך המחושב |
| `{{datetime.result_text}}` | הערך כטקסט |
| `{{datetime.date}}` · `{{datetime.time}}` | חלק התאריך וחלק השעה |
| `{{datetime.timestamp}}` | חותמת זמן Unix |

**שימושים טובים:** לחשב תאריך מעקב בעוד שלושה ימים, לעצב חותמת זמן להודעה ללקוח, או למדוד כמה זמן שיחה פתוחה לפני שמחליטים להסלים.

---

## שליחת התראת Teloring {#send-teloring-notification}

מתריעה לנציגים **בתוך Teloring** — פעמון ההתראות, צליל, אימייל ודחיפה בדפדפן. השתמשו בה לכל דבר ששני סוגי ההתראות המובנים אינם מכסים: ליד חדש, סף באנליטיקס, ‏SLA שעומד להיפרץ, הגשת טופס, לקוח VIP שכותב.

זהו החצי הגמיש של [ההתראות](../notifications.md). עמוד הפרופיל מגיע עם שני סוגים מוכנים ("שיחה שויכה אליי" ו"הגיעה הודעה חדשה"), כך שנציג שלעולם אינו פותח את סטודיו עדיין מקבל משהו שימושי. כל מה שמעבר לכך נבנה כאן.

:::info התהליך בוחר מה ולמי. הנמען בוחר איך.
הבלוק הזה קובע את ה**טקסט** ואת ה**נמענים**. הוא לעולם אינו קובע איך ההתראה מגיעה אליהם — זה נשאר אצל כל נציג, בפרופיל שלו.

נציג שהפעיל רק את הפעמון מקבל רשומה בפעמון. עמית שנמצא באותה התראה והפעיל את כל ארבע השיטות מקבל צליל, אימייל, דחיפה *וגם* רשומה בפעמון. נציג שההתראות שלו כבויות — או ש**התראות סטודיו** שלו כבויות — אינו מקבל דבר, והתהליך ממשיך כרגיל.
:::

### מאפיינים

| מאפיין | אפשרויות | מה הוא עושה |
| --- | --- | --- |
| **שליחה אל** *(חובה)* | נציגים ספציפיים · הנציג המשויך לשיחה הזו · כל חברי צוות | מי מקבל התראה. |
| **נציגים** | רשימת סימון של נציגים | מופיעה עבור *נציגים ספציפיים*. נציגים אנושיים בלבד — לנציג AI אין תיבה לקבלת התראות. |
| **צוות** | רשימה נפתחת של צוותים | מופיעה עבור *כל חברי צוות*. כל חבר מקבל התראה. |
| **מזהה השיחה** | טקסט / משתנה | מופיע עבור *הנציג המשויך לשיחה הזו*. ברירת המחדל היא `{{conversation.id}}`. |
| **הודעה** *(חובה)* | אזור טקסט | הטקסט שהנציגים רואים. משתנים נתמכים — `איש קשר חדש {{contact.name}} נוצר!` |
| **פרטים נוספים** | אזור טקסט | שורה שנייה אופציונלית, שמוצגת ברשימת הפעמון, באימייל ובדחיפה בדפדפן. |
| **לחיצה על ההתראה פותחת** | את השיחה מהתהליך הזה · כלום — טקסט בלבד · עמוד ספציפי ב‑Teloring | לאן ההתראה מקשרת. |
| **עמוד ב‑Teloring** | טקסט / משתנה | מופיע עבור אפשרות העמוד הספציפי. נתיב בתוך Teloring, כמו `/dashboard/customers`. |

![הגדרת שליחת התראת Teloring](pathname:///img/screenshots/he/product/studio/action-notify-agents.png)

### פלטים

| משתנה | מכיל |
| --- | --- |
| `{{notification.status}}` | `sent`,‏ `no_recipients`,‏ `test_mode` או `failed` |
| `{{notification.recipients}}` | לכמה נציגים ההתראה כוונה |
| `{{notification.delivered}}` | כמה באמת קיבלו משהו, אחרי שההגדרות האישיות שלהם הוחלו |
| `{{notification.message}}` | הטקסט הסופי, עם משתנים שפוענחו |
| `{{notification.error}}` | השגיאה, אם נכשל |

`recipients` ו‑`delivered` הם בדרך כלל המספרים שאתם צריכים בזמן איתור תקלות. ‏`recipients: 3, delivered: 0` פירושו שהתהליך מצא שלושה נציגים ולאף אחד מהם לא היו התראות סטודיו מופעלות.

### להבין את "שליחה אל"

| אפשרות | מתורגמת ל | כשאף אחד אינו תואם |
| --- | --- | --- |
| **נציגים ספציפיים** | בדיוק הנציגים שסימנתם. | הבלוק מדווח `no_recipients`. |
| **הנציג המשויך לשיחה הזו** | מי שמחזיק כרגע בשיחה. | לשיחה ללא שיוך אין בעלים, ולכן הבלוק מסתיים עם `no_recipients`. זו **אינה** שגיאה — התהליך ממשיך. |
| **כל חברי צוות** | כל חבר בצוות שנבחר, ברגע שהבלוק רץ. | צוות ריק או שנמחק מדווח `no_recipients`. |

### מגבלות ובטיחות

- **קישורים חיצוניים בלתי אפשריים.** שדה **עמוד ב‑Teloring** מקבל רק נתיב בתוך Teloring. כתובת מלאה נזרקת, כך שהתראה לעולם אינה יכולה להפוך לקישור לאתר חיצוני.
- שדה **הודעה** נחתך ל‑160 תווים ו**פרטים נוספים** ל‑600.
- הטקסט מוצג כטקסט רגיל בכל מקום שבו הוא מופיע, כולל בתוך האימייל.
- שדה **הודעה** ריק מכשיל את הבלוק. כמו בכל מקום בסטודיו, משתנה שלא ניתן לפענח נשאר גלוי (`{{contact.name}}`) במקום להתרוקן בשקט, כדי שתוכלו לזהות את הטעות.
- אותה התראה אינה יכולה להגיע לאותו נציג פעמיים בתוך 60 שניות.

:::note
**הרצת בדיקה** מזהה את הנמענים ואת הטקסט ומאמתת הכול, אך אינה מתריעה לאיש. הבלוק מדווח `notification.status` = `test_mode`. בדיקת תהליך לעולם אינה מצלצלת לנציגים אמיתיים.
:::

### דוגמה — יידוע צוות המכירות על ליד חדש

1. **טריגר:** שינוי לקוח ← *נוצר*
2. **תנאי:** If/Else ← `{{customer.new.lifecycle_stage}}` שווה ל‑`lead`
3. **ואז:** שליחת התראת Teloring
   - **שליחה אל:** כל חברי צוות ← *מכירות*
   - **הודעה:** `ליד חדש: {{customer.new.name}}`
   - **פרטים נוספים:** `טלפון {{contact.phone}} · מקור {{customer.new.source}}`
   - **לחיצה על ההתראה פותחת:** עמוד ספציפי ב‑Teloring ← `/dashboard/customers`

כל חבר בצוות המכירות שהפעיל **התראות סטודיו** מקבל התרעה, כל אחד בשיטות שהוא בחר.

## הבא

- [תנאים — בלוקי ה‑IF](./conditions.md) — לשלוח את התהליך למסלול הנכון.
- [משתנים](./variables.md) — מדריך המשתנים המלא.
- [מתכוני תהליכים](./examples.md) — הפעולות האלה בתוך תהליכים שלמים.
