פיתוח בוט לתשובות אוטומטיות לשאלות נפוצות ב-Bitrix24
מחצית מההודעות הנכנסות בצ'אט התמיכה הן אותן שאלות: 'איך מחזירים פריט?', 'איפה ההזמנה שלי?', 'מהם תנאי המשלוח?'. נציגים מבזבזים זמן על שגרה, והעסק מפסיד כסף על בקשות מורכבות שלא מטופלות. חנות מקוונת עם 500 הזמנות ביום קיבלה 200 פניות, 80% מהן היו טיפוסיות. לאחר הטמעת בוט, זמן התגובה ירד מ-5 דקות למיידי, והנציגים התמקדו במקרים מורכבים. החיסכון בעלויות התמיכה הגיע ל-40% בחודש הראשון — ללא פגיעה באיכות.
אנחנו מפתחים בוט שעונה אוטומטית לשאלות נפוצות ומעביר שאלות לא סטנדרטיות לנציג אנושי. הפתרון עובד ישירות ב-Bitrix24 Open Lines — ללא שירותי צד שלישי. הליבה היא או חיפוש מילות מפתח מהיר או RAG סמנטי על embeddings.
איך הבוט מתחבר ל-Open Lines?
Bitrix24 Open Lines הן נקודת הכניסה המרכזית. הבוט נרשם כנציג הראשון של הקו. כשלקוח כותב לצ'אט המקוון, טלגרם או VK, ההודעה מגיעה לבוט. אם הבוט עונה, הנציג לא מופרע. אם לא, הוא מעביר לאדם.
רישום הבוט ב-Open Lines נעשה דרך Bitrix24 REST API:
POST /rest/imopenlines.bot.register
{
"CODE": "faq_bot",
"EVENT_HANDLER": "https://your-server.com/openline/event",
"OPENLINE": "Y"
}— מקור: תיעוד REST API
איך הבוט קובע מה לענות? שתי גישות להתאמת שאלות
גישה 1: חיפוש מילות מפתח
שאלות ומילות מפתח נשמרות במסד נתונים; הבוט מחפש התאמות בטקסט ההודעה. פשוט ליישום, קל לתחזוקה. אידיאלי עבור 50–200 שאלות נפוצות.
CREATE TABLE custom_faq_entries (
id SERIAL PRIMARY KEY,
question TEXT NOT NULL,
answer TEXT NOT NULL,
keywords TEXT NOT NULL,
category VARCHAR(100),
hits INT DEFAULT 0,
is_active TINYINT DEFAULT 1
); function findFaqAnswer(string $userMessage): ?array {
$words = array_filter(explode(' ', mb_strtolower($userMessage)));
$results = [];
$faqs = getFaqEntries();
foreach ($faqs as $faq) {
$keywords = explode(',', mb_strtolower($faq['keywords']));
$score = 0;
foreach ($keywords as $kw) {
$kw = trim($kw);
if ($kw && (mb_stripos($userMessage, $kw) !== false)) {
$score += mb_strlen($kw);
}
}
if ($score > 0) {
$results[] = ['faq' => $faq, 'score' => $score];
}
}
if (empty($results)) return null;
usort($results, fn($a, $b) => $b['score'] <=> $a['score']);
return $results[0]['faq'];
} גישה 2: חיפוש וקטורי (RAG)
שאלות מתויגות כ-embeddings (OpenAI POST /rest/imopenlines.bot.register { "CODE": "faq_bot", "EVENT_HANDLER": "https://your-server.com/openline/event", "OPENLINE": "Y" } , Yandex GPT Embeddings). כשמגיעה שאלה חדשה, מחפשים שכנים קרובים במסד נתונים וקטורי (pgvector, Qdrant). עובד על ניסוחים דומים סמנטית ללא התאמת מילים מדויקת.
| קריטריון | חיפוש מילות מפתח | חיפוש וקטורי (RAG) |
|---|---|---|
| גודל מסד נתונים | עד 200 שאלות | מ-200 שאלות |
| דיוק במילים נרדפות | נמוך | גבוה — RAG טוב פי 3–4 בשאלות מנוסחות מחדש |
| מורכבות יישום | נמוכה | בינונית (דורש מודל ומסד נתונים וקטורי) |
| מהירות | מיידית | <1 שנייה עבור בסיסים עד 10,000 |
| תחזוקה | עריכת מילות מפתח | הוספת שאלות ללא שינויי קוד |
בחירה: עבור 50–200 שאלות נפוצות חיפוש מילות מפתח מספיק. עבור מאגר ידע גדול עם ניסוחים מגוונים — RAG. RAG מתמודד טוב יותר עם מילים נרדפות וטעויות הקלדה אך דורש הגדרת מודל.
דוגמאות לשאלות טיפוסיות ותשובות הבוט
תרחישים אמיתיים מחנות מקוונת:
| שאלת לקוח | תשובת הבוט | תוצאה |
|---|---|---|
| 'איך מחזירים פריט?' | 'החזרה אפשרית תוך 14 יום. הפריט חייב להיות בשימוש, באריזה המקורית. מלאו את טופס ההחזרה בחשבון האישי שלכם.' | נסגר אוטומטית |
| 'כמה עולה משלוח למוסקבה?' | 'משלוח רגיל למוסקבה עולה $3–4, זמן אספקה 3–5 ימי עסקים. משלוח חינם להזמנות מעל $45–65.' | נסגר אוטומטית |
| 'איפה אפשר לעקוב אחרי ההזמנה שלי?' | 'קישור המעקב נשלח למייל שלכם. מספר מעקב: {number}. תאריך אספקה משוער: {date}.' | נסגר אוטומטית |
| 'אתם מקבלים כרטיסי אשראי?' | 'אנחנו מקבלים ויזה, מאסטרקארד, מאסטרו, תשלומים דרך Yandex.Kassa, ושיטות תשלום חלופיות.' | נסגר אוטומטית |
הבוט סוגר בהצלחה 60–70% מהפניות ללא מעורבות נציג.
דרישות לאינטגרציה והכנה מוקדמת
להשקה מוצלחת של בוט ה-FAQ:
- גישה ל-Bitrix24 REST API — דורש חשבון מנהל ויצירת טוקן OAuth.
- שרת HTTPS לקבלת webhooks מ-Open Lines (קריטי, B24 עובד רק על פרוטוקול מאובטח).
- אחסון FAQ — מסד נתונים SQL (PostgreSQL, MySQL) או ספציפי ל-CMS (לדוגמה, מודול ב-1C-Bitrix).
- עבור RAG — מנוי ל-OpenAI API, Yandex GPT Embeddings, או מודל מקומי (לדוגמה, nomic-embed-text).
- מערכת ניטור — רישום שגיאות עיבוד הודעות, מעקב אחר שאלות שלא נענו.
טיפול באירוע ב-Open Line
$event = json_decode(file_get_contents('php://input'), true);
if ($event['event'] === 'ONIMBOTMESSAGEADD') {
$sessionId = $event['data']['PARAMS']['SESSION_ID'];
$dialogId = $event['data']['PARAMS']['DIALOG_ID'];
$text = $event['data']['PARAMS']['MESSAGE'];
$chatId = $event['data']['PARAMS']['CHAT_ID'];
$faq = findFaqAnswer($text);
if ($faq) {
$b24->callMethod('imopenlines.session.message.send', [
'SESSION_ID' => $sessionId,
'MESSAGE' => $faq['answer'],
]);
incrementFaqHits($faq['id']);
$b24->callMethod('imopenlines.session.close', ['SESSION_ID' => $sessionId]);
} else {
$b24->callMethod('imopenlines.session.transfer', [
'SESSION_ID' => $sessionId,
'QUEUE_ID' => 1,
]);
$b24->callMethod('imopenlines.session.message.send', [
'SESSION_ID' => $sessionId,
'MESSAGE' => 'Соединяю с менеджером, пожалуйста, подождите...',
]);
}
} לוגיקת הסלמה והעברה לנציג
הבוט מעביר את השיחה לנציג לפי מספר קריטריונים:
- ביטחון נמוך — ציון התאמה מתחת לסף (לדוגמה, <0.7 עבור RAG או <5 עבור מילות מפתח).
- בקשה מפורשת לתלונה — אם הלקוח משתמש במילים כמו 'תלונה', 'טענה', 'לא עבד'.
- שאלה מורכבת — ההודעה מכילה מספר נושאים בו זמנית.
- מידע אישי — בקשה לסיסמה, פרטי בנק (הבוט צריך לסרב ולהעביר לנציג).
- פסק זמן — אם השיחה עם הלקוח נמשכת >3 סבבים, הבוט מציע מנהל.
שאלות הבהרה
אם קיימות מספר התאמות, הבוט מציג אפשרויות:
if (count($topResults) > 1 && $topResults[0]['score'] < 10) {
$options = array_slice($topResults, 0, 3);
$message = "Уточните, пожалуйста, что вас интересует:\n";
foreach ($options as $i => $r) {
$message .= ($i + 1) . ". {$r['faq']['question']}\n";
}
$message .= "0. Другое (подключить менеджера)";
$redis->set("faq_choice:{$sessionId}", json_encode($options), 300);
} ממשק ניהולי לניהול מסד נתוני FAQ
מנהלי תוכן חייבים לנהל FAQ ללא עריכת קוד. אנחנו מפתחים סעיף ניהולי ב-CREATE TABLE custom_faq_entries ( id SERIAL PRIMARY KEY, question TEXT NOT NULL, answer TEXT NOT NULL, keywords TEXT NOT NULL, category VARCHAR(100), hits INT DEFAULT 0, is_active TINYINT DEFAULT 1 ); או כאפליקציית Bitrix24:
- CRUD לשאלות ותשובות.
- קטגוריות (משלוח, תשלום, החזרות, שאלות טכניות).
- סטטיסטיקות: כמה פעמים שאלה נסגרה על ידי בוט (
function findFaqAnswer(string $userMessage): ?array { $words = array_filter(explode(' ', mb_strtolower($userMessage))); $results = []; $faqs = getFaqEntries(); foreach ($faqs as $faq) { $keywords = explode(',', mb_strtolower($faq['keywords'])); $score = 0; foreach ($keywords as $kw) { $kw = trim($kw); if ($kw && (mb_stripos($userMessage, $kw) !== false)) { $score += mb_strlen($kw); } } if ($score > 0) { $results[] = ['faq' => $faq, 'score' => $score]; } } if (empty($results)) return null; usort($results, fn($a, $b) => $b['score'] <=> $a['score']); return $results[0]['faq']; }), כמה הועברו לנציגים. - צפייה בסשנים שבהם הבוט לא מצא תשובה — עדיפות להרחבת מסד הנתונים.
רוצים להפחית את עומס התמיכה? קבלו ייעוץ לפרויקט שלכם — נעריך את הארכיטקטורה ונציע את הגישה האופטימלית.
למה אנליטיקה חשובה?
אנליטיקה מראה את ההשפעה האמיתית של הבוט. בלעדיה, אי אפשר לדעת אילו שאלות הבוט מטפל היטב ואילו דורשות שיפור.
כדי להעריך יעילות, אנחנו מחשבים את אחוז הסשנים שנסגרו אוטומטית. שיעור סגירה אוטומטי יעד עבור מסד FAQ בוגר הוא 60–70%. הלקוחות שלנו משיגים זאת תוך 2–3 שבועות לאחר ההשקה.
ניטור ושיפור מתמשך
לאחר ההשקה, הבוט דורש תחזוקה שוטפת:
- ניתוח שבועי של שאלות שלא נענו — סקירת סשנים שהועברו לנציג, זיהוי פערים במסד ה-FAQ.
- עדכון מילות מפתח (לחיפוש מילות מפתח) או אימון מחדש של embeddings (עבור RAG) בהתבסס על שאלות חדשות.
- בדיקות A/B של תשובות — אילו ניסוחים מובילים לפחות שאלות המשך מלקוחות.
- ניטור זמן תגובה — ניתוח עיכובים בהעברת הודעות וזיהוי צווארי בקבוק.
הכלי מציע אוטומטית להוסיף ערכים ל-FAQ אם אותה מילה לא מזוהה מופיעה יותר מ-10 פעמים בשבוע.
דוגמת סשן עם הבוט
- לקוח: 'איפה ההזמנה שלי?'
- בוט: 'ההזמנה שלך בסטטוס "בדרך". תאריך אספקה משוער: 5 בדצמבר.'
- נציג לא היה מעורב.
מה כלול
- רישום והגדרת הבוט ב-Bitrix24 Open Lines.
- עיצוב מבנה מסד נתוני FAQ (מילות מפתח או embeddings).
- פיתוח לוגיקה: חיפוש תשובה, העברה לנציג, שאלות הבהרה.
- יצירת ממשק ניהולי לניהול מסד הנתונים.
- הטמעת אנליטיקה ודוחות (שיעור סגירה אוטומטי, שאלות פופולריות).
- מילוי מסד הנתונים בשאלות טיפוסיות (עד 100 ערכים) ובדיקות.
- תיעוד תפעולי והדרכה למנהל תוכן.
לוחות זמנים וניסיון
יש לנו מעל 5 שנות ניסיון מעשי והעברנו 50+ פרויקטים על Bitrix24. אנחנו עובדים עם 1C-Bitrix ו-Bitrix24 מההתחלה.
| שלב | משך |
|---|---|
| רישום בוט ב-Open Lines, אינטגרציה בסיסית | 1–2 ימים |
| מבנה מסד נתוני FAQ, חיפוש מילות מפתח | 2–3 ימים |
| לוגיקת העברה לנציג, שאלות הבהרה | 2–3 ימים |
| ממשק ניהולי (CRUD ל-FAQ) | 2–3 ימים |
| אנליטיקה ודוחות | 1–2 ימים |
| מילוי מסד נתונים + בדיקות | 2–3 ימים |
סה"כ: 1.5–2.5 שבועות לא כולל מילוי מסד הנתונים. מילוי הוא משימה נפרדת התלויה בנפח התיעוד.
הזמינו פיתוח עכשיו
נעריך את הפרויקט שלכם תוך יום אחד. ספרו לנו על השאלות הטיפוסיות שלכם — נבחר את הגישה האופטימלית. צרו קשר דרך הטופס באתר או כתבו לטלגרם. קבלו ייעוץ עכשיו.

