קוד PHP להעתקת קובץ משלוחה מוגדרת לקובץ הגבוה בשלוחה מוגדרת והפעלת צינטוק לא עובד
-
קוד PHP להעתקת קובץ משלוחה מוגדרת לקובץ הגבוה בשלוחה מוגדרת והפעלת צינטוק לא עובד
הקוד<?php $ApiDID=$_GET['ApiDID']; $pass=$_GET['pass']; $path1=$_GET['path1']; $path2=$_GET['path2']; $tiz=$_GET['tiz']; $what=$_GET['what']; $url1=file_get_contents("https://www.call2all.co.il/ym/api/GetIVR2Dir?token=$ApiDID:$pass&path=$path2&filesLimit=1&orderDir=desc"); $data = json_decode($url1, true); $ok1 = $data["responseStatus"]; if ($ok1 === 'OK') { $tz = $data["files"]; } else { print "id_list_message=m-1080."; exit; } $filteredTz = array_filter($tz, function ($value) { return str_ends_with($value, '.wav') || str_ends_with($value, '.tts'); }); $highestValue = ""; foreach ($filteredTz as $value) { $parts = explode('/', $value); $lastPart = $parts[1]; $lastPartWithoutExtension = substr($lastPart, 0, -4); if ($lastPartWithoutExtension > $highestValue) { $highestValue = $lastPartWithoutExtension; } } $url=file_get_contents("https://www.call2all.co.il/ym/api/FileAction?token=$ApiDID:$pass&what=$path1/$what&target=$path2/$highestValue&action=copy"); if ($url === false) { print "id_list_message=m-1080."; exit; } $data = json_decode($url, true); if (empty($data) || !isset($data["success"]) || $data["success"] !== 'true') { print "id_list_message=m-1080."; exit; } $url2=file_get_contents("https://www.call2all.co.il/ym/api/RunTzintuk?token=$ApiDID:$pass&TzintukTimeOut=8&phones=tzl:$tiz"); $data = json_decode($url2, true); $ok2= $data["responseStatus"]; if($ok2=='OK'){print"id_list_message=m-2573";} else{print"id_list_message=m-1080.";} print"ok"; ?>
@אליהושש תוכל לעזור
-
@ivrפון
לא הבנתי את כל הבלאגן בקוד אבל תנסה את זה.<?php $ApiDID=$_GET['ApiDID']; $pass=$_GET['pass']; $path1=$_GET['path1']; $path2=$_GET['path2']; $tiz=$_GET['tiz']; $what=$_GET['what']; $token="$ApiDID:$pass"; $obj = json_decode(file_get_contents("https://www.call2all.co.il/ym/api/GetIVR2DirStats?token={$token}&path=ivr2:/{$path2}&"),true); $ok= $obj["responseStatus"]; if($ok=="OK"){ $fi = $obj['maxFile']; $filess = $fi['name']; if($filess != null){ $fil = $filess + 1 ; } if($fil<9){ $fil=sprintf("00%u",$fil); } elseif($fil<99){ $fil=sprintf("0%u",$fil); } } else{ print"id_list_message=m-1080."; exit; } $url=json_decode(file_get_contents("https://www.call2all.co.il/ym/api/FileAction?token={$token}&what={$path1}/{$what}&target={$path2}/{$fil}&action=copy"),true); $ok1= $url["responseStatus"]; if($ok1=="OK"){ $url2=file_get_contents("https://www.call2all.co.il/ym/api/RunTzintuk?token={$token}&TzintukTimeOut=8&phones=tzl:{$tiz}"); $data = json_decode($url2, true); $ok2= $data["responseStatus"]; if($ok2=="OK"){ print"id_list_message=m-2573"; } else{ print"id_list_message=m-1080."; } } ?>
-
@אליהושש לא עובד "אין מענה משרת API" הקוד מור להעביר קובץ משלוחה X לקובץ הגבווה בשלוחה X ואז להפעיל צינטוק ההגדרות בשלוחה
type=api api_link=https://ivrphone.online/admin.php api_add_0=pass=**** api_add_1=path1=2 api_add_2=what=000 api_add_3=path2=3 api_add_4=tiz=1
-
@ivrפון
מה התגובה בלוג API או כשאתה מריץ על המחשב -
@ivrפון
צריך לשלוח גם סוג קובץ, להלן הקוד המתוקן<?php $ApiDID=$_GET['ApiDID']; $pass=$_GET['pass']; $path1=$_GET['path1']; $path2=$_GET['path2']; $tiz=$_GET['tiz']; $what=$_GET['what']; $file_type=$_GET['type']; $token="$ApiDID:$pass"; $obj = json_decode(file_get_contents("https://www.call2all.co.il/ym/api/GetIVR2DirStats?token={$token}&path=ivr2:{$path2}&"),true); $ok= $obj["responseStatus"]; if($ok=="OK"){ $fi = $obj['maxFile']; $filess = (int)$fi['name']; if($filess != null){ $fil = $filess + 1 ; } if($fil<9){ $fil=sprintf("00%u",$fil); } elseif($fil<99){ $fil=sprintf("0%u",$fil); } } else{ print"id_list_message=m-1080"; exit; } $url=json_decode(file_get_contents("https://www.call2all.co.il/ym/api/FileAction?token={$token}&what=ivr2:{$path1}/{$what}.{$file_type}&target=ivr2:{$path2}/{$fil}.{$file_type}&action=copy"),true); $ok1= $url["responseStatus"]; if($ok1=="OK"){ $url2=file_get_contents("https://www.call2all.co.il/ym/api/RunTzintuk?token={$token}&TzintukTimeOut=8&phones=tzl:{$tiz}"); $data = json_decode($url2, true); $ok2= $data["responseStatus"]; if($ok2=="OK"){ print"id_list_message=m-2573"; } else{ print"id_list_message=m-1081."; } }else{ print"id_list_message=m-1080."; exit; } ?>
וההגדרות בשלוחה
type=api api_link=https://ivrphone.online/admin.php api_add_0=pass=**** api_add_1=path1=2 api_add_2=what=000 api_add_3=path2=3 api_add_4=tiz=1 api_add_5=type=wav
-
@ivrפון
אבל בכלל לא הבנתי בשביל מה אתה צריך להסתבך בשביל לקבל את מספר הקובץ הגבוה בשלוחה, בברירת מחדל זה מעתיק את הקובץ לקובץ הגבוה בשלוחה כפי ש @eliyahu כתב בAPI - גישת מפתחים למערכות:הערה: שימו לב! השם המקורי נשמר. במידה ומדובר בהעברת או העתקת קבצים עם שם בעל מספר סידורי שמות הקבצים ישתנו בהתאם לשמות הקבצים בשלוחת היעד. (לדוגמה, אם בוצעה העתקה של קובץ 001 משלוחה 2 לשלוחה 1 ששם קיים קובץ בשם 050 אז השם של הקובץ שהועתק ישתנה ל-051).
-
@אליהושש תודה לא שמתי לב
-
@אליהושש כתב בקוד PHP להעתקת קובץ משלוחה מוגדרת לקובץ הגבוה בשלוחה מוגדרת והפעלת צינטוק לא עובד:
@ivrפון
אבל בכלל לא הבנתי בשביל מה אתה צריך להסתבך בשביל לקבל את מספר הקובץ הגבוה בשלוחה, בברירת מחדל זה מעתיק את הקובץ לקובץ הגבוה בשלוחה כפי ש @eliyahu כתב בAPI - גישת מפתחים למערכות:הערה: שימו לב! השם המקורי נשמר. במידה ומדובר בהעברת או העתקת קבצים עם שם בעל מספר סידורי שמות הקבצים ישתנו בהתאם לשמות > הקבצים בשלוחת היעד. (לדוגמה, אם בוצעה העתקה של קובץ 001 משלוחה 2 לשלוחה 1 ששם קיים קובץ בשם 050 אז השם של הקובץ שהועתק ישתנה ל-051).
אבל לא הבנתי מה לכתוב ביעד במקרה כזה ivr2:1 לדוגמה בשביל להעביר כגבוה ב1?
-
@ivrפון
הכל כתוב שם@eliyahu כתב בAPI - גישת מפתחים למערכות:
- בניהול קבצים מרובים או שלוחות מרובות יש לציין את נתיב היעד הרצוי. לדוגמה, במידה והיעד הוא שלוחה 1 יש לציין את הנתיב כך
target=ivr2:1
.
הערה: שימו לב! השם המקורי נשמר. במידה ומדובר בהעברת או העתקת קבצים עם שם בעל מספר סידורי שמות הקבצים ישתנו בהתאם לשמות הקבצים בשלוחת היעד. (לדוגמה, אם בוצעה העתקה של קובץ 001 משלוחה 2 לשלוחה 1 ששם קיים קובץ בשם 050 אז השם של הקובץ שהועתק ישתנה ל-051).
- בניהול קבצים מרובים או שלוחות מרובות יש לציין את נתיב היעד הרצוי. לדוגמה, במידה והיעד הוא שלוחה 1 יש לציין את הנתיב כך
-
@ivrפון הקוד אחרי שסידרתי ```
<?php $ApiDID = $_GET['ApiDID']; $pass = $_GET['pass']; $path1 = $_GET['path1']; $path2 = $_GET['path2']; $tiz = $_GET['tiz']; $what = $_GET['what']; // קריאת נתונים מ-API $url1 = @file_get_contents("https://www.call2all.co.il/ym/api/GetIVR2Dir?token=$ApiDID:$pass&path=$path2&filesLimit=1&orderDir=desc"); if ($url1 === false) { print "id_list_message=m-1080."; // שגיאה בקריאה ל-API exit; } $data = json_decode($url1, true); $ok1 = $data["responseStatus"]; if ($ok1 !== 'OK' || !isset($data["files"])) { print "id_list_message=m-1080."; // לא נמצא קובץ או שגיאה ב-API exit; } $tz = $data["files"]; // סינון קבצים בסיומות '.wav' ו-'.tts' $filteredTz = array_filter($tz, function ($value) { return (substr($value, -4) === '.wav' || substr($value, -4) === '.tts'); }); // חיפוש הקובץ הגבוה ביותר $highestValue = ""; foreach ($filteredTz as $value) { $parts = explode('/', $value); $lastPart = end($parts); // לוקח את החלק האחרון מהנתיב $lastPartWithoutExtension = substr($lastPart, 0, -4); // מסיר את הסיומת if ($lastPartWithoutExtension > $highestValue) { $highestValue = $lastPartWithoutExtension; } } // העתקת הקובץ $url = @file_get_contents("https://www.call2all.co.il/ym/api/FileAction?token=$ApiDID:$pass&what=$path1/$what&target=$path2/$highestValue&action=copy"); if ($url === false) { print "id_list_message=m-1080."; // שגיאה בהעתקת הקובץ exit; } $data = json_decode($url, true); if (empty($data) || !isset($data["success"]) || $data["success"] !== 'true') { print "id_list_message=m-1080."; // שגיאה בתשובה מה-API exit; } // הפעלת צינטוק $url2 = @file_get_contents("https://www.call2all.co.il/ym/api/RunTzintuk?token=$ApiDID:$pass&TzintukTimeOut=8&phones=tzl:$tiz"); if ($url2 === false) { print "id_list_message=m-1080."; // שגיאה בהפעלת צינטוק exit; } $data = json_decode($url2, true); $ok2 = $data["responseStatus"]; if ($ok2 == 'OK') { print "id_list_message=m-2573"; // הצלחה בהפעלת צינטוק } else { print "id_list_message=m-1080."; // שגיאה בהפעלת צינטוק } print "ok"; // סיום ?>
שיפורים בקוד:
הוספת טיפול בשגיאות: הוספתי את השימוש ב־@file_get_contents() יחד עם בדיקות אם הקריאה מחזירה false, כלומר אם הייתה בעיה בהורדת הנתונים מה-API.סינון קבצים: השתמשתי ב־substr במקום str_ends_with למקרה שאתה עובד עם גרסאות ישנות של PHP.
ביקורת נתונים: לפני כל שלב קריטי, הוספתי בדיקות אם התשובה מכילה את המידע הצפוי (כמו קובץ או הודעת הצלחה).
חיפוש קובץ גבוה ביותר: הפכתי את לולאת החיפוש קצת יותר ברורה ומסודרת, כולל שימוש ב־end() כדי לקחת את החלק האחרון של הנתיב בצורה יותר ברורה.