קטגוריות משנה

  • הסברים מסודרים ללא יכולת תגובה או פתיחת דיון

    266 נושאים
    240 פוסטים
    C
    שלום חברים! אחרי שחסמו לנו את מודול "המספר הנוסף" והתחילו לגבות יחידות על מודול "ראוטינג תור", נראה היה שאין ברירה ואין יותר דרך להוציא שיחות החוצה כך שהצד השני יראה את מספר המערכת שלנו בחינם... אז זהו, שלא! במדריך הזה אני הולך להראות לכם טריק מבריק שיאפשר לכם להוציא שיחות בזיהוי המערכת שלכם ללא עלות יחידות. שימו לב: המדריך משלב חלקים מעט מתקדמים. עקבו במדויק אחרי השלבים, ואם תסתבכו - חברי הפורום המומחים ישמחו לעזור. ️ שלב א': רישום המערכת לצינתוקים של עצמה (הכנה חד-פעמית) כדי שהטריק יעבוד, אנחנו צריכים לגרום למערכת לצנתק לעצמה. בשביל זה, אנחנו צריכים קודם כל לרשום את מספר המערכת לרשימת הצינתוקים. 1. הגדרת השלוחה הראשית (תיקיית השורש) בשלוחה הראשית של המערכת שלכם, הגדירו בקובץ ext.ini: type=menu check_did_and_go_to_folder=yes check_did_and_go_to_folder_one_check_only_phone=yes באותה שלוחה ראשית, פתחו קובץ חדש בשם Did_Go_To.ini והגדירו בו כך: ️ החליפו את 0555555555 במספר הנייד שלכם, ואת 0773137770 במספר המערכת שלכם! ; מספר הנייד שלכם יופנה לשלוחת Caller 0555555555=Caller ; מספר המערכת יופנה לשלוחת System 0773137770=System 2. יצירת שלוחת Caller פתחו שלוחה חדשה בשם Caller (תיקייה בשם זה בשלוחה הראשית) והגדירו בקובץ ext.ini שלה: type=tzintuk list_tzintuk=system tzintuk_admin=yes tzintuk_invitation_join_to_list_caller_id=customer_did 3. יצירת שלוחת System פתחו שלוחה חדשה בשם System (תיקייה בשם זה בשלוחה הראשית) והגדירו בקובץ ext.ini שלה: type=hangup send_dtmf=1,0010,0100 4. ביצוע הרישום בפועל (בטלפון) כעת נעשה את הרישום עצמו: התקשרו למערכת מהנייד שלכם (השיחה תופנה אוטומטית לשלוחת Caller). הקישו 5 (הזמנת מספר לרשימה). הקישו את מספר המערכת עצמה ואשרו את ההזמנה. המערכת תתקשר לעצמה ותקיש אוטומטית את מקשי האישור שקבענו בשלוחת System. המתינו כ-10 שניות. זהו! מספר המערכת רשום כעת בהצלחה לקבלת צינתוקים מעצמו. שלב ב': הגדרת מערכת החיוג (הוצאת שיחות) כעת, אחרי שהמערכת רשומה לצינתוקים, נשנה את ההגדרות של השלוחות שיצרנו כדי שיהפכו למערכת חיוג (ניתוביה). 1. עדכון שלוחת System כנסו לשלוחת System ושנו את ההגדרות בקובץ ext.ini שלה לקוד הבא: ️ החליפו את המספר 0555555555 במספר הטלפון הנייד שלכם! type=nitoviya nitoviya_dial_to=0555555555 check_access_filter=yes access_filter_no_goto=A access_filter_1=g.*.*.*.*.*.5s.1.thiscall send_dtmf=1,0010,0100 כעת, פתחו תיקייה חדשה בשם A בתוך שלוחת System (נתיב: System/A/), ובקובץ ext.ini שלה הגדירו: type=nitoviya 2. עדכון שלוחת Caller כנסו לשלוחת Caller ושנו את ההגדרות בקובץ ext.ini שלה לקוד הבא: type=tzintuk list_tzintuk=system tzintuk_admin=yes run_tzintuk_automat=yes tzintuk_say_system_info_on_answer=yes tzintuk_end=hangup למראה מקצועי: מומלץ להשתיק בשלוחה זו את הודעת המערכת M3338 ("הצינתוק הופעל בהצלחה") על ידי העלאת קובץ שמע שקט בשם זה לשלוחה. איך משתמשים בזה ביומיום? ברגע שסיימתם להגדיר, חוויית החיוג שלכם תהיה פשוטה ומהירה: אתם מתקשרים למערכת שלכם מהטלפון הנייד. המערכת מזהה אתכם, מפעילה צינתוק לעצמה ומנתקת לכם את השיחה מיד (כך שלא בזבזתם אפילו שנייה של שיחה). תוך כמה שניות המערכת תחזור אליכם בשיחה! (לפעמים זה לוקח חצי דקה, תלוי בעומס הצינתוקים). אתם עונים לשיחה הנכנסת מהמערכת, מקישים את המספר שאליו אתם רוצים להגיע, והמערכת תחייג אליו – כאשר על צג הטלפון שלו יופיע מספר המערכת שלכם! בלי הגבלות, בלי מודולים חסומים ובלי לשלם יחידות על ראוטינג תור. בהצלחה לכולם! ספרו בתגובות אם הצלחתם להגדיר.
  • 8k נושאים
    64k פוסטים
    C
    @נועם-אלימלך ?
  • 131 נושאים
    686 פוסטים
    ה
    @הבוס-הגדול אני בדקתי גם בדגמים פשוטים של יילינק וזה עבד מעולה.
  • טיפים עצות ודיונים עליהם

    775 נושאים
    11k פוסטים
    S
    @יצחק-י. @ד-ב האם יש לכם מושג איך עושים תזמון לעוד כמה דקות או שעות ולא להקליד כל פעם תאריך ושעה ???
  • 1k נושאים
    10k פוסטים
    מ
    @sh0548534047 מה זה הפילטר של המנהל? עשיתי זאת וזה ניכנס לטפריט הראשי, וגם זה לא עובר לשלוחה שרציתי
  • 286 נושאים
    4k פוסטים
    א
    כתבתי קוד PHP שדרכו ניתן להוספת זיהוי למערכת ההגדרות לשלוחה שתוסיף את המספר שתקישו type=api api_link=לינק לקוד שלכם api_hangup_send=no api_phone_send=no title=אימות טלפון api_add_0=token=טוקן המערכת שלכם הגדרות לשלוחה שתוסיף את המספר שנכנס לשלוחה type=api api_link=לינק api_hangup_send=no title=אימות טלפון api_add_0=token=טוקן הקוד מצורף בספויילר Spoiler <?php header('Content-Type: text/plain; charset=utf-8'); // הגדרת נתיבים לקבצים באותה התיקייה $jsonFilePath = __DIR__ . '/requests.json'; $logFilePath = __DIR__ . '/system.log'; // פונקציה לייעודית לכתיבת לוגים function writeToLog($message, $logFilePath) { $timestamp = date('Y-m-d H:i:s'); $logMessage = "[{$timestamp}] {$message}\n" . str_repeat('-', 40) . "\n"; @file_put_contents($logFilePath, $logMessage, FILE_APPEND); } // 1. קבלת הפרמטרים מהקריאה $token = isset($_GET['token']) ? $_GET['token'] : ''; $code = isset($_GET['code']) ? $_GET['code'] : ''; // 2. קביעת מספר הטלפון (תמיכה ב-Phone וב-ApiPhone) $phone = ''; if (!empty($_GET['Phone'])) { $phone = $_GET['Phone']; } elseif (!empty($_GET['ApiPhone'])) { $phone = $_GET['ApiPhone']; } // ניקוי מספר הטלפון מתווים שאינם ספרות $phoneKey = preg_replace('/[^0-9]/', '', $phone); // תיעוד כניסת פרמטרים ללוג $incomingParams = json_encode($_GET, JSON_UNESCAPED_UNICODE); writeToLog("בקשה נכנסת לשרת.\nפרמטרים שהתקבלו: {$incomingParams}", $logFilePath); // בדיקת חובה: האם קיים טוקן? if (empty($token)) { $err = "שגיאה: פרמטר token חסר בבקשה."; echo $err; writeToLog($err, $logFilePath); exit; } // טעינת קובץ ה-JSON הקיים $jsonData = []; if (file_exists($jsonFilePath)) { $fileContent = file_get_contents($jsonFilePath); $jsonData = json_decode($fileContent, true) ?: []; } // ========================================== // ניתוב לפי שלבי הפעולה // ========================================== if (empty($code)) { // ========================================== // שלב א': שליחת קוד אימות לטלפון // ========================================== if (empty($phoneKey)) { echo "read=m-1125=Phone,,10,9,,Phone,,,,,,,,,"; writeToLog("שלב א': חסר מספר טלפון, הוחזרה הוראת הקשה למערכת.", $logFilePath); exit; } // בניית הפרמטרים לשליחה (כאן בתגובה החוזרת מהם זה מגיע כ-reqId) $apiParams = [ 'token' => $token, 'action' => 'send', 'callerId' => $phoneKey, 'validType' => 'CALL' ]; $url = "https://www.call2all.co.il/ym/api/ValidationCallerId?" . http_build_query($apiParams); writeToLog("שלב א': פנייה ל-API.\nכתובת: {$url}", $logFilePath); $response = @file_get_contents($url); if ($response === false) { $err = "שגיאה בשלב א': file_get_contents נכשל."; echo $err; writeToLog($err, $logFilePath); exit; } writeToLog("שלב א': תשובה גולמית מה-API:\n{$response}", $logFilePath); $data = json_decode($response, true); if (!$data) { $err = "שגיאה בשלב א': תגובה אינה JSON תקין."; echo $err; writeToLog($err, $logFilePath); exit; } if (isset($data['responseStatus']) && $data['responseStatus'] === 'OK' && isset($data['reqId'])) { // דריסת זיהוי ישן אם קיים if (isset($jsonData[$phoneKey])) { unset($jsonData[$phoneKey]); writeToLog("זיהוי ישן עבור מספר {$phoneKey} נמחק מהקובץ.", $logFilePath); } // שמירת ה-reqId $jsonData[$phoneKey] = $data['reqId']; file_put_contents($jsonFilePath, json_encode($jsonData, JSON_PRETTY_PRINT)); echo "read=f-A000=code,,6,4,12,Digits,yes,,,,,,,,"; writeToLog("שלב א' הסתיים בהצלחה. המזהה נשמר ב-JSON.", $logFilePath); } else { $msg = isset($data['message']) ? $data['message'] : 'לא צוינה סיבה'; echo "שגיאה מה-API בשלב השליחה: " . $msg; writeToLog("שגיאה מה-API בשלב השליחה: " . $msg, $logFilePath); } } else { // ========================================== // שלב ב': אימות הקוד שהוקש על ידי המשתמש // ========================================== if (empty($phoneKey)) { $err = "שגיאה בשלב ב': נשלח קוד אך מספר הטלפון חסר בקריאה."; echo $err; writeToLog($err, $logFilePath); exit; } if (!isset($jsonData[$phoneKey])) { $err = "שגיאה בשלב ב': לא נמצא מזהה בקשה שמור עבור הטלפון " . $phoneKey . " ב-JSON."; echo $err; writeToLog($err, $logFilePath); exit; } // שליפת המזהה השמור $savedId = $jsonData[$phoneKey]; // תיקון ה-URL: שימוש בפרמטר reId במקום reqId והסרת משתנים מיותרים $apiParams = [ 'token' => $token, 'action' => 'valid', 'reId' => $savedId, // התיקון המדויק שלך! 'code' => $code ]; $url = "https://www.call2all.co.il/ym/api/ValidationCallerId?" . http_build_query($apiParams); writeToLog("שלב ב': פנייה ל-API לצורך אימות.\nכתובת שנשלחה: {$url}", $logFilePath); $response = @file_get_contents($url); if ($response === false) { $err = "שגיאה בשלב ב': נכשלה ההתקשרות לשרת לצורך אימות."; echo $err; writeToLog($err, $logFilePath); exit; } writeToLog("שלב ב': תשובה גולמית מה-API:\n{$response}", $logFilePath); $data = json_decode($response, true); if (!$data) { $err = "שגיאה בשלב ב': תגובת השרת אינה JSON תקין."; echo $err; writeToLog($err, $logFilePath); exit; } if (isset($data['responseStatus']) && $data['responseStatus'] === 'OK') { // הסרת הרשומה לאחר הצלחה unset($jsonData[$phoneKey]); file_put_contents($jsonFilePath, json_encode($jsonData, JSON_PRETTY_PRINT)); echo "OK"; writeToLog("שלב ב' הסתיים בהצלחה מוחלטת! הקוד אומת, הרשומה נמחקה.", $logFilePath); } else { $msg = isset($data['message']) ? $data['message'] : 'הקוד שגוי או פג תוקף'; echo "אימות הקוד נכשל מול ימות המשיח. סיבה: " . $msg; writeToLog("אימות נכשל. סיבה: {$msg}. קוד: {$code}, מזהה שנשלח (reId): {$savedId}", $logFilePath); } } שימו לב בתקייה של הקוד יווצר קובץ ששומר את הפרטים שמתקבלים בין הקריאות בנוסף יווצר קובץ לוג שבו מתועד כל בקשה וכל לשיחה לימות המשיח ומה בדיוק היתה התשובה שימו לב! יש להעלות בשלוחה קובץ בשם A000 שבו אומרים כעת נשלחה שיחת אימות "אנא הקישו את הקוד שקיבלתם בשיחה"