הגדרת אימות שיחת פלאש ב-1C-Bitrix
לעתים קרובות אנו נתקלים במצבים שבהם אימות SMS נכשל: הספק חוסם את השליחה, הטלפון בנדידה, או שהיתרה אפסית. במקרים כאלה, שיחה שלא נענתה (Flash Call) באה להציל. המשתמש מזין את המספר שלו, המערכת מתקשרת ומנתקת — 4 הספרות האחרונות של המספר הנכנס הופכות לקוד האימות. זה זול פי 5-10 מ-SMS, והאמינות גבוהה יותר. הצוות שלנו מגדיר מנגנון זה במפתח מלא: מבחירת ספק ועד אינטגרציה עם הביטריקס שלך. נעריך את הפרויקט תוך יום אחד — צור קשר להערכה מוקדמת.
איך פועלת שיחה שלא נענתה?
מבחינה טכנית, התוכנית היא כזו: השרת שלך מורה לפלטפורמת הטלפון לבצע שיחה מאחד המספרים במאגר. המשתמש רואה שיחה נכנסת, זוכר (או מעתיק) את 4 הספרות האחרונות, ומזין אותן בטופס. אין צורך לענות לשיחה.
הדרישה המרכזית: הספק חייב להציע מאגר מספרים עם 4 ספרות אחרונות שונות ויכולת לבחור מספר ספציפי לשיחות יוצאות.
למה שיחה שלא נענתה זולה יותר מ-SMS?
Flash Call זול יותר: העלות הממוצעת של אימות אחד באמצעות שיחה שלא נענתה נמוכה פי 5-10 מ-SMS. זה בולט במיוחד בהיקפים של 1,000+ אימותים ביום. בנוסף, השיחה מובטחת להתקבל גם בנדידה, שבה SMS עלול להיחסם. התקציב שהתפנה יכול להיות מוקצה לשיווק או לשיפור חוויית הלקוח.
אילו ספקים תומכים ב-Flash Call?
| ספק | שיטה | תכונות |
|---|---|---|
| Exolve (MTS) | Flash Call API | מאגר מספרים יוצאים, תיעוד Exolve |
| Zadarma | שיחת פלאש בתוכניות API | REST API, חיוב לפי שיחה |
| Novofon | REST API | תמיכה באמצעות בקשות סטנדרטיות |
| Zvonok.ru | שירות ייעודי | אימות בלבד, הגדרה גמישה |
נבחר את הספק האופטימלי עבור התעבורה והתקציב שלך.
יישום בביטריקס
הארכיטקטורה דומה לאימות SMS, אך במקום קוד טקסט, המערכת מייצרת סיומת של 4 ספרות ובוחרת מספר טלפון מהמאגר עם סיומת זו.
טבלה לאחסון סשנים של אימות:
CREATE TABLE custom_flashcall_verification ( id INT AUTO_INCREMENT PRIMARY KEY, phone VARCHAR(20) NOT NULL, caller_number VARCHAR(20) NOT NULL, code VARCHAR(4) NOT NULL, created_at DATETIME NOT NULL, attempts INT DEFAULT 0, verified TINYINT DEFAULT 0 ); לוגיקת יצירה:
function initiateFlashCall(string $targetPhone): array { // Генерируем 4-значный код (0001–9999) $code = str_pad(random_int(1, 9999), 4, '0', STR_PAD_LEFT); // Выбираем номер из пула, заканчивающийся на этот код $callerNumber = FlashCallPool::getNumberByCode($code); if (!$callerNumber) { throw new \Exception('No available number for code: ' . $code); } // Инициируем вызов через API провайдера $provider = new ExolveFlashCallProvider(); $provider->call($callerNumber, $targetPhone); // Сохраняем в БД FlashCallVerificationTable::add([ 'PHONE' => $targetPhone, 'CALLER_NUMBER' => $callerNumber, 'CODE' => $code, 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ]); return ['success' => true, 'hint' => 'Ожидайте входящего звонка']; } ניהול מאגר המספרים
מאגר המספרים הוא חלק קריטי במערכת. עבור קודים 0000–9999, יש צורך במאגר מינימלי של כמה מאות מספרים; אחרת התנגשויות הן בלתי נמנעות בעומס גבוה.
טבלת מאגר:
CREATE TABLE custom_flashcall_pool ( id INT AUTO_INCREMENT PRIMARY KEY, phone_number VARCHAR(20) NOT NULL, code_suffix VARCHAR(4) NOT NULL, in_use TINYINT DEFAULT 0, last_used DATETIME, INDEX idx_code (code_suffix), INDEX idx_available (in_use, last_used) ); בעת בחירת מספר מהמאגר, נלקח המספר הראשון הזמין עם הסיומת הנדרשת שלא היה בשימוש ב-30 השניות האחרונות. לאחר השלמת האימות, המספר מוחזר למאגר.
ממשק משתמש
טופס האימות באמצעות שיחה שלא נענתה שונה מ-SMS:
- המשתמש מזין את מספר הטלפון שלו
- מופיעה הודעה: "תתקבל כעת שיחה ממספר. זכור את 4 הספרות האחרונות שלו."
- שדה קלט עם מסכה
CREATE TABLE custom_flashcall_verification ( id INT AUTO_INCREMENT PRIMARY KEY, phone VARCHAR(20) NOT NULL, caller_number VARCHAR(20) NOT NULL, code VARCHAR(4) NOT NULL, created_at DATETIME NOT NULL, attempts INT DEFAULT 0, verified TINYINT DEFAULT 0 ); - טיימר ספירה לאחור (בדרך כלל 30–60 שניות)
- כפתור "התקשר שוב" לאחר פקיעת הטיימר
חשוב ליידע את המשתמש שאין צורך לענות לשיחה — זה לא סטנדרטי ועלול לגרום לבלבול ללא הסבר.
אינטגרציה עם ביטריקס
האימות מוטמע באמצעות בקר AJAX (function initiateFlashCall(string $targetPhone): array { // Генерируем 4-значный код (0001–9999) $code = str_pad(random_int(1, 9999), 4, '0', STR_PAD_LEFT); // Выбираем номер из пула, заканчивающийся на этот код $callerNumber = FlashCallPool::getNumberByCode($code); if (!$callerNumber) { throw new \Exception('No available number for code: ' . $code); } // Инициируем вызов через API провайдера $provider = new ExolveFlashCallProvider(); $provider->call($callerNumber, $targetPhone); // Сохраняем в БД FlashCallVerificationTable::add([ 'PHONE' => $targetPhone, 'CALLER_NUMBER' => $callerNumber, 'CODE' => $code, 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ]); return ['success' => true, 'hint' => 'Ожидайте входящего звонка']; } ) ומחובר לטופס ההרשמה או התשלום באמצעות JavaScript. ברכיב CREATE TABLE custom_flashcall_pool ( id INT AUTO_INCREMENT PRIMARY KEY, phone_number VARCHAR(20) NOT NULL, code_suffix VARCHAR(4) NOT NULL, in_use TINYINT DEFAULT 0, last_used DATETIME, INDEX idx_code (code_suffix), INDEX idx_available (in_use, last_used) ); , מתווסף שלב אימות בין הזנת פרטי הקשר לאישור ההזמנה. תיעוד מלא ל-REST API של ביטריקס ניתן למצוא במדריך הרשמי.
אפשרות גיבוי: אם השיחה לא מגיעה תוך 90 שניות, המשתמש מוצע לעבור לאימות SMS.
מה כלול בהתקנה במפתח מלא
- בחירה וחיבור ספק Flash Call
- פיתוח מאגר המספרים וניהול התנגשויות
- יישום טופס האימות עם טיימר וגיבוי
- אינטגרציה עם הביטריקס שלך (רכיב, בקר, מסד נתונים)
- בדיקות עומס ותיעוד
- הדרכת מנהלים ותמיכה בהשקה
ניסיון של למעלה מ-5 שנים עם ביטריקס ו-30+ פרויקטי אינטגרציה מוצלחים מבטיחים תוצאות איכותיות.
שגיאות נפוצות וכיצד להימנע מהן
בעיות נפוצות במהלך היישום
- התנגשויות מספרים בעומס גבוה — נפתר על ידי הגדלת המאגר וזמן הנעילה
- תצוגת קוד שגויה — למשתמש אין זמן לשנן את הספרות; הגדל את משך השיחה ל-3 צלצולים
- תקלות ספק — גיבוי חובה ל-SMS
- פורמט מספר שגוי — אימות בצד הלקוח והשרת
לוחות זמנים
| היקף העבודה | משך |
|---|---|
| אינטגרציית ספק + טופס בסיסי | 1–2 ימים |
| מאגר מספרים + ניהול התנגשויות | +יום אחד |
| גיבוי SMS + אינטגרציה מלאה עם ביטריקס | 3–4 ימים |
עבור חנויות בעומס גבוה עם 1,000+ אימותים ביום, כדאי לתכנן יתירות במאגר ולנטר את זמינות הספק.
קבל ייעוץ ממומחה — צור קשר כדי להעריך לוחות זמנים ועלות עבור הפרויקט שלך.







