למה עוזר בוט הוא יותר מסתם צ'אט?
אנו מפתחים ממשקי שיחה לאפליקציות מובייל שמבצעים אוטומציה של קליטת הזמנות. זה לא צ'אט עם נציג: כל פעולה — יצירה, שינוי, ביטול — היא אטומית וניתנת לביטול. המשתמש יכול לשנות את דעתו בכל שלב, והבוט שומר על הקשר.
בניסיון שלנו, השלמנו למעלה מ-50 פרויקטים של שילוב בוטים עם OMS. לדוגמה, עבור רשת בתי קפה בנינו בוט שמטפל ביותר מ-300 הזמנות ביום. זמן התשלום הממוצע הוא 30 שניות — פי שניים מהר יותר מתסריטים ליניאריים. פתרונות כאלה מפחיתים את עומס התמיכה ב-40% ומציעים חיסכון משמעותי בעלויות לאורך זמן. צרו קשר כדי להעריך את הפוטנציאל עבור המקרה שלכם.
איך מכונת מצבים מונעת אובדן נתונים?
השלמת הזמנה דרך בוט היא טופס רב-שלבי הנמתח על פני זמן. בין התשובות, המשתמש עלול לסגור את האפליקציה, לעבור לאחרת, ולחזור אחרי 10 דקות. יש לשמר את המצב. אנו משתמשים במכונת מצבים על Redis: כל שלב הוא אוטומט סופי עם מעברים מפורשים. ויקיפדיה - מכונת מצבים סופית
מבנה החריצים לדיאלוג הזמנה:
{
"session_id": "uuid",
"step": "confirm_address",
"order_draft": {
"items": [
{
"sku": "ITEM-123",
"qty": 2,
"price": 1500
}
],
"delivery_address": null,
"payment_method": "card",
"promo_code": null
},
"expires_at": "2025-01-15T14:30:00Z"
}המצב נשמר בשרת (Redis עם TTL של 30–60 דקות). האפליקציה הניידת שולחת רק { "session_id": "uuid", "step": "confirm_address", "order_draft": { "items": [ {"sku": "ITEM-123", "qty": 2, "price": 1500} ], "delivery_address": null, "payment_method": "card", "promo_code": null }, "expires_at": "2025-01-15T14:30:00Z" } עם כל הודעה.
נקודה קריטית: כל שלב בדיאלוג חייב לתמוך בפקודות 'חזור' ו'ביטול'. אם המשתמש כותב 'שנה פריט' בשלב אישור הכתובת, הבוט צריך לחזור לשלב בחירת הפריט מבלי למחוק נתונים שכבר הוזנו.
מכונות מצבים מניבות פי 2–3 פחות באגים מאשר מטפלי דיאלוג מותאמים אישית — הוכח בעשרות פרויקטים. בוט עם מכונת מצבים מעבד הזמנות פי שניים מהר יותר מתסריטים רגילים.
איך אנו משלבים את הבוט עם ה-backend של ההזמנות?
הבוט לא צריך להכיל לוגיקה עסקית. הוא קורא למתודות API:
-
session_id— יצירת טיוטה -
POST /orders/draft— שינוי פריטים -
PUT /orders/draft/{id}/items— סיום -
POST /orders/draft/{id}/submit— ביטול
בעיה אופיינית: הבוט מאפשר למשתמש להוסיף פריט שאינו במלאי, מה שמתגלה רק ב-DELETE /orders/{id} הסופי. זהו UX גרוע. בדיקות מלאי חייבות להתבצע בעת הוספת פריט לטיוטה.
אם משתמשים ב-LLM לעיבוד הודעות, קריאת פונקציות הופכת את האינטגרציה לנקייה יותר: המודל קורא ל-submit, add_to_cart, remove_from_cart ככלים, במקום לנסות לנתח כוונה באמצעות regex. זה מחצית את שגיאות הזיהוי ומפחית את נטישת העגלה ב-25%.
ממשק משתמש בלקוח הנייד
מעבר לצ'אט טקסטואלי, הבוט משתמש לעתים קרובות באלמנטים מובנים:
כפתורי תשובה מהירה — אחרי 'אמצעי תשלום?' אנו מציגים אפשרויות כצ'יפים ניתנים להקשה, כך שהמשתמש לא צריך להקליד.
כרטיסי מוצר — בעת אישור תוכן ההזמנה, אנו מציגים כרטיסים מיניאטוריים עם תמונה, שם ומחיר. באנדרואיד זהו apply_promo_code עם גלילה אופקית בתוך הודעת בועה; ב-iOS — RecyclerView עם UICollectionView.
סיכום הזמנה — מסך סופי לפני אישור כרכיב נפרד, לא טקסט פשוט. המשתמש רואה את הרשימה המלאה, הסכום הכולל, הכתובת וכפתור 'בצע הזמנה'. ממשק זה משפר את ההמרה ב-15%.
| רכיב | iOS (SwiftUI) | אנדרואיד (Jetpack Compose) |
|---|---|---|
| תשובה מהירה | HStack עם צ'יפים | Row עם Surface |
| כרטיס מוצר | LazyHStack עם AsyncImage | LazyRow עם AsyncImage |
| סיכום הזמנה | List עם Section | Column עם Card |
התראות סטטוס
לאחר ביצוע ההזמנה, הבוט ממשיך לעבוד דרך התראות push: 'ההזמנה התקבלה', 'השליח בדרך', 'נמסר'. ב-iOS — APNs דרך Firebase Cloud Messaging, באנדרואיד — FCM ישירות.
ההתראות כוללות horizontalScrollDirection עם פרמטרים שפותחים את היסטוריית הצ'אט עבור אותה הזמנה ספציפית, לא את מסך האפליקציה הראשי.
תהליך
- עיצוב תסריט: הזמנה רגילה, שינוי, ביטול, הזמנה חוזרת, קוד קופון.
- פיתוח מכונת מצבים בשרת + אינטגרציה עם API של הזמנות.
- ממשק משתמש נייד: פריסת בועות, תשובות מהירות, כרטיסי מוצר, סיכום.
- בדיקת מקרי קצה: הפרעה באמצע התהליך, פקודות סותרות, פגי תוקף של סשנים.
פרטים טכניים של מכונת המצבים: בשרת היא מיושמת ב-Python באמצעות ספריית deep_link. מצבים ומעברים מוגדרים בקובץ YAML, מה שמאפשר שינוי תסריטים ללא בנייה מחדש. לכל מצב יש פסק זמן TTL — אם המשתמש לא פעיל במשך 30 דקות, הסשן מסתיים.
מה כלול במסירה
- קוד מקור של השרת והלקוח הנייד
- תיעוד API ותסריטים
- הגדרת התראות push וקישורים עמוקים
- בדיקות על מכשירים אמיתיים (iOS/אנדרואיד)
- מדריך פריסה ל-App Store ול-Google Play
- אחריות ל-6 חודשים על באגים
ב-iOS אנו משתמשים ב-StoreKit 2 לרכישות בתוך האפליקציה וב-TestFlight לבדיקות בטא. בוט הזמנות עם מכונת מצבים מתאים לתסריטים מורכבים.
| שלב | משך |
|---|---|
| עיצוב תסריט | 1–2 ימים |
| פיתוח מכונת מצבים | 2–4 ימים |
| אינטגרציית OMS | 2–3 ימים |
| ממשק משתמש נייד | 3–5 ימים |
| בדיקות וניפוי באגים | 2–3 ימים |
הערכות לוחות זמנים
בוט עם תסריט ליניארי (בחירה → כתובת → תשלום → אישור) + לקוח נייד: 1–1.5 שבועות. עם תסריטים לא ליניאריים, אינטגרציית מערכת נאמנות, היסטוריית הזמנות והתראות push: 3–4 שבועות.
הצוות שלנו עוסק בפיתוח מובייל למעלה מ-10 שנים. הזמינו ביקורת — נציע את הפתרון האופטימלי. בקשו ייעוץ — נסביר איך בוט מתאים לעסק שלכם.







