מערכת שאלות ותשובות מותאמת אישית למוצרי 1C-Bitrix

מערכת שאלות ותשובות מותאמת אישית למוצרי 1C-Bitrix באתר עם 10,000 מוצרים, מגיעות עד 50 שאלות לקוחות ביום. ללא מערכת אחידה, מנהלים מבזבזים עד 3 שעות ביום במענה בצ'אטים, דוא"ל וטלפון. לקוחות, שלא ממתינים לתשובה, עוזבים למתחרים — המרה
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מערכת שאלות ותשובות מותאמת אישית למוצרי 1C-Bitrix
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1455
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    879
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1162

מערכת שאלות-תשובות מותאמת אישית למוצרי 1C-Bitrix

באתר עם 10,000 מוצרים, מגיעות עד 50 שאלות לקוחות ביום. ללא מערכת אחידה, מנהלים מבזבזים עד 3 שעות ביום במענה בצ'אטים, בדוא"ל ובטלפון. לקוחות, שלא ממתינים לתשובה, עוזבים למתחרים — ההמרה יורדת ב-15–20%. מערכת שאלות-תשובות מותאמת אישית על 1C-Bitrix פותרת בעיה זו: היא הופכת את קליטת השאלות, המודרציה, ההתראות לאוטומטיות, ומייצרת תוכן משתמש ייחודי (UGC). UGC לא רק מגביר נאמנות אלא גם משפר SEO — מנועי חיפוש אוהבים טקסט חדש בדפי מוצרים.

בלוק שאלות-תשובות בכרטיס המוצר מאפשר ללקוחות לשאול שאלות ולקבל תשובות מיידיות מהחנות או מקונים אחרים. ל-Bitrix אין רכיב סטנדרטי — אנו מיישמים אותו על מודל ORM מותאם אישית. בפרויקט אחד לאחר היישום, שאלות חוזרות ירדו ב-35%, וזמן התגובה הראשונה הצטמצם לשעתיים, מה שהפחית את עומס התמיכה ב-30%.

איך לבנות מודל ORM לשאלות ותשובות?

למערכת שאלות-תשובות, מספיקות שתי טבלאות מקושרות. טבלה b_product_question:

שדה סוג מטרה
ID int מפתח ראשי
PRODUCT_ID int מזהה מוצר
USER_ID int מזהה משתמש (NULL = אורח)
AUTHOR_NAME varchar(255) שם המחבר
AUTHOR_EMAIL varchar(255) דוא"ל להתראת תשובה
QUESTION text טקסט השאלה
STATUS enum PENDING, APPROVED, REJECTED
CREATED_AT datetime תאריך יצירה

טבלה b_product_answer (תשובות לשאלות):

שדה סוג מטרה
ID int מפתח ראשי
QUESTION_ID int FK → b_product_question.ID
USER_ID int מי ענה
AUTHOR_NAME varchar(255) שם מחבר התשובה
IS_OFFICIAL tinyint(1) תשובה רשמית מהחנות
ANSWER text טקסט התשובה
STATUS enum PENDING, APPROVED
CREATED_AT datetime תאריך יצירה
דוגמה למחלקות ORM ProductQuestionTable
namespace Your\Module; use Bitrix\Main\ORM\Data\DataManager; use Bitrix\Main\ORM\Fields\IntegerField; use Bitrix\Main\ORM\Fields\TextField; use Bitrix\Main\ORM\Fields\EnumField; use Bitrix\Main\ORM\Fields\DatetimeField; use Bitrix\Main\ORM\Fields\Relations\Reference; use Bitrix\Main\ORM\Query\Join; class ProductQuestionTable extends DataManager { public static function getTableName() { return 'b_product_question'; } public static function getMap() { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('PRODUCT_ID', ['required' => true]), new IntegerField('USER_ID'), new TextField('AUTHOR_NAME'), new TextField('AUTHOR_EMAIL'), new TextField('QUESTION', ['required' => true]), new EnumField('STATUS', ['values' => ['PENDING', 'APPROVED', 'REJECTED'], 'default' => 'PENDING']), new DatetimeField('CREATED_AT', ['default' => function () { return new \Bitrix\Main\Type\DateTime(); }]), ]; } } 

מחלקות ORM namespace Your\Module; use Bitrix\Main\ORM\Data\DataManager; use Bitrix\Main\ORM\Fields\IntegerField; use Bitrix\Main\ORM\Fields\TextField; use Bitrix\Main\ORM\Fields\EnumField; use Bitrix\Main\ORM\Fields\DatetimeField; use Bitrix\Main\ORM\Fields\Relations\Reference; use Bitrix\Main\ORM\Query\Join; class ProductQuestionTable extends DataManager { public static function getTableName() { return 'b_product_question'; } public static function getMap() { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('PRODUCT_ID', ['required' => true]), new IntegerField('USER_ID'), new TextField('AUTHOR_NAME'), new TextField('AUTHOR_EMAIL'), new TextField('QUESTION', ['required' => true]), new EnumField('STATUS', ['values' => ['PENDING', 'APPROVED', 'REJECTED'], 'default' => 'PENDING']), new DatetimeField('CREATED_AT', ['default' => function () { return new \Bitrix\Main\Type\DateTime(); }]), ]; } } ו-ProductQuestionTable מרחיבות את ProductAnswerTable. הקשר מוגדר באמצעות \Bitrix\Main\ORM\Data\DataManager עבור JOIN בשאילתה אחת. ארכיטקטורה זו מהירה פי 2–3 מהפתרון הסטנדרטי מבוסס הרכיבים. מידע נוסף על ORM ב-תיעוד רשמי וב-ויקיפדיה.

הצבעה על מועילות מגבירה המרה

כאשר לקוח רואה שתשובה עזרה לאחרים, הוא סומך יותר על החנות. אנו מוסיפים טבלה \Bitrix\Main\ORM\Fields\Relations\Reference עם שדות b_product_answer_vote, ANSWER_ID, USER_ID, IP. מוני צבירה (IS_HELPFUL, HELPFUL_COUNT) נשמרים ישירות ב-UNHELPFUL_COUNT להצגה מהירה ללא JOIN. זה מפחית את זמן טעינת הדף ב-15%. לפי הסטטיסטיקות שלנו, למוצרים עם שאלות-תשובות והצבעות גלויות יש המרת רכישה גבוהה ב-18%.

מהו מחזור החיים של שאלה?

כל שאלה עוברת את השלבים הבאים:

  1. הלקוח שולח שאלה → נוצר רשומה עם b_product_answer.
  2. המודרטור מקבל התראת דוא"ל (אירוע דוא"ל STATUS = PENDING).
  3. המודרטור מאשר את השאלה (PRODUCT_QUESTION_NEW) — השאלה הופכת גלויה בדף.
  4. מנהל או לקוח אחר משאיר תשובה → STATUS = APPROVED עם b_product_answer.
  5. אם התשובה דורשת מודרציה — מאושרת באופן דומה. תשובות רשמיות (STATUS = PENDING) יכולות להתפרסם אוטומטית.
  6. לאחר התשובה המאושרת הראשונה, מחבר השאלה מקבל התראת דוא"ל.

התראות

קבוצה מינימלית של אירועי דוא"ל:

  • IS_OFFICIAL = 1 — שאלה חדשה ממתינה למודרציה. נמען: מנהל.
  • PRODUCT_QUESTION_NEW — תשובה חדשה ממתינה למודרציה (אם מודרציית תשובות מופעלת).
  • PRODUCT_ANSWER_NEW — השאלה שלך קיבלה תשובה. נמען: מחבר לפי PRODUCT_QUESTION_ANSWERED.

תבניות נוצרות ב-הגדרות → אירועי דוא"ל. משתנים מועברים דרך הפרמטר השני של AUTHOR_EMAIL:

\CEvent::Send('PRODUCT_QUESTION_ANSWERED', SITE_ID, [ 'QUESTION_TEXT' => $question['QUESTION'], 'ANSWER_TEXT' => $answer['ANSWER'], 'PRODUCT_NAME' => $productName, 'PRODUCT_URL' => $productUrl, 'AUTHOR_EMAIL' => $question['AUTHOR_EMAIL'], 'AUTHOR_NAME' => $question['AUTHOR_NAME'], ]); 

חיפוש בשאלות

בדפים עם נפח שאלות גבוה (מוצרים פופולריים), אנו מוסיפים חיפוש AJAX לפי טקסט השאלה. שאילתה דרך ORM:

ProductQuestionTable::getList([ 'filter' => [ '=PRODUCT_ID' => $productId, '=STATUS' => 'APPROVED', '%QUESTION' => $searchQuery, ], 'select' => ['ID', 'AUTHOR_NAME', 'QUESTION', 'CREATED_AT'], 'order' => ['CREATED_AT' => 'DESC'], 'limit' => 10, ]); 

הקידומת CEvent::Send() במפתח הסינון של D7 מאפשרת חיפוש LIKE.

קטע ניהול

ב-\CEvent::Send('PRODUCT_QUESTION_ANSWERED', SITE_ID, [ 'QUESTION_TEXT' => $question['QUESTION'], 'ANSWER_TEXT' => $answer['ANSWER'], 'PRODUCT_NAME' => $productName, 'PRODUCT_URL' => $productUrl, 'AUTHOR_EMAIL' => $question['AUTHOR_EMAIL'], 'AUTHOR_NAME' => $question['AUTHOR_NAME'], ]); אנו מציגים טבלת שאלות עם מסננים לפי סטטוס, מוצר ותאריך. אנו משתמשים במחלקה הסטנדרטית ProductQuestionTable::getList([ 'filter' => [ '=PRODUCT_ID' => $productId, '=STATUS' => 'APPROVED', '%QUESTION' => $searchQuery, ], 'select' => ['ID', 'AUTHOR_NAME', 'QUESTION', 'CREATED_AT'], 'order' => ['CREATED_AT' => 'DESC'], 'limit' => 10, ]); עבור דפדוף ומיון מהירים ללא כתיבת HTML ידנית.

מה כלול בפיתוח

  • תיעוד על סכמת ORM ו-API.
  • מיגרציות ליצירת טבלאות.
  • קטע ניהול למודרציה.
  • הגדרת אירועי דוא"ל ותבניות.
  • בדיקות על 5+ תרחישים (אורח, משתמש רשום, מודרטור).
  • הכשרת מנהלים על המערכת.

לוח זמנים והיקף

היקף תוכן לוח זמנים
בסיסי מודלי ORM, טופס שאלה, הצגת שאלות-תשובות, התראות, מודרציה בלוח הניהול 4–6 ימים
מלא תשובות לקוחות, חיפוש בשאלות, הצבעה על מועילות, קטע ניהול 8–12 ימים

יש לנו ניסיון של 7+ שנים עם Bitrix, מעל 120 פרויקטים שהושלמו. אנו שותף Bitrix מוסמך ומספקים אחריות ל-30 יום על כל הפיתוח. בקשו ייעוץ — נכין פתרון לפרויקט שלכם.