פיתוח בוט לתשובות אוטומטיות לשאלות נפוצות ב-Bitrix24
מחצית מההודעות הנכנסות בצ'אט התמיכה הן אותן שאלות: 'איך מחזירים פריט?', 'איפה ההזמנה שלי?', 'מהם תנאי המשלוח?'. נציגי השירות מבזבזים זמן על שגרה, והעסק מפסיד כסף על פניות מורכבות שלא מטופלות. חנות מקוונת עם 500 הזמנות ביום קיבלה 200 פניות, 80% מהן היו טיפוסיות. לאחר הטמעת הבוט, זמן התגובה ירד מ-5 דקות למיידי, והנציגים התמקדו במקרים מורכבים. החיסכון בעלויות התמיכה הגיע ל-40% בחודש הראשון — ללא פגיעה באיכות.
אנו מפתחים בוט שעונה אוטומטית לשאלות נפוצות ומעביר שאלות לא סטנדרטיות לנציג אנושי. הפתרון עובד ישירות ב-Bitrix24 Open Lines — ללא שירותי צד שלישי. הליבה היא או חיפוש מילות מפתח מהיר או RAG סמנטי על embeddings.
איך הבוט מתחבר ל-Open Lines?
Bitrix24 Open Lines הם נקודת הכניסה המרכזית. הבוט נרשם כנציג הראשון של הקו. כשלקוח כותב לצ'אט המקוון, Telegram או 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}.' | נסגר אוטומטית |
| 'האם אתם מקבלים כרטיסי אשראי?' | 'אנו מקבלים Visa, MasterCard, Maestro, תשלומים דרך 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 שבועות לא כולל מילוי המאגר. מילוי הוא משימה נפרדת התלויה בנפח התיעוד.
הזמינו פיתוח עכשיו
נעריך את הפרויקט שלכם ביום אחד. ספרו לנו על השאלות הטיפוסיות שלכם — נבחר את הגישה האופטימלית. צרו קשר דרך הטופס באתר או כתבו ל-Telegram. קבלו ייעוץ כבר עכשיו.

