השלמת קוד לשלוחת אלפון מתקדם
-
עריכה: אני מתנצל על כך שהפוסט יצא מידי ארוך ותפילתי שהוא מספיק מובן ושיהיה מישהו שיהיה לו סבלנות לקרוא את כל זה.
שלום רב לכל המתכנתים החשובים!!!
אני מנסה לכתוב קוד לשלוחת אלפון אם אופציית חיפוש של חלק מהשם, במקלדת רציפה בלי סולמיות בין אות לאות, ושיקבל את הנתונים מהקובץListAllInformation
(שבתיקייתEnterID
שבשלוחה הראשית, ברירת מחדל), שכך יוכלו להוסיף אנשי קשר דרך הטלפון דרך מודול קבלת נתונים, דהיינו בטור הראשון מספר הטלפון, בטור השני הסיפרה 1 (שיוכלו להשתמש עם זה גם בצורה הפוכה כמו ההסבר בסוגריים המרובעות בהמשך), בשלישי שם פרטי, ברביעי משפחה [ולמה לא בשדה אחיד?? כי כך אפשר לעשות ג"כ שלוחה הפוכה (הקשת מספר טלפון ושמיעת השם) על פי אותו קובץ ע"י כניסה אם זיהויenter_id_type=list_all_information
והשמעת השם בכניסה לשלוחה נלקחת מהשדה השלישי והרביעי.] ובחמישי כתובת.התבססתי בקוד בעיקר על פי חתיכות קודים שפורסמו בפורום הנפלא הזה, רק שאני נתקע בכמה דברים, ואשמח לעזרתכם.
א. הקוד יוצר מערך של כל השורות שהשדה השלישי או הרביעי שלהם מכילים את האותיות שהוקשו, רק שבדרך כלל יש תוצאות כפולות דהיינו שהאותיות שהוקשו נמצאים גם בשדה השלישי וגם ברביעי, כך שיש אנשי קשר שנמצאים פעמיים במערך, אשמח לפיתרון איך לנפות את המערך שלא יהיו שורות כפולות.
ב. אני מעונין להדפיס את התוצאות אחד אחד, דהיינו שישמיע (ע"י read) את השם הראשון ויהיה אפשר לבחור אם לעבור לאיש קשר קודם או לאיש קשר הבא או לשמיעת איש הקשר פעם נוספת וכן אופצייה לחיפוש חדש או ליציאה. והדרך לעשות את זה הוא ע"י שמירת מיקום האינדקס שהמאזין אוחז בו, בקובץ בשלוחה ששמו כשם מזהה השיחה של המתקשר (כדי שלא יתערבב בין המאזינים) לדוגמא חתיכת קוד$extension=$_REQUEST['ApiExtension']; $ApiCallId=$_REQUEST['ApiCallId']; $u=json_decode(file_get_contents("https://www.call2all.co.il/ym/api/GetTextFile?token={$token}&what=ivr2:{$extension}/{$ApiCallId}.txt&"), true); $g=$u['contents']; if($g == null){ $gg='0'; } if($g != null){ $gg=$g+1; } file_get_contents("https://www.call2all.co.il/ym/api/UploadTextFile?token={$token}&what=ivr2:{$extension}/{$ApiCallId}.txt&contents={$gg}&"); //$gg = מספר האינדקס
רק הבעייה שכל המערך שמכיל את תוצאות החיפוש מוגדר בתוך האינדקס מספר 0. אשמח לפיתרון.
להלן הקוד
<?php $did = $_REQUEST['did']; $password = $_REQUEST['pass']; $txt=$_REQUEST['txt']; if($txt == null){ print "read=t-אנא הקש אתעל מקשי הטלפון את השם לחיפוש או חלק ממנו, כאשר בין שני אותיות על אותו המקש הקישו כוכבית, לרווח הקישו 0, ולסיום הקישו סולמית=txt,,,1,24,NO,,,,,,,,,no,"; }else{ $array_number = [33333, 3333, 333, 33, 3, 22222, 2222, 222, 22, 2, 66666, 6666, 666, 66, 6, 55555, 5555, 555, 55, 5, 44444, 4444, 444, 44, 4, 99999, 9999, 999, 99, 9, 88888, 8888, 888, 88, 8, 77777, 7777, 777, 77, 7, "00000", "0000", "000", "00", "0", 11111, 1111, 111, 11, 1]; $array_abc = ["&", "&", "ג", "ב", "א", "$", "$", "ו", "ה", "ד", "^", "^", "ט", "ח", "ז", "@", "ל", "ך", "כ", "י", "#", "ן", "נ", "ם", "מ", ";", "ף", "פ", "ע", 'ס', "-", "-", "ק", "ץ", 'צ', "`", "_", "ת", "ש", "ר", "+", "+", "+", ":", "%", "=", ",", "!", "?", "."]; $txt = str_replace($array_number, $array_abc, $txt); $array_numbe = ["&", "$", "^", "@", "#", ";", "-", "_", "+", "=", "`" ,'*']; $array_ab = [3, 2, 6, 5, 4, 9, 8, 7, 0, 1, 7, ""]; $txt = str_replace($array_numbe, $array_ab, $txt); $token="{$did}:{$password}"; $u=json_decode(file_get_contents("https://www.call2all.co.il/ym/api/GetTextFile?token={$token}&what=ivr2:EnterID/ListAllInformation.ini&"), true); $str=$u['contents']; function getFormattedData(string $str): array { $result = []; $lines = explode("\n", $str); foreach ($lines as $line) { $parts = str_getcsv($line); $result[] = [ 'שם' => $parts[2], 'משפחה' => $parts[3], 'טלפון' => $parts[0], 'כתובת' => $parts[4], ]; } return $result; } $jsonString = json_encode(getFormattedData($str), JSON_UNESCAPED_UNICODE); // Decode the JSON string to a PHP array $array = json_decode($jsonString, true); // Create a new array with the desired structure $newArray = ["data" => $array]; // Encode the new array to a JSON string $newJsonString = json_encode(($newArray), JSON_UNESCAPED_UNICODE); $data = json_decode($newJsonString); $dat = json_decode($newJsonString); function filterData($items, $searchString) { foreach ($items as $item) { if (strpos($item->שם, $searchString) !== false) { $result[] = $item; } } return $result; } function filterDat($items, $searchString) { foreach ($items as $item) { if (strpos($item->משפחה, $searchString) !== false) { $result[] = $item; } } return $result; } $result= json_encode(filterData($data->data, $txt), JSON_UNESCAPED_UNICODE); $result.= json_encode(filterDat($dat->data, $txt), JSON_UNESCAPED_UNICODE); print_r($result);
מצפה לעזרתכם!!!
תודה מראש!!!