מאמרים הנדסיים
איך בניתי בוט AI לשירות לקוחות בוואטסאפ ובטלגרם עם Claude בפחות מ־400 שורות
מאת Muhammad Shahid · · 3 דקות קריאה
תשובה קצרה
הבוט מקבל הודעות מה־webhook של WhatsApp Cloud API או מ־Telegram, שולח אותן ל־Claude עם המסמכים של העסק ב־system prompt שנשמר בקאש, ונותן למודל לקרוא לשני כלים: save_lead ו־handoff_to_human. זה Node.js פשוט עם תלות אחת, פחות מ־400 שורות, בקוד פתוח ברישיון MIT.
| ערוצים | WhatsApp Cloud API וטלגרם |
|---|---|
| AI | Claude, דרך ה־SDK הרשמי של Anthropic |
| ידע | קבצי Markdown שנטענים ל־system prompt בקאש |
| פעולות | הכלים save_lead ו־handoff_to_human |
| גודל | Node.js, תלות אחת, פחות מ־400 שורות, רישיון MIT |
מה הבוט עושה?
עסקים קטנים עונים על אותן שאלות כל היום: שעות פתיחה, מחירים, תורים, מדיניות. הבוט עונה עליהן מתוך קבצים שהעסק כותב, שומר ליד כשמישהו רוצה לקנות או לקבוע, ומעביר את השיחה לאדם כשהלקוח מבקש או כשהשאלה מחוץ למה שהוא יודע. הקוד ב־GitHub: ShahidKhan09/whatsapp-telegram-ai-bot.
איך הבוט יודע על העסק?
כל מה שבתיקייה knowledge/ (קבצי Markdown או טקסט) נקרא פעם אחת בהפעלה ונכנס ל־system prompt, מסומן לשמירה בקאש. לעסק קטן טיפוסי, כמה עמודים של שאלות נפוצות ומחירים, זה פשוט ומדויק יותר ממסד נתונים וקטורי: המודל רואה את הכול בכל הודעה, והקאש הופך את השליחה החוזרת לזולה. לבסיס ידע גדול בהרבה מוסיפים קודם שלב של שליפה.
ההנחיות אומרות למודל לענות רק מתוך המידע הזה, להגיד כשהוא לא בטוח במקום לנחש, ולעולם לא להמציא מחירים או הבטחות.
איך עובדים לידים והעברה לנציג?
Claude יכול לקרוא לשני כלים, שניהם מוגדרים עם strict: true כך שהארגומנטים תמיד תואמים לסכמה:
save_leadעם שם, פרטי קשר ומה הלקוח רוצה. הבוט מוסיף אותו לקובץ ומתריע לבעל העסק בטלגרם.handoff_to_humanעם סיבה. הבוט מתריע לבעל העסק ושותק בשיחה הזאת למשך שעה, כדי שאדם ייכנס.
הלולאה היא לולאת שימוש בכלים רגילה: שולחים את השיחה, מריצים את קריאות הכלים, מחזירים את כל התוצאות בהודעה אחת, וחוזרים עד שהמודל עונה בטקסט.
למה היסטוריית השיחה רק מתווספת?
מודלים חדשים של Claude חושבים לפני שהם עונים, ובלוקי החשיבה שלהם תקפים רק כל עוד כל מה שלפניהם בשיחה לא השתנה. לכן הבוט לעולם לא עורך או מקצר הודעות ישנות. כששיחה מתארכת, הוא מתחיל שיחה חדשה; הלקוח לא מרגיש, כי הידע על העסק נמצא בכל בקשה בכל מקרה. גם ה־system prompt ורשימת הכלים קבועים מההפעלה, וזה שומר על הקאש חם.
איך מאבטחים את ה־webhooks של וואטסאפ?
Meta חותמת כל webhook עם סוד האפליקציה שלכם. הבוט מחשב מחדש את ה־HMAC-SHA256 של הגוף הגולמי ומשווה בזמן קבוע, ודוחה כל מה שלא תואם:
const expected = "sha256=" + createHmac("sha256", appSecret).update(rawBody).digest("hex")
const ok = header.length === expected.length &&
timingSafeEqual(Buffer.from(header), Buffer.from(expected))
הוא גם עונה ל־Meta מיד ושולח את התשובה בנפרד, ומתעלם ממזהי הודעות כפולים, כי Meta יכולה לשלוח את אותה הודעה פעמיים.
למה גם טלגרם ולא רק וואטסאפ?
טלגרם לא דורש אימות עסקי ועובד עם long polling, כך שהבוט רץ על מחשב נייד בלי כתובת ציבורית. זו הדרך המהירה ביותר לנסות את הבוט בטלפון אמיתי לפני שמגדירים וואטסאפ.
מה להוסיף לפרודקשן?
- לשמור שיחות ב־Redis או במסד נתונים, כדי שהפעלה מחדש לא תשכח שיחות.
- לחבר את save_lead ל־CRM אמיתי או למערכת תורים.
- להוסיף שלב שליפה אם בסיס הידע גדל מעבר לכמה מאות עמודים.
- לעקוב אחרי איכות התשובות בשיחות אמיתיות ולעדכן את קבצי הידע.
שאלות נפוצות
בוט ה־AI לוואטסאפ חינמי?
הקוד חינמי ובקוד פתוח ברישיון MIT. משלמים על השימוש במודל ה־AI ועל שיחות וואטסאפ לפי התמחור של Meta.
הוא משתמש ב־API הרשמי של וואטסאפ?
כן. הוא עובד עם WhatsApp Business Platform (Cloud API) ועם webhooks חתומים, לא עם כלי לא רשמי של WhatsApp Web.
צריך מסד נתונים וקטורי?
לא לבסיס ידע של עסק קטן. המסמכים נכנסים ל־system prompt בקאש; מוסיפים שליפה רק כשבסיס הידע גדול מאוד.
הבוט יכול לענות בעברית או בשפות אחרות?
כן. הוא מונחה לענות בשפה של הלקוח.
איך הבוט מעביר שיחה לאדם?
הוא קורא לכלי handoff_to_human, שמתריע לבעל העסק בטלגרם ומשתיק את הבוט בשיחה הזאת לשעה.
אתה יכול לבנות ולהפעיל את זה לעסק שלי?
כן. אני מקים אותו על מספר הוואטסאפ שלכם, מחבר אותו ל־CRM או למערכת התורים ומכוונן אותו לפי השאלות האמיתיות שלכם. ראו את עמוד שירות בוט ה־AI לוואטסאפ ולטלגרם.