בקצרה
מקימים ב־n8n סביבת ניסוי שעונה על שאלות נפוצות, אוספת פרטים ומעבירה פניות לנציג לפי כללים. בהרחבה ממשיכים לחיבור ל־WhatsApp Business Platform.
בסוף המדריך יהיה לכם: סביבת ניסוי ב־n8n שעונה על שאלות נפוצות, אוספת פרטים ומעבירה פניות לנציג.
עודכן: נובמבר 2026-
n8nכלי מרכזי
-
WhatsAppכלי מרכזי
בדוגמה הסוכן עונה על שעות ומיקום כללי. בקשות מחיר, תור, ביטול והחזר מופנות לנציג. התרגיל רץ לפי כללים קבועים. אפשר להוסיף AI לסיווג בשלב מתקדם, אחרי שהמערכת מצליחה לענות, להסלים ולחסום כפילויות באופן צפוי.
שלב 1: בוחרים מה הסוכן רשאי לעשות
| מה יש לכם היום | למה זה מספיק | מתי עוברים מסלול |
|---|---|---|
| אפליקציית WhatsApp Business | פרופיל עסקי ותשובות מהירות מוכנות. בחלק מהשווקים והחשבונות מופיע גם Meta Business Agent נפרד. | כשצריך לקבל אירועים בקוד, לנהל תשובות ותקלות או לחבר תיבת צוות דרך ספק רשמי. |
| WhatsApp Business Platform עם Cloud API | גישה רשמית לאירועי הודעות ולשליחה מתוכנה. המסלול במדריך משתמש בנכסי בדיקה. | כשהפיילוט עובד ועומד בתנאי Meta, בוחנים חיבור ייצור מסודר. |
| ספק עם תיבת שירות | מסך אחד לצוות ומנגנון העברה לנציג, אם הספק מציע אותם. | מתאים כשהעדיפות היא שירות אנושי משולב, בלי לתחזק תשתית הודעות לבד. |
קבעו שלוש החלטות לפני כל התקנה. עובדות מאושרות הן שעות ומיקום מהעסק עצמו. בקשות רגישות הן מחיר שלא סופק, שינוי תור, ביטול, החזר ופרטי תשלום. ערוץ נציג הוא מספר, אימייל או תיבה מאושרים שבהם אדם יכול באמת לקבל את הפנייה. פיילוט זה מציג נתיב ישיר לנציג ואינו פותח קריאה בתיבת שירות. אם בהמשך תחברו תיבת צוות, כתבו ״העברתי לנציג״ רק אחרי שהקריאה נוצרה.
שלב 2: מריצים סימולציה ובונים את מקור התשובות
הסימולטור כאן מסווג במכשיר בלבד. הוא מציג את הכוונה, את התשובה המאושרת ואת הצורך בנציג. לחיצה נוספת על ״אותו אירוע שוב״ מדגימה איך מזהה חוזר אינו יוצר מענה נוסף. השרת שבערכה משתמש באותו קובץ כללים, ושומר את חסימת הכפילות גם בין הרצות.
נסו את סטודיו קצב
בחרו הודעת דמה או כתבו הודעת ניסוי קצרה. התרגיל עובד כאן במכשיר ואינו שולח הודעות.
עזרו לי להכין תסריט קצר לסוכן שירות נכנס בוואטסאפ. השתמשו רק בעובדות ובערוץ הקשר שמופיעים בהמשך.
שם העסק: [שם]
שעות מאושרות: [ימים, שעות, חריגים אם ידועים]
מיקום שמותר למסור: [אזור או כתובת]
דרך ישירה לנציג: [טלפון עסקי או אימייל מאושר]
נושאים שהסוכן רשאי לענות עליהם: שעות ומיקום בלבד.
נושאים לנציג: מחיר, תור, ביטול, החזר, תשלום, פנייה אישית וכל דבר שאינו מופיע במידע.
החזירו טבלה של כוונה, דוגמאות לפנייה, תשובה של עד שני משפטים בעברית, ומתי עוצרים ומפנים לנציג. אל תבטיחו פתיחת פנייה או חזרה בזמן מסוים. סמנו כל פרט חסר כ״לא סופק״. אין לשלוח הודעות, לחבר חשבונות או לבצע פעולה חיצונית.
לפני שמשנים את כללי המעבדה, שמרו את התשובות שאושרו בקובץ נפרד. הפעילו קודם את הערכה כפי שהיא. להתאמה, ערכו את rules.json ב־UTF-8, שמרו על שמות המפתחות ובדקו מחדש לפחות פנייה אחת מכל קטגוריה, כולל פנייה מעורבת כמו ״מתי פתוח וכמה עולה?״.
בדיקה מקומית מחוץ לעמוד
התקינו Python 3.10 ומעלה אם אין במחשב. חלצו את הערכה ופתחו טרמינל בתוך התיקייה שבה נמצאים הקבצים. אם ב־Windows הפקודה python לא מזוהה ו־py כן, החליפו את המילה הראשונה. בחלק ממחשבי Mac משתמשים ב־python3.
python --version
python -m unittest -v
python whatsapp_pilot.py simulate "מתי פתוח?" --id wamid.HOURS
python whatsapp_pilot.py simulate "מתי פתוח?" --id wamid.HOURS
python whatsapp_pilot.py simulate "כמה זה עולה?" --id wamid.PRICE
חפשו OK בסיום הבדיקות. הרצה ראשונה של wamid.HOURS מחזירה hours ו־dry_run. השנייה מחזירה duplicate_or_filtered. מחיר מחזיר handoff ו־needs_human: true. אם כבר הרצתם את אותו תרגיל, השתמשו במזהי ניסוי חדשים או הוסיפו בסוף כל פקודת simulate את האפשרות --db practice-2.sqlite3. השתמשו באותו קובץ לשתי ההרצות שבודקות כפילות.
שלב 3: פותחים סביבת בדיקה רשמית ב־Meta
היכנסו ל־ Meta App Dashboard . השתמשו בהרשאה מתאימה בחשבון שלכם ובסביבת ניסוי נפרדת. שמות מסכים יכולים להשתנות לפי גרסת הממשק. המסלול העדכני מתחיל בבחירת שימוש בוואטסאפ, ואז Quickstart ו־API Setup.
- לחצו Create App, תנו שם ברור כמו Nuevo WhatsApp Test ובחרו Connect with customers through WhatsApp אם האפשרות מוצגת. השלימו בחירת תיק עסקי לבדיקות. השאירו את האפליקציה במצב פיתוח לצורך התרגיל.
- תחת Use cases → Customize → Quickstart, לחצו Start using the API. בממשק שבו WhatsApp מופיע ישירות בסרגל הצד, פתחו WhatsApp → API Setup. בדקו שהנכס המקושר הוא חשבון הבדיקה שאתם מתכוונים להשתמש בו.
- ב־API Setup בחרו ב־From את מספר הבדיקה של Meta. ב־To הוסיפו את המספר שבשליטתכם ואמתו לפי ההנחיות. רשמו בנפרד את Phone Number ID, את WhatsApp Business Account ID (WABA ID) ואת גרסת Graph המוצגת בדוגמת הבקשה, למשל במבנה vNN.N. השאירו את המספרים של העסק מחוץ לתרגיל.
- לחצו Generate access token כאשר נדרש אסימון ניסוי, ובחרו Send message. השתמשו בתבנית הבדיקה המוצגת, לרוב hello_world. פתחו את ההודעה בטלפון שבשליטתכם והשיבו מהחשבון הזה. בשלב זה אפשר לאמת שהערוץ מגיע לטלפון. עדיין אין לסוכן נקודת קליטה או מענה אוטומטי.
- קחו את App Secret מתוך הגדרות האפליקציה, בדרך כלל App settings → Basic או Settings → Basic, לפי הממשק. האסימון והסוד של האפליקציה נשארים בטרמינל המקומי. אל תדביקו אותם בצ׳אט, בצילום מסך או בקובצי הפרויקט.
| פרט | מה הוא עושה |
|---|---|
| Phone Number ID | מזהה את המספר שממנו הסוכן שולח ובודק אם הודעה נכנסת שייכת אליו. |
| WABA ID | מזהה את חשבון הוואטסאפ העסקי. משתמשים בו, למשל, כדי לבדוק או להגדיר מינוי לאירועים. |
| Verify Token | סוד שאתם בוחרים בשביל אימות כתובת ה־Webhook. אותו ערך מוזן בשרת וב־Meta. |
| App Secret | סוד האפליקציה של Meta. השרת משתמש בו לאימות חתימת בקשת POST. |
| Access Token | אסימון שמאפשר פעולה מול Graph API לפי תוקף והרשאות. לפיילוט משתמשים באסימון ניסוי בלבד. |
שלב 4: מקימים Webhook ובודקים קליטה בלי לשלוח
Webhook הוא כתובת שאליה Meta מדווחת על הודעה חדשה. השרת שבערכה מאזין ל־/webhook במחשב שלכם. כדי ש־Meta תגיע אליו בניסוי צריך כתובת HTTPS. נשתמש במנהרה זמנית לשרת התרגול בלבד. אפשר לעבוד עם שרת ניסוי אחר, אם יש לכם אחד עם HTTPS.
- הריצו את פקודת יצירת ה־Verify Token. שמרו זמנית את הערך במקום בטוח. הזינו את אותו ערך בשני המסכים בשלב הבא.
- באותו חלון הריצו serve במצב dry-run. הזינו Phone Number ID, את נמען הניסוי בספרות ובקידומת בינלאומית, Verify Token ו־App Secret כשהשרת מבקש אותם. שדות הסוד מוסתרים בטרמינל. השרת מציג Listening on http://127.0.0.1:8765/webhook.
python -c "import secrets; print(secrets.token_urlsafe(32))"
python whatsapp_pilot.py serve --mode dry-run
- התקינו את cloudflared לפי מערכת ההפעלה. בחלון טרמינל שני הריצו את הפקודה הבאה. השירות מדפיס כתובת זמנית שמסתיימת ב־trycloudflare.com. הוסיפו בסופה /webhook. השאירו את שני החלונות פתוחים בזמן הפיילוט.
cloudflared tunnel --url http://127.0.0.1:8765
- בדשבורד Meta פתחו WhatsApp → Configuration או את מסך Configuration של השימוש שבחרתם. באזור Webhooks הזינו את Callback URL המלא ואת Verify Token הזהה לזה שבשרת. לחצו Verify and save. אחר כך מצאו את שדה messages תחת אובייקט WhatsApp Business Account ובחרו Subscribe אם הוא עדיין אינו מנוי. הודעות וסטטוסים עשויים להגיע תחת אותו שדה. הסוכן מגיב רק לאירוע עם מערך messages.
- השיבו שוב ממספר הנמען המורשה לשיחת הניסוי, למשל ״איפה אתם?״. בטרמינל אמורים להופיע dry_run והכוונה location. בטלפון לא אמורה להגיע תשובה אוטומטית במצב זה.
- אם אימות הכתובת הצליח אבל אין אירועים, בדקו שהאפליקציה מנויה גם ל־WABA הבדיקה, מעבר למינוי לשדה messages. השתמשו בניהול המינויים אם הוא מוצג בדשבורד. אם דרוש מינוי מפורש, ורק כשיש לכם הרשאת ניהול ל־WABA הבדיקה, הערכה כוללת פקודת subscribe-test. הזינו WABA ID, גרסת Graph ואסימון עם הרשאת whatsapp_business_management עבור אותו נכס. הפקודה דורשת אישור בהקלדת TEST ומדפיסה אם Meta אישרה את המינוי. אל תריצו אותה על WABA של לקוחות.
python whatsapp_pilot.py subscribe-test
שלב 5: מפעילים תשובת בדיקה אחת ובודקים הסלמה
רק אחרי שקיבלתם dry_run להודעה מהנמען המורשה, עצרו את השרת באמצעות Ctrl+C. השאירו את מנהרת הניסוי פועלת והפעילו את אותו שרת, באותו פורט ובאותו קובץ מצב, ב־test-send. הזינו את הפרטים הקודמים. כעת השרת יבקש גם את גרסת Graph, אסימון הבדיקה ואת ערוץ הנציג המאושר לתרגיל. האסימון צריך לאפשר whatsapp_business_messaging לנכס הבדיקה.
python whatsapp_pilot.py serve --mode test-send
שלחו הודעות חדשות מהטלפון המורשה. לאחר ״מה שעות הפתיחה?״ חפשו api_accepted בטרמינל ואת התשובה בטלפון. api_accepted מציין ש־Graph קיבל את הבקשה והחזיר מזהה. רק בדיקת הטלפון או אירוע מסירה מאמתים שההודעה הגיעה. לאחר ״כמה זה עולה?״ בדקו שהתשובה מפנה לערוץ אנושי תקין ואינה ממציאה סכום.
| מבחן | מה צריך לראות כדי לאשר |
|---|---|
| שעות, אירוע חדש | תשובה אחת עם הימים והשעות שאושרו. |
| מיקום כללי | אורנית וערוץ לפנייה לנציג, בלי להמציא רחוב. |
| מחיר או ״מתי פתוח וכמה עולה?״ | הפניה לנציג לפני מתן מידע חלקי. שום סכום חדש. |
| אירוע חוזר עם אותו messages.id | אין תשובה שנייה. שתי הודעות נפרדות בטלפון מקבלות מזהים נפרדים. |
| סטטוס delivered, חתימה שגויה או נמען שאינו ברשימה | אין מענה. חתימה לא תקינה נדחית, סטטוס ואירוע מחוץ לרשימה מסוננים. |
| חלפו 24 שעות מאז האירוע שבודקים | הפיילוט אינו שולח תשובת טקסט. הוא אינו שולח תבניות. |
אם מופיע needs_review, בדקו בטלפון וביומן מה קרה לפני ניסיון נוסף. כשל רשת יכול להתרחש גם אחרי ש־Meta קיבלה את הבקשה. הערכה שומרת את המזהה ומונעת ניסיון חוזר עיוור. אין בה תור עבודה מתמשך שאפשר להסתמך עליו כשתהליך קורס.
בדקו את קובצי מעבדת WhatsApp המקומית בלי לפתוח רשת ובלי להשתמש בחשבון אמיתי. הריצו את בדיקות היחידה. הוסיפו תרחיש שבו הודעת שעות כוללת בקשת החזר, ותרחיש שבו אותה הודעה מגיעה בשני אירועים זהים. ודאו שהמסלול הראשון מפנה לנציג והשני מפיק לכל היותר החלטת מענה אחת. בדקו שהחוק של 24 שעות נאכף גם רגע לפני שליחה. החזירו רשימת עבר/נכשל עם שם הבדיקה והפעולה המתקנת. אין לפרוס, לשלוח, לפתוח מנהרה או לקרוא קובצי סודות.
שלב 6: מוודאים שהמערכת מתאימה לעסק לפני חיבור חי
- הודעה נכנסת פותחת או מאפסת חלון שירות של 24 שעות. בזמן החלון אפשר לענות בטקסט רגיל בהתאם למדיניות. מחוץ לחלון Meta דורשת תבנית מאושרת. תבנית מאושרת והסכמה של הלקוח הן שתי בדיקות נפרדות. אל תסיקו מפנייה קודמת שהאדם הסכים לקמפיינים עתידיים. לפני הודעות יזומות בקשו הסכמה מתאימה ותעדו אותה. כבדו בקשות להסרה.
- שירות אוטומטי צריך להציע דרך מהירה וברורה לאדם. אם מוסיפים תיבת שירות, בדקו שכשנציג לוקח את השיחה, המערכת עוצרת את האוטומציה עד שחרור מפורש. ההדגמה מספקת נתיב לנציג, בלי תיבת שירות או מנגנון השהיית שיחה.
- תכננו מה שומרים, למי יש גישה ומתי מוחקים. במעבדה SQLite מחזיק רק גיבוב מזהה, מצב וזמן. הטקסט עובר זמנית בזיכרון לצורך ניתוב ואינו מודפס. בקבצים ודוגמאות שמציגים באתר משתמשים רק בנתוני דמה.
- אם מוסיפים מודל, התחילו מסיווג מוגבל לאחת מהכוונות המאושרות. שמרו את התשובה עצמה בקובץ שקיבלתם עליו אישור. זהו סוכן תמיכה עבור העסק. שירות AI כללי שמתארח בוואטסאפ כשירות הראשי כפוף לתנאים אחרים, והטיפול בו משתנה גם לפי שוק. בדקו את מדיניות WhatsApp Business ותנאי החשבון לפני חיבור ייצור.
- בסיום הניסוי עצרו את השרת ואת המנהרה. הסירו מינוי ניסוי שאינו נדרש ובטלו אסימונים לפי הממשק. כשעוברים לייצור, קבעו מי אחראי על ניתוב לנציג, תור מתמשך, חידוש אסימונים, ניטור והגנה על מידע.
שלב 7: פותרים תקלות ושומרים תהליך בדיקה קצר
| מה רואים | מה לבדוק קודם |
|---|---|
| תבנית הבדיקה לא מגיעה | ודאו From הוא מספר Meta לבדיקה ו־To הוא נמען מאומת. בדקו תוקף אסימון ואישור השגיאה ב־API Setup. |
| Verify and save נכשל | בדקו שהמנהרה פועלת, שהכתובת כוללת /webhook ושה־Verify Token זהה בשני המקומות. |
| אימות הצליח, אין אירוע | בדקו מינוי messages, מינוי האפליקציה ל־WABA והאם ההודעה נשלחה למספר הנכון מהנמען המאושר. |
| מגיע POST אבל מתקבל Invalid signature | השתמשו ב־App Secret של אותה אפליקציה. ודאו ששרת ביניים לא משנה את גוף הבקשה. |
| dry_run עובד, אין תשובה | זהו מצב קליטה בלבד. אם עברתם ל־test-send, ודאו שההודעה חדשה ובדקו הרשאה, גרסה, Phone Number ID ותוקף אסימון. |
| הסוכן מסווג שאלה לשעות במקום לנציג | הרחיבו בדיקות למילות מפתח דו־משמעיות, ושמרו שהסלמה גוברת. אם יש ספק, הפנו לאדם. |
שמרו רשומת פיילוט עם תאריך, מספר תרחישים שעברו, תוצאה בטלפון והערה קצרה על מה נשאר לבדוק. חזרו על אותה רשימה אחרי שינוי במחיר, בניתוב או בהגדרות Meta. כך אפשר להשוות בין גרסאות בלי להסתמך על הודעה אחת שהגיעה.
רוצים לבנות סוכן לתהליך השירות שלכם?
בהדרכה אישית אחד על אחד עם קלי נגדיר עובדות מאושרות, נבנה נתיב לנציג ונכין בדיקות לפני חיבור הערוץ העסקי.
שאלות נפוצות
למי המדריך מתאים?
לבעלי עסקים ולמי שמנהלים את השיווק בעצמם. רמת המדריך: בינוני, מתאים למי שכבר מכיר את הכלים הבסיסיים.
המדריך חינמי? הכלים עולים כסף?
המדריך חינמי. הכלים המרכזיים במדריך: n8n, WhatsApp. לחלק מהכלים יש שימוש חינמי מוגבל ולחלקם נדרש מנוי, ולכן כדאי לבדוק את המחיר העדכני באתר של כל כלי.
אפשר לעשות את זה יחד עם ליווי אישי?
כן. בהדרכה אישית אחד על אחד עם קלי עובדים על החומרים של העסק שלכם, בודקים את התוצאה ובונים תהליך שאפשר לחזור עליו. הפרטים באזור הקורסים.