<div dir="rtl" lang="he">

# תרגילים - שיעור 1.3: Make.com מתקדם – Routers, Iterators, Error Handling, AI Agents

## מידע כללי
- **שיעור:** 1.3 - Make.com מתקדם
- **סוג השיעור:** מעשי (4 שעות)
- **הערה:** שיעור מעשי. דורש חשבון Make.com פעיל (תוכנית Core לפחות), Google Account, ו-API Key של Anthropic לתרגיל AI Agent.

---

## תרגיל 1: Routers – ניתוב לפי נושא (זוגות, 30 דקות)

### הנחיות:
בנו Scenario שמנתב פניות נכנסות לשלושה נתיבים שונים לפי נושא הפנייה.

### בסיס לשימוש:
קחו את ה-Scenario מתרגיל 6 של שיעור 1.2 (Webhook → Google Sheets → Gmail) ושפרו אותו.

### מה לבנות:

**שלב 1 — הוסיפו Router אחרי ה-Google Sheets Module:**
- לחצו על פלוס אחרי Sheets → חפשו "Router"

**שלב 2 — הגדירו שלוש Routes:**

| Route | תנאי | פעולה |
|-------|------|--------|
| 1 | {{נושא}} מכיל "תמיכה" | Slack → Send a Message לערוץ #support |
| 2 | {{נושא}} מכיל "מחיר" | Gmail → Send Email למנהל מכירות |
| 3 | Fallback (ללא פילטר) | Google Sheets → Add Row לגיליון "פניות כלליות" |

**שלב 3 — בדיקה:**
שלחו שלושה Webhooks שונים:
```json
{"שם": "דנה", "אימייל": "dana@test.com", "נושא": "תמיכה טכנית"}
{"שם": "יוסי", "אימייל": "yosi@test.com", "נושא": "הצעת מחיר"}
{"שם": "רחל", "אימייל": "rachel@test.com", "נושא": "שיתוף פעולה"}
```

### שאלות להגשה:
1. מה קרה לכל Bundle? לאיזה נתיב הגיע?
2. מה היה ה-Bundle של "שיתוף פעולה"? לאיזה Route הגיע ולמה?
3. צלמו screenshot של ה-Scenario המוכן עם ה-Router
4. מה קורה אם Bundle עומד בתנאי של Route 1 וגם Route 2? נסו זאת.

---

## תרגיל 2: Iterator ו-Aggregator – דוח יומי (אישי, 25 דקות)

### הנחיות:
בנו Scenario שקורא שורות מ-Google Sheets, מעבד כל שורה בנפרד, ומשלח דוח מרוכז.

### שלבים:

**שלב 1 — הכינו Google Sheets:**
צרו גיליון "הזמנות היום" עם עמודות: שם לקוח, מוצר, מחיר (מספרי)
הוסיפו לפחות 5 שורות עם נתונים לדוגמה.

**שלב 2 — בנו את ה-Scenario:**

| Module | אפליקציה | פעולה |
|--------|---------|--------|
| 1 (Trigger) | Google Sheets | Get Rows (כל השורות) |
| 2 | Tools | Iterator — שדה: Rows |
| 3 | Tools | Set Variable — "פריט: {{שם לקוח}} — {{מוצר}} — {{מחיר}} ₪" |
| 4 | Tools | Text Aggregator (מרכז את כל הפריטים) |
| 5 | Gmail | Send Email — Content = ה-Aggregated Text |

**שלב 3 — שפרו עם Numeric Aggregator:**
הוסיפו Module נוסף שמחשב **סכום כל המחירים** ושלבו אותו במייל:
"סה"כ הזמנות היום: {{סכום}} ₪"

### שאלות:
1. כמה Bundles נוצרו אחרי ה-Iterator?
2. כמה Operations נצרכו? חשבו: אם היינו שולחים מייל לכל שורה בנפרד — כמה Operations היה צורך?
3. מה ה-Aggregated Text שקיבלתם? צלמו screenshot.

---

## תרגיל 3: Error Handler מקצועי (זוגות, 25 דקות)

### הנחיות:
הוסיפו Error Handler מלא ל-Scenario מתרגיל 1. הצוות שלכם חייב לדעת כשמשהו נשבר.

### מה לבנות:

**שלב 1 — Error Handler לגיליון Sheets:**
- לחצו ימין על Module Google Sheets (Add Row) → Add error handler
- בחרו "Break"
- בנתיב השגיאה:
  - Gmail לעצמכם: "שגיאה ב-Sheets! לא נשמרה פנייה מ-{{שם}}"
  - כתבו בתוכן: "שגיאה: {{error.message}}"

**שלב 2 — Error Handler על Gmail:**
- לחצו ימין על Module Gmail → Add error handler
- בחרו "Retry" (3 פעמים, רווח של 60 שניות)
- אם ה-Retry נכשל — Google Sheets → Add Row לגיליון "שגיאות": שם, אימייל, תאריך, {{error.message}}

**שלב 3 — סמלצו שגיאה:**
שנו את הגיליון של Google Sheets לשם שגוי (שלא קיים). הריצו את ה-Scenario. ראו שמייל ההתרעה מגיע.

### שאלות:
1. מה ההבדל בין "Break" ל-"Retry" — מתי תשתמשו בכל אחד?
2. מה הייתה שגיאת ה-{{error.message}} שקיבלתם?
3. היכן ב-History ניתן לראות Executions שנכשלו? מה הצבע שלהם?
4. מה יקרה ל-Bundle שנכשל ב-Break? האם ניתן לנסות שוב ידנית?

---

## תרגיל 4: Data Store – מניעת כפולות (אישי, 20 דקות)

### הנחיות:
הוסיפו Data Store ל-Scenario שלכם כדי למנוע עיבוד כפול של אותה פנייה.

### שלבים:

**שלב 1 — צרו Data Store:**
Dashboard → Data Stores → Create.
- שם: "פניות שעובדו"
- Structure: הוסיפו שדה "email" (String)

**שלב 2 — הוסיפו לוגיקת Deduplication לפני ה-Router:**

| Module | פעולה | הגדרה |
|--------|--------|-------|
| Data Store | Check existence of a record | Key: {{אימייל}} מה-Webhook |
| Router | בדוק תוצאה | Route 1: אם לא קיים → המשך. Route 2: אם קיים → עצור |
| Data Store | Add a record (בנתיב "לא קיים") | Key: {{אימייל}}, הוסיפו שדה email |

**שלב 3 — בדיקה:**
שלחו את אותו Webhook **פעמיים** עם אותו אימייל.
- הפעם הראשונה: אמורה לעבד
- הפעם השנייה: אמורה לדלג

### שאלות:
1. מה קרה בפעם השנייה? איפה הפנייה הכפולה "נעצרה"?
2. לאחר כמה זמן מחקתם את הרשומה מה-Data Store? האם תצטרכו לנקות אותו?
3. מה ההבדל בין Data Store ל-Google Sheets כ-Database? מתי תשתמשו בכל אחד?

---

## תרגיל 5: AI Agent Node – סיווג מיילים (קבוצות, 35 דקות)

### הנחיות:
בנו Scenario עם AI Agent Node שמסווג מיילים נכנסים ומגיב אוטומטית.

### דרישות מקדימות:
- Anthropic API Key (או OpenAI API Key)
- Gmail עם כמה מיילים לבדיקה

### מה לבנות:

**מבנה ה-Scenario:**

| Module | אפליקציה | פעולה |
|--------|---------|--------|
| 1 | Gmail | Watch Emails |
| 2 | AI Agent Node | Claude Sonnet 4.6 / GPT-4o |
| — Tools | Gmail | Send Email (תשובה) |
| — Tools | Google Sheets | Add Row ל"לידים" |

**System Prompt לכתוב:**
```
אתה עוזר שירות לקוחות בחברת [שם העסק שלכם].

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

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

תמיד חתם בשם העסק.
```

**שלב — הוסיפו Tools:**
- Tool 1: Gmail → Send Email (לשלוח תשובה ל-{{from}})
- Tool 2: Google Sheets → Add Row (ל"לידים" אם סיווג = ליד חם)

**בדיקה:**
שלחו לעצמכם שלושה מיילים שונים בתוכנם.

### שאלות להגשה:
1. כיצד ה-Agent סיווג כל מייל? האם הסיווג היה נכון?
2. פתחו את ה-Reasoning Panel — מה ה-Agent "חשב"? צלמו screenshot.
3. כמה Operations צרך AI Agent Node לכל הרצה?
4. האם היה מקרה שה-Agent סיווג בצורה שגויה? מה הייתם משנים ב-System Prompt?

---

## תרגיל 6: A2A – Scenarios מחוברים (מתקדמים, 20 דקות)

### הנחיות:
בנו שני Scenarios שמחוברים זה לזה — Scenario "ראשי" שמפעיל Scenario "עוזר".

### התרחיש:
- **Scenario A — ראשי:** מקבל Webhook עם פרטי הזמנה
- **Scenario B — שולח חשבונית:** מקבל את פרטי ההזמנה ושולח חשבונית ב-Gmail

### הגדרת Scenario B:
1. Trigger: Webhooks → Custom Webhook (קבלו URL)
2. Module: Gmail → Send Email עם תוכן חשבונית

### הגדרת Scenario A:
1. Trigger: Webhooks → Custom Webhook
2. Google Sheets → Add Row (שמירת הזמנה)
3. HTTP → Make a Request: POST ל-URL של Scenario B עם הנתונים

### שאלות:
1. האם הייתה עיכוב בין ה-Scenarios? כמה זמן לקח ל-Scenario B לרוץ?
2. מה היתרון של גישה זו על פני Scenario אחד ארוך?
3. כיצד תוכלו לוודא שה-Scenario B אכן ירץ גם אם Scenario A ייכשל?

---

## תרגיל 7: שאלות עיון – ניתוח ארכיטקטורה (אישי, 15 דקות)

### הוראות:
קראו את התרחיש הבא וענו על השאלות:

**התרחיש:**
חברת סטארטאפ מבקשת מכם לבנות מערכת אוטומציה שמטפלת ב-500 פניות לקוחות ביום. כל פנייה מגיעה מהאתר ומכילה: שם, אימייל, טלפון, תוכן הפנייה, ומידת דחיפות (1-5).

### שאלות:
1. **Router:** כמה Routes הייתם בונים? מה התנאי של כל אחד?
2. **Error Handling:** על אילו Modules הייתם מוסיפים Error Handler? מאיזה סוג?
3. **Data Store:** לאיזה שימוש הייתם משתמשים ב-Data Store בתרחיש הזה?
4. **AI Agent:** האם הייתם מוסיפים AI Agent Node? לאיזה תפקיד?
5. **Operations:** חשבו את מספר ה-Operations לחודש. איזו תוכנית Make מתאימה?
6. **תמחור:** מה הייתם מציעים ללקוח? חד פעמי + חודשי?

---

## תרגיל 8: משימת בית – Scenario פרודקשן מלא

### הנחיות:
בנו Scenario מלא ברמת פרודקשן לעסק אמיתי או דמיוני, שמשלב לפחות שלושה מהמרכיבים שלמדנו בשיעורים 1.2 ו-1.3.

### דרישות מינימום:

**מרכיבים חובה:**
1. **Trigger:** Webhook, Watch New Rows, או Scheduled
2. **Router:** לפחות שני נתיבים עם תנאים הגיוניים
3. **Error Handler:** לפחות על Module אחד קריטי (Error Route)
4. **Data Store:** לפחות לצורך Deduplication

**מרכיבים רשות (בונוס):**
- Iterator + Aggregator
- AI Agent Node עם Tools
- A2A עם Scenario שני

### פורמט הגשה:

**תיאור התרחיש:**
- מהו העסק?
- מה הבעיה שה-Scenario פותר?
- מה הזרימה המלאה (כל Module)?

**תוצאות מוכחות:**
- Screenshot של ה-Scenario בCanvas עם Modules
- Screenshot של History עם לפחות 3 הרצות מוצלחות
- Screenshot של Data Store עם רשומות
- Screenshot של Error שנלכד (סמלצו שגיאה)

**ניתוח עסקי:**
- כמה Operations ייצרוך הScenario בחודש?
- איזו תוכנית Make נדרשת?
- מה הייתם גובים מלקוח? (חד פעמי + חודשי)

**לקחים:**
- מה היה הקשה ביותר לבנות?
- איך פתרתם?
- מה הייתם עושים אחרת?

**הגישו עד השיעור הבא.**

---

## קריטריונים להערכה

| קריטריון | ציון |
|---|---|
| תרגיל 1 – Router עם 3 נתיבים + Screenshots | 15% |
| תרגיל 2 – Iterator + Aggregator + דוח יומי | 15% |
| תרגיל 3 – Error Handler מקצועי | 15% |
| תרגיל 5 – AI Agent Node + Reasoning Panel | 20% |
| תרגיל 8 – משימת בית (Scenario פרודקשן מלא) | 35% |

</div>
