בתרגול 1 בחרתם עיר בתוך ה-Workflow ושלחתם נתון למייל. הפעם העיר תגיע מטופס, תנאי IF יבדוק את הרוח, ומייל יישלח רק אם מולאה כתובת. התוצאה תופיע גם על המסך.
בחברת "קשת מדידה" רוצים לאפשר לעובד לבדוק את הרוח בעיר שבחר. נשתמש במזג האוויר הנוכחי ובסף של 5 מטר לשנייה לצורך התרגול. ההחלטה על ניסוי נשארת בידי האחראי.
משך משוער: כ-40 דקות. הכינו את סביבת n8n ואת חיבורי OpenWeatherMap ו-Gmail מתרגול 1. כאן תלמדו להשתמש בטופס ובתנאים. אפשר לנסות רעיונות נוספים ולחזור למסלול המודרך.
בשלב הזה Claude מסביר ואתם מבצעים ב-n8n. תארו לו את המצב ושאלו שאלה ממוקדת. אם נתקעתם, פרומפט העזרה המקופל נמצא בהמשך.
פרק 1: פתיחת Workflow והדבקת השלד
תתחילו מתהליך מוכן ותבדקו איך הוא עובד. העתיקו את השלד שלמטה אל n8n. הוא יוסיף תשע פעולות ואת החיבורים ביניהן.
- ב-n8n פתחו Overview, לחצו Create workflow ובחרו Start from scratch אם מוצגת בחירה. תנו לתהליך שם:
18x | Exercise 2 | Form and Wind. - פתחו את "שלד ה-Workflow להעתקה" שלמטה ולחצו COPY. לחצו בשטח הריק של ה-Canvas והדביקו באמצעות Ctrl+V ב-Windows או Cmd+V ב-Mac.
- בדיקה: מופיעים תשעה Nodes מחוברים. לחצו Zoom to Fit כדי לראות את כולם. אם הודבקו רק טקסט או חלק מה-Nodes, מחקו את ההדבקה השגויה ב-Undo והעתיקו שוב את הבלוק כולו.
- פתחו בלחיצה כפולה את Current Weather ובחרו את חיבור OpenWeatherMap מתרגול 1. פתחו את Send Result Email ובחרו את חיבור Gmail המאושר מאותו תרגול.
- בדיקה: בשני ה-Nodes מופיע שם החיבור שבחרתם. גם אם n8n בחר חיבור אוטומטית, בדקו שזה החיבור הנכון. שמרו באמצעות Save אם מוצג כפתור, או המתינו לשמירה האוטומטית.
שלד ה-Workflow להעתקה
{
"nodes": [
{
"id": "ex02-01",
"name": "Request Form",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.6,
"position": [
0,
176
],
"parameters": {
"formTitle": "בדיקת רוח לפי עיר",
"formDescription": "בחרו עיר. אפשר להזין כתובת מייל כדי לקבל גם הודעה. הסף בתרגול אינו אישור לביצוע ניסוי.",
"formFields": {
"values": [
{
"fieldLabel": "עיר",
"fieldName": "city",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Tel Aviv,IL"
},
{
"option": "Haifa,IL"
}
]
},
"requiredField": true
},
{
"fieldLabel": "מייל לקבלת התוצאה (לא חובה)",
"fieldName": "email",
"fieldType": "email",
"requiredField": false
}
]
},
"responseMode": "lastNode",
"options": {
"appendAttribution": false,
"buttonLabel": "בדיקת רוח",
"customCss": "body, .n8n-form, .form-header, label { direction: rtl; text-align: right; } input[type=email] { direction:ltr; text-align:left; }"
}
}
},
{
"id": "ex02-02",
"name": "Current Weather",
"type": "n8n-nodes-base.openWeatherMap",
"typeVersion": 1,
"position": [
224,
176
],
"parameters": {
"operation": "currentWeather",
"format": "metric",
"locationSelection": "cityName",
"cityName": "={{ $json.city }}"
}
},
{
"id": "ex02-03",
"name": "Wind Above 5",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
448,
176
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "condition-gt",
"leftValue": "={{ $json.wind.speed }}",
"rightValue": 5,
"operator": {
"type": "number",
"operation": "gt"
}
}
],
"combinator": "and"
},
"options": {}
}
},
{
"id": "ex02-04",
"name": "Above Threshold",
"type": "n8n-nodes-base.set",
"typeVersion": 3.5,
"position": [
672,
80
],
"parameters": {
"mode": "manual",
"assignments": {
"assignments": [
{
"id": "result",
"name": "result",
"type": "string",
"value": "הרוח מעל הסף שהוגדר לתרגול"
}
]
},
"includeOtherFields": true,
"options": {}
}
},
{
"id": "ex02-05",
"name": "Report Data",
"type": "n8n-nodes-base.set",
"typeVersion": 3.5,
"position": [
896,
176
],
"parameters": {
"mode": "manual",
"assignments": {
"assignments": [
{
"id": "city",
"name": "city",
"type": "string",
"value": "={{ $('Request Form').item.json.city }}"
},
{
"id": "recipient",
"name": "email",
"type": "string",
"value": "={{ $('Request Form').item.json.email || '' }}"
},
{
"id": "wind",
"name": "wind_speed",
"type": "number",
"value": "={{ $json.wind.speed }}"
},
{
"id": "result",
"name": "result",
"type": "string",
"value": "={{ $json.result }}"
},
{
"id": "html",
"name": "html_message",
"type": "string",
"value": "=<div dir=\"rtl\" style=\"box-sizing:border-box;max-width:560px;margin:40px auto;padding:28px;background:#fff;border:1px solid #d9e2ec;border-radius:12px;font-family:Arial,sans-serif;font-size:18px;line-height:1.8;text-align:right;color:#17314f;\"><h2 style=\"font-size:24px;margin:0 0 20px;\">תוצאת בדיקת הרוח</h2><p>עיר: {{ $('Request Form').item.json.city }}</p><p>מהירות רוח: {{ $json.wind.speed }} מטר לשנייה</p><p style=\"padding:12px;background:#edf3fa;border-radius:7px;\"><strong>{{ $json.result }}</strong></p><p style=\"font-size:14px;\">זהו סף לתרגול. ההחלטה על ניסוי נשארת בידי האחראי.</p></div>"
}
]
},
"options": {}
},
"notes": "מוכן מראש: אוסף עיר ומייל מהטופס, רוח ותוצאה מהבדיקה, ומכין תצוגה. בתרגול בודקים את ה-Input וה-Output."
},
{
"id": "ex02-06",
"name": "Not Above Threshold",
"type": "n8n-nodes-base.set",
"typeVersion": 3.5,
"position": [
672,
272
],
"parameters": {
"mode": "manual",
"assignments": {
"assignments": [
{
"id": "result",
"name": "result",
"type": "string",
"value": "הרוח אינה מעל הסף שהוגדר לתרגול"
}
]
},
"includeOtherFields": true,
"options": {}
}
},
{
"id": "ex02-07",
"name": "Email Provided",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1120,
176
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "condition-notEmpty",
"leftValue": "={{ $json.email }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
}
},
{
"id": "ex02-08",
"name": "Send Result Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1344,
32
],
"parameters": {
"resource": "message",
"operation": "send",
"sendTo": "={{ $json.email }}",
"subject": "18x | תוצאת בדיקת הרוח",
"emailType": "html",
"message": "={{ $json.html_message }}",
"options": {
"appendAttribution": false
}
}
},
{
"id": "ex02-09",
"name": "Show Result",
"type": "n8n-nodes-base.form",
"typeVersion": 2.5,
"position": [
1568,
176
],
"parameters": {
"operation": "completion",
"respondWith": "showText",
"responseText": "={{ $('Report Data').item.json.html_message }}"
}
}
],
"connections": {
"Request Form": {
"main": [
[
{
"node": "Current Weather",
"type": "main",
"index": 0
}
]
]
},
"Current Weather": {
"main": [
[
{
"node": "Wind Above 5",
"type": "main",
"index": 0
}
]
]
},
"Wind Above 5": {
"main": [
[
{
"node": "Above Threshold",
"type": "main",
"index": 0
}
],
[
{
"node": "Not Above Threshold",
"type": "main",
"index": 0
}
]
]
},
"Above Threshold": {
"main": [
[
{
"node": "Report Data",
"type": "main",
"index": 0
}
]
]
},
"Report Data": {
"main": [
[
{
"node": "Email Provided",
"type": "main",
"index": 0
}
]
]
},
"Not Above Threshold": {
"main": [
[
{
"node": "Report Data",
"type": "main",
"index": 0
}
]
]
},
"Email Provided": {
"main": [
[
{
"node": "Send Result Email",
"type": "main",
"index": 0
}
],
[
{
"node": "Show Result",
"type": "main",
"index": 0
}
]
]
},
"Send Result Email": {
"main": [
[
{
"node": "Show Result",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {}
}
מסלול הבקשה: הטופס קולט עיר ומייל. התהליך מביא את מזג האוויר, בודק את הרוח ומציג תוצאה. אם מילאתם מייל, הוא גם שולח אליו את התוצאה.
פרק 2: בדיקת הטופס ושדות הקלט
Form Trigger מתחיל תהליך כשמישהו מגיש טופס. השדות כבר נמצאים בשלד. נבדוק את ההגדרות שלהם ואת הנתונים שהם מחזירים.
- פתחו את Request Form. ב-Form Title מופיעה הכותרת "בדיקת רוח לפי עיר". תחת Form Elements פתחו את שדה העיר הקיים.
- ודאו ש-Field Name הוא
city, ש-Element Type הוא Dropdown וש-Required Field מופעל. האפשרויות הןTel Aviv,ILו-Haifa,IL. - פתחו את שדה המייל הקיים. ודאו ש-Field Name הוא
email, שהסוג Email וש-Required Field כבוי. בדיקה: רק שדה העיר מסומן כחובה. - סגרו את חלון ה-Node ולחצו Execute workflow, שמופיע בחלק מהמסכים בשם Execute. n8n ממתין להגשת הטופס ופותח אותו בלשונית חדשה. אם לא נפתחה לשונית, פתחו את Request Form והעתיקו את Test URL ללשונית בדפדפן.
- בחרו עיר, השאירו את המייל ריק ולחצו "בדיקת רוח". המתינו לתוצאת הבדיקה. חזרו לעורך ופתחו את Request Form.
- בדיקה: ב-OUTPUT מופיע
cityעם העיר שבחרתם, ו-emailריק. אם הטופס מציג שאינו זמין, חזרו ל-Canvas ולחצו שוב Execute. בכל הגשה חדשה מפעילים מחדש את ההאזנה ואז פותחים או מרעננים את Test URL.
Test URL מיועד לבדיקה בזמן שהעורך מאזין. בשלב הזה עובדים עם כתובת הבדיקה. התוצאה נפתחת לאחר סיום הריצה.
פרק 3: בדיקת נתוני הרוח
נבדוק שמזג האוויר הגיע מהעיר שבחרתם, ונמצא את מהירות הרוח בפלט.
- פתחו את Current Weather. ודאו שנבחר ה-Credential מתרגול 1 ושההגדרות הן Operation: Current Weather, Format: Metric ו-Location Selection: City Name.
- ב-INPUT משמאל מצאו את
city. השדה City כבר מקבל את העיר מהטופס. בדקו שמתחתיו מופיעה העיר שבחרתם. - ב-OUTPUT מימין בחרו Schema, פתחו את
windומצאו אתspeed. זהוwind.speed, ומהירות הרוח מוצגת במטר לשנייה. - בדיקה: השוו את העיר בטופס לשם המקום ב-
nameולמדינה ב-sys.country. המדינה צריכה להיותIL. רשמו את מהירות הרוח שקיבלתם. - אם ה-Node נכשל, בדקו את החיבור ואת ערך העיר. בשגיאת 401 חזרו לבדיקת ה-API Key מתרגול 1. בשגיאת 404 בדקו את ערך העיר. אם צריך עזרה מ-Claude, מסרו את נוסח השגיאה ואת שם ה-Node ללא מפתח או פרטי חיבור.
פרק 4: הסתעפות לפי מהירות הרוח
IF בודק תנאי ובוחר מסלול. כאן הוא בודק אם מהירות הרוח גדולה מ-5.
אם הרוח גדולה מ-5, הנתונים עוברים ל-True Branch. אחרת הם עוברים ל-False Branch. אלה שמות המסלולים, לא סימון להצלחה או לתקלה.
- הגדרת התנאי:
- פתחו את Wind Above 5, שהוא Node מסוג IF.
- ב-INPUT פתחו
windוגררו אתspeedאל השדה הראשון בתנאי. אם כבר מופיע שם מיפוי, ודאו שהתצוגה שלו מראה את מהירות הרוח שקיבלתם. - בתפריט ההשוואה בחרו Number ואז is greater than. אם התנאי כבר מוגדר כך, השאירו אותו.
- בשדה המספר שמתחת לתנאי הזינו 5, ולחצו Execute step. כך בודקים את ה-IF בלי להמשיך לשליחת מייל.
- שני המסלולים:
trueמוביל ל-Above Threshold, שמגדיר את התוצאה "הרוח מעל הסף שהוגדר לתרגול".falseמוביל ל-Not Above Threshold, שמגדיר את התוצאה "הרוח אינה מעל הסף שהוגדר לתרגול". גם רוח ששווה בדיוק לסף עוברת במסלול הזה.
בדיקה: ב-OUTPUT פתחו את True Branch ואת False Branch. במסלול אחד מופיע פריט נתונים, המסומן 1 item, ובשני אין נתונים. בדקו שהמסלול מתאים למהירות הרוח ולסף 5. בהמשך, Above Threshold או Not Above Threshold מוסיפים את טקסט התוצאה.
פרק 5: בדיקת כתובת המייל ומסך התוצאה
Report Data אוסף את העיר והמייל מהטופס ואת הרוח ותוצאת התנאי, ומכין את התוצאה למסך ולמייל. אחריו, Email Provided בודק אם מולאה כתובת ומחליט אם לשלוח מייל.
- פתחו תחילה את Report Data. ב-OUTPUT בדקו שמופיעים
city,email,wind_speedו-result. כעת פתחו את Email Provided. אותם שדות מופיעים ב-INPUT שלו. - בחרו String ואז is not empty. זו בדיקה אם השדה מכיל ערך. לחצו Execute step ובדקו איזו לשונית OUTPUT מכילה Item.
- בדיקה: בהגשה הראשונה השארתם מייל ריק, ולכן ה-Item צריך להופיע ב-False Branch. במצב הזה Send Result Email אינו רץ.
- סגרו את החלון ובדקו את החיבורים ב-Canvas: true מחובר ל-Send Result Email, ומשם ל-Show Result. false מחובר ישירות ל-Show Result.
- פתחו את Send Result Email ובדקו שנבחר חיבור Gmail שלכם. שדה To כבר מקבל את המייל מהטופס, ו-Message מקבל את התוצאה. בבדיקה הבאה תזינו בטופס את המייל שלכם.
- פתחו את Show Result, הפעולה שמציגה את מסך התוצאה. בדיקה: גם המסלול עם מייל וגם המסלול בלי מייל מגיעים אליה.
פרק 6: בדיקת שני התנאים
נבדוק בנפרד אם נבחר מסלול הרוח הנכון ואם המייל נשלח רק כשיש כתובת. בכל בדיקה בדקו את ה-Input, את ה-Output ואת התוצאה שהמשתמש רואה.
עם מייל ובלי מייל
- לחצו ב-Canvas על Execute, פתחו או רעננו את הטופס, בחרו עיר והזינו כתובת שלכם או נמען מאושר. הגישו פעם אחת.
- בדיקה: התוצאה מוצגת בטופס. ב-Email Provided רואים Item ב-True Branch, ו-Send Result Email מסומן כמי שבוצע. בדקו שהמייל הגיע ושמהירות הרוח והתוצאה בו תואמות למסך. אם לא הגיע, בדקו גם ספאם ופלט Gmail לפני הרצה נוספת.
- הפעילו שוב Execute והגישו טופס עם עיר ומייל ריק.
- בדיקה: התוצאה עדיין מוצגת. ב-Email Provided רואים Item ב-False Branch, ו-Send Result Email אינו מבוצע בריצה הזאת. אפשר לפתוח Executions, לבחור את הריצה האחרונה ולבדוק את שני ה-Nodes. זו הראיה לדילוג על השליחה.
רוח מעל הסף, מתחתיו ובדיוק עליו
לבדיקות האלה פתחו את Wind Above 5 והשתמשו ב-Execute step בתוך ה-Node. כך בודקים את ההשוואה על נתוני מזג האוויר שכבר התקבלו.
- קראו ב-INPUT את מהירות הרוח. שנו את הסף למספר גדול ממנה ולחצו Execute step. בדיקה: ה-Item מופיע ב-False Branch.
- שנו את הסף למספר קטן מהמהירות שבקלט והריצו Execute step. בדיקה: ה-Item מופיע ב-True Branch. לדוגמא, לרוח של 1.54 אפשר לבחור סף 0.54. אם הרוח היא 0, אפשר להשתמש בסף -1 לצורך בדיקת התנאי בלבד.
- קבעו את הסף בדיוק למהירות שבקלט והריצו Execute step. בדיקה: ה-Item מופיע ב-False Branch, מפני ש"גדול מ" אינו כולל שוויון. בדקו שהערך בקלט נשאר זהה בזמן ההשוואה.
- בסיום החזירו את הסף ל-5 ושמרו. בהרצה הבאה הטופס ישתמש שוב בסף המקורי.
אם התקבל מסלול שונה מהצפוי, השוו את המספר בקלט, את הסף ואת סוג ההשוואה. ודאו שבחרתם Number ו-is greater than.
תרגול פתוח: שינוי אחד בטופס או בתנאי
כעת יש לכם טופס שעובד. בחרו שינוי אחד שתרצו לבדוק. פנו ל-Claude כדי להבין איך לבצע אותו, ורק לאחר שקראתם את ההסבר בצעו את השינוי בעצמכם.
- סף רוח אחר: שנו את הסף ב-Wind Above 5 ולחצו Execute step. בדקו באיזו לשונית OUTPUT מופיע הפריט, והשוו למהירות הרוח שב-INPUT. זו בדיקה של התנאי בלבד.
- הערה בטופס: ב-Request Form הוסיפו שדה Text עם Field Label "הערה" ו-Field Name
note. השאירו אותו לא חובה. הגישו טופס עם הערה ובדקו שהיא מופיעה ב-OUTPUT של Request Form. בשינוי הזה בודקים את קליטת ההערה בלבד.
עזרה מ-Claude
נסחו קודם שאלה משלכם: מה התהליך כבר עושה, באיזה Node אתם נמצאים, מה ניסיתם ומה בדיוק חסר לכם להבין. בקשו הסבר. אם לא הצלחתם להתקדם, פתחו את הפרומפט, מלאו את הסוגריים והשאירו רק את האפשרות שבחרתם.
נתקעתם? פתחו פרומפט לעזרה
# ההקשר
אני מתרגל ב-n8n. התהליך שלי מקבל בטופס עיר חובה וכתובת מייל שאינה חובה, שולף מזג אוויר נוכחי, בודק אם מהירות הרוח גדולה מסף, ומציג תוצאה. הוא שולח גם מייל רק אם הוזנה כתובת.
אני מכיר פתיחת Nodes, בחירת Credential, גרירת שדה ובדיקת Input ו-Output.
## המצב שלי
- ה-Node שאני נמצא בו: [שם ה-Node].
- מה ניסיתי: [תיאור קצר, או שטרם ניסיתי].
- מה ציפיתי לראות ומה קרה בפועל: [תיאור הפלט או הודעת השגיאה בלי פרטי חיבור].
## השאלה שלי
הסבר לי איך [לשנות את סף הרוח / להוסיף שדה הערה לטופס / לפתור את הבעיה שתיארתי]. את הפעולות ב-n8n אבצע בעצמי.
[מלאו כאן מה בדיוק אינכם מבינים].
## אופן התשובה
ענה בעברית. הסבר במילים פשוטות וציין את שמות המסכים והשדות הרלוונטיים.
אם חסר מידע על המצב שלי, שאל אותי. אם נדרש מידע על הכלי, מצא בעצמך את התיעוד הרשמי המתאים.
אני מבקש הסבר בלבד.
# Context
I am practicing in n8n. My workflow receives a city and an optional email address from a form, retrieves current weather, checks whether wind speed is greater than a threshold, and displays a result. It also sends an email only when an address is supplied.
I know how to open nodes, select a credential, drag a field, and inspect Input and Output.
## My current situation
- The node I am in: [node name].
- What I tried: [a short description, or say I have not tried yet].
- What I expected and what actually happened: [output or error message without connection details].
## My question
Explain how to [change the wind threshold / add a notes field to the form / resolve the problem I described]. I will carry out the actions in n8n myself.
[Describe exactly what you do not understand].
## How to respond
Respond in English. Explain in plain language and name the relevant screens and fields.
If you need more information about my situation, ask me. If you need information about the tool, find the relevant official documentation yourself.
I am asking for an explanation only.
אחרי הביצוע רשמו מה שיניתם ומה הראה שהשינוי פעל. אם קיבלתם תוצאה אחרת, תארו ל-Claude את הפער ובקשו הסבר לתיקון. המשיכו מאותו Workflow ושנו דבר אחד בכל פעם.
תוצר וקריטריוני סיום
בסיום התרגול, אמור להיות לכם תהליך שעומד בכל הדרישות הבאות:
- הטופס מקבל עיר דרך שדה בחירה חובה.
- אתם רואים את תוצאת בדיקת הרוח, והתהליך עובר למסלול ה-IF המתאים לפי מהירות הרוח.
- מייל נשלח רק כאשר הוזנה כתובת, ולא נשלח כאשר שדה המייל נותר ריק.
- התוצאה מוצגת על המסך בשני המסלולים, עם מייל ובלי מייל.
- ביצעתם ובדקתם שינוי אחד בתרגול הפתוח.
הטופס שלכם קולט בקשה, בודק תנאי ומחזיר תוצאה. בתרגול הבא תבקשו מ-Claude Desktop לבצע שינוי, ותבדקו מה בנה.
שאלות להמשך מחקר
- איך בוחרים בין שלושה מסלולים? שאלו את Claude מה עושה Switch ב-n8n ובקשו דוגמא קצרה.
- מה קורה כאשר שדה בטופס אינו חובה והעובד משאיר אותו ריק, איך הערך הריק נראה בפועל בפלט? אפשר לבדוק דרך השוואת פלט של הגשה עם ערך ובלי ערך.
- איך משנים את טקסט התוצאה? פתחו את Above Threshold ושנו את השדה result. הגישו טופס שבוחר במסלול הזה ובדקו מה מופיע על המסך.