• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    מדריך התחלת עבודה עם API של ימות משיח (חלק ב').

    פורום מפתחים API
    8
    24
    2550
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • A
      ASS נערך לאחרונה על ידי ASS

      טוב, אז בהמשך למדריך הראשון שעסק בעיקר בהבנת המונחים הבסיסיים והכנת סביבת העבודה, במדריך זה נלמד איך לכתוב את הקוד לביצוע פעולות בשרת של ימות משיח.
      לא נסביר את כל משמעות הקוד, אחרת המדריך יגמור לימות את הזיכרון בשרת 🙂

      הידע בשפת PHP הכרחי למי שרוצה לעשות פעולות נוספות מעבר למה שמופיע במדריך הזה.
      המדריך מבוסס על התיעוד של ימות כמובן!

      מתחילים:

      חיבור לימות משיח.
      דבר ראשון שנרצה לעשות הוא להתחבר לשרת של ימות.
      האפשרות הקלה ביותר הינה בעזרת המחלקה שבנו מ. מ. פליישער ו מאזין נלהב, תודה להם על הפיתוח.
      כיצד עובדים עם המחלקה?

      שלב א':
      במקום המסומן ב *** נגדיר האם המערכת שלנו בימות נמצאת בשרת הפרייוט או הרגיל.

      define("URL", "https://***.call2all.co.il/ym/api/");
      

      בשרת רגיל נכתוב: www

      define("URL", "https://www.call2all.co.il/ym/api/");
      
      

      ובשרת פרייוט נכתוב: private

      define("URL", "https://private.call2all.co.il/ym/api/");
      
      

      בכדי למנוע בעיות בהעלאת קבצים בהמשך, יש להוסיף את המשתנה הבא:
      בשרת רגיל נכתוב: www

      $server = "www";
      
      

      ובשרת פרייוט נכתוב: private

      $server = "private";
      
      

      לסיכום:
      בשרת רגיל הקוד צריך להראות ככה:

      define("URL", "https://www.call2all.co.il/ym/api/");
      $server = "www";
      

      ובשרת פרייוט הקוד צריך להראות ככה:

      define("URL", "https://private.call2all.co.il/ym/api/");
      $server = "private";
      

      שלב ב':

      הוספת המחלקה.
      נעתיק את הקוד הבא:

      class BodyPost
      {
      // part "multipart/form-data"
          public static function PartPost($name, $val)
           {
               $body = 'Content-Disposition: form-data; name="' . $name . '"';
      // check instance of oFile
               if($val instanceof oFile)
                {
                    $file = $val->Name();
                    $mime = $val->Mime();
                    $cont = $val->Content();
       
                    $body .= '; filename="' . $file . '"' . "\r\n";
                    $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                    $body .= $cont."\r\n";
                } else $body .= "\r\n\r\n".$val."\r\n";
               return $body;
           }
       
          public static function Get(array $post, $delimiter = '-------------0123456789')
           {
               if(is_array($post) && !empty($post))
                {
                    $bool = true;
                    //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                    if($bool)
                     {
                         $ret = '';
                         foreach($post as $name=>$val)
                             $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                         $ret .= "--" . $delimiter . "--\r\n";
                     } else $ret = http_build_query($post);
                } else throw new \Exception('Error input param!');
               return $ret;
           }
      }
       
      class oFile
      {
           private $name;
           private $mime;
           private $content;
       
           public function __construct($name, $mime=null, $content=null)
            {
                if(is_null($content))
                 {
                     $info = pathinfo($name);
      // check is exist and readable file
                     if(!empty($info['basename']) && is_readable($name))
                      {
                          $this->name = $info['basename'];
      // get MIME
                          $this->mime = mime_content_type($name);
      // load file
                          $content = file_get_contents($name);
                          if($content!==false)
                          {
                              $this->content = $content;
                          }
                          else
                          {
                              throw new Exception('Don`t get content - "'.$name.'"');
                          }
                      }
                      else
                      {
                          throw new Exception('Error param');
                      }
                 }
                 else
                 {
                         $this->name = $name;
                         if(is_null($mime)) $mime = mime_content_type($name);
                         $this->mime = $mime;
                         $this->content = $content;
                  };
            }
       
          public function Name() { return $this->name; }
       
          public function Mime() { return $this->mime; }
       
          public function Content() { return $this->content; }
       
      }
       
      class connecting_to_yemot_api
      {
          public $token;
       
          const URL = URL;
       
          public function __construct($user_name, $password)
          {
              $body = array('username' => $user_name, 'password' => $password);
       
              $body = http_build_query($body);
       
              $opts = array('http' => array(
       
                  'method'  => 'POST',
       
                  'header'  => "Content-Type: application/x-www-form-urlencoded",
       
                  'content' => $body,
       
                  'follow_location' => false) );
       
               $context  = stream_context_create($opts);
       
               $url = self::URL.'Login';
       
                  $result = file_get_contents($url, FALSE, $context);
       
                  $result = json_decode($result);
       
                  if($result -> responseStatus == 'OK')
                  {
                      $this -> token = $result -> token;
       
                      return TRUE;
                  }
                  else
                  {
                      throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                  }
          }
       
          public function __destruct()
          {
              $this -> connecting('Logout');
          }
       
          public function connecting($action, $body = array())
          {
              $delimiter = '----'.uniqid();
       
              $body['token'] = $this -> token;
       
              $body = BodyPost::Get($body, $delimiter);
       
              $opts = array('http' =>
                      array(
                          'method'  => 'POST',
                          'header'  => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                          'content' => $body,
                          'follow_location' => false
                          )
                        );
              $context  = stream_context_create($opts);
       
              $url = self::URL.$action;
       
              $result = file_get_contents($url, FALSE, $context);
       
              $headers = $this -> parseHeaders($http_response_header);
       
              if($headers['Content-Type'][0] == 'application/json')
              {
                  return json_decode($result);
              }
              else
              {
                  return $result;
              }
          }
       
          private function parseHeaders($headers)
          {
              // פונקציה שמקבלת מערך של שורות הכותרות
              // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
       
       
              // מערך הכותרות
              $head = array();
       
              foreach( $headers as $k=>$v )
              {
                  $t = explode( ':', $v, 2 );
       
                  if( isset( $t[1] ) )
                  {
                      if($t[0] == 'Set-Cookie')
                      {
                          $CookiesArr = array();
       
                          $cookies = explode( ';', $t[1]);
       
                          foreach($cookies as $cookie)
                          {
                              $c = explode( '=', $cookie);
       
                              if( isset( $c[1] ) )
                              {
                                  $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                              }
                              else
                              {
                                  $CookiesArr[] = trim( $c[0] );
                              }
                          }
       
                          $head[ trim($t[0]) ] = $CookiesArr;
                      }
                      elseif($t[0] == 'Content-Type')
                      {
                          $arr = array();
       
                          $children = explode( ';', $t[1]);
       
                          foreach($children as $child)
                          {
                              $c = explode( '=', $child);
       
                              if( isset( $c[1] ) )
                              {
                                  $arr[ trim($c[0]) ] = trim( $c[1] );
                              }
                              else
                              {
                                  $arr[] = trim( $c[0] );
                              }
                          }
       
                          $head[ trim($t[0]) ] = $arr;
                      }
                      else
                      {
                          $head[ trim($t[0]) ] = trim( $t[1] );
                      }
                  }
                  else
                  {
                      $head[] = $v;
                      if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                      {
                          $head['reponse_code'] = intval($out[1]);
                      }
                  }
              }
              return $head;
          }
      }
      

      ארוך, אבל שווה את זה!

      שלב ג':

      כעת נגדיר מהם שם המשתמש והסיסמה, נבצע זאת בעזרת הצבת משתנים.
      במקום המסומן ב 0790000000 נכניס את מספר הטלפון של המערכת, ובמקום המסומן ב 1234 נכניס את הסיסמה, כך:

      $con = new connecting_to_yemot_api('0790000000','1234');
      

      לסיום נציב עוד משתנה עם הפרמטר טוקן, בעזרת משתנה זה לא נדרש לכתוב שם משתמש וסיסמה בכל פעם.
      במקום המסומן ב 0790000000 נכניס את מספר הטלפון של המערכת, ובמקום המסומן ב 1234 נכניס את הסיסמה, כך:

      $token =  "0790000000:1234";
      

      זהו סיימנו את קוד ההתחברות, אחת ולתמיד.

      בצעו שמירה
      ורעננו את הדפדפן או כנסו שוב ל http://localhost/my_php/main.php.

      אם אין שגיאות הצלחנו להכנס לשרת של ימות!
      נכון שלא רואים כלום ככה זה ב PHP אם לא רואים כלום זה סימן טוב 🙂 .

      ממשיכים...

      פקודות ופרמטרים.

      אם נעיף מבט בתיעוד של ימות נראה שבכדי שנצליח לבצע את מבוקשינו בצורה נכונה צריך לציין בקוד גם פקודה וגם פרמטרים.

      פקודה: בכדי שהשרת יבין מה אתם רוצים לעשות חשוב לציין את שם הפקודה, הפקודה יכולה להיות בין היתר: העלאת קבצים, מחיקת קבצים, קבלת פרטי המערכת, ועוד פקודות רבות כמופיע בתיעוד .

      פרמטרים: הפרמטרים הם בעצם הפרטים של הפקודה, כלומר: אם לדוגמא אנחנו רוצים להעלות קובץ וכתבנו פקודת העלאת קבצים, מעולה! אבל לאן להעלות? לשלוחה הראשית או לשלוחה אחרת? את זה השרת חייב לדעת! בשביל זה נועדו הפרמטרים, לכוון את השרת למה שאנחנו רוצים בדיוק.
      בהמשך נראה את הנושא בצורה יותר פרקטית.

      בשורת הקוד הבאה נציב את פרמטר נתיב בתוך משתנה.
      החליפו את *** בנתיב השלוחה אליה אתם רוצים להעלות את הקובץ:

      $path = "ivr2:***";
      

      לדוגמא:

      $path = "ivr2:4/1";
      

      הסבר:
      הקובץ יעלה לשלוחה 1 שבתוך שלוחה 4.

      הנתיב חייב להיות מוגדר, ודאו ששורת הקוד הזו נמצאת אצלכם!

      בעיה בהעלאת קבצים
      לפני שנמשיך לפרט על פקודת העלאת קבצים נעצור לרגע.
      ישנה בעיה בהעלאת קבצים לשלוחה, לדוגמא אם בשלוחה כל שהיא יש לנו קובץ שמע בשם 000.wavנרצה שהקובץ הבא שיעלה יהיה 001.wav , פה יש לנו בעיה: הקוד לא יעשה את זה!
      הבעיה הועלתה בנושא הזה ונפתרה ע"י ערוץ הסקרים, כעת נשלב את הפתרון בקוד.
      העתיקו את הקוד:

      // פונקציה למספרי קבצים עוקבים
      function FileNameToUpload($server, $token, $path){
      	$array = json_decode(file_get_contents("https://$server.call2all.co.il/ym/api//GetIVR2Dir?token=$token&path=$path"),true);
      	if($array["responseStatus"] == "OK"){
      		foreach($array["files"] as $key => $value){
      			if($value["fileType"] == "AUDIO" || $value["fileType"] == "TTS"){
      				$split = explode(".",$value["name"]);
      				if (is_numeric($split[0])){		
      					break;
      				}
      			}
      		}
      		if($split[0] == null){
      			$NewFileName = 0;
      		}else{
      			$NewFileName = $split[0]+1;
      		}
      		//הפוך למינימום 3 ספרות/
      		return str_pad($NewFileName,3,"0",STR_PAD_LEFT);
      	}else{
      	//במקרה של שגיאה
          echo "שגיאה";
      
      	}
      }
          // קריאה לפונקציה.
      $NewFileName = FileNameToUpload($server,$token,$path);
      if($NewFileName != null){
        //מכריז על שם של נתיב הקובץ להעלאה
      $path_name = "$path/$NewFileName.wav";
       }
      

      פקודת העלאת קבצים

      נמשיך לפרט על פקודת העלאת קבצים, אבל זוהי רק דוגמא, מה שנכתב פה יהיה רלוונטי גם לפקודות אחרות, כמובן שיש לעיין בתיעוד ולהבין בדיוק מה צריך.

      שלב א':
      בשלב הראשון נודיע לשרת מהיכן לקחת את הקובץ אותו אנחנו רוצים לעלות.
      נציב משתנה בשם $File אשר יכיל את כל פרטי הקובץ:
      העתיקו את הקוד הבא:

      $File = new oFile('ext.ini', 'text/plain', file_get_contents("***"));
      

      כעת הכניסו במקום *** את הנתיב שבו מאוחסן הקובץ, לדוגמא: C:\Users\PC\Downloads, והוסיפו אחריו סלש כזה: / ולא כזה: \, ולאחר מכן את שם הקובץ, לדוגמא: Lesson_Number_55.mp3.

      הנתיב צריך להראות כך: C:\Users\PC\Downloads/Lesson_Number_55.mp3.

      לסיכום הקוד צריך להראות כך:

      $File = new oFile('ext.ini', 'text/plain', file_get_contents("C:\Users\PC\Downloads/Lesson_Number_55.mp3"));
      
      

      שלב ב':
      לאחר שהשרת יודע היכן הקובץ, נתקדם לפקודה והפרמטרים.
      נציב את הפקודה בתוך משתנה Upload_order$
      פקודה נכתבת כך:

         $Upload_order = $con -> connecting('***',
      

      החליפו את *** בשם הפקודה להעלאת קבצים.
      שם הפקודה הוא: UploadFile.
      כך:

         $Upload_order = $con -> connecting('UploadFile',
      

      שלב ג':
      כעת נוסיף את הפרמטרים, הפרמטרים הדרושים מופיעים בתיעוד של ימות, אבל בכל אופן נעבור עליהם יחד.
      הפרמטרים כפי שמופיע בתיעוד:

      1. טוקן : token .
        על הפרמטר 'טוקן' אפשר לדלג משום שנכנסנו עם המחלקה.
      2. נתיב : path .
        בפרמטר נתיב נכניס את המשתנה path_name$ זהו המשתנה שהוגדר בחלק האחרון של הקוד שהעתקנו למעלה.
      3. המרה : convertAudio .
        אם המרה מוגדר על 1 הקובץ יומר לפורמט: .wav שהוא פורמט השמע הטוב ביותר עבור מערכת טלפונית, אם מודגר על: 0 לא תתבצע המרה.

      ניגש לקוד:
      פרמטר נתיב - path:

      נוסיף ] לאחריו את הפרמטר נתיב : 'path' את הסימן: <= ואז את המשתנה path_name$ ולבסוף פסיק:, .
      הקוד נראה כך:

      [
       'path' =>$path_name,
      

      פרמטר המרה - convertAudio:
      נכתב כך:

           'convertAudio' => 1,
      

      הסבר:
      פרמטר המרה מוגדר על 1 מה שאומר שהקובץ יומר, אם נגדיר 0 לא תתבצע המרה.

      פרמטר קובץ להעלאה - fileUpload:
      נוסיף פרמטר נוסף (שמשום מה לא מופיע בתיעוד של ימות) פרמטר קובץ להעלאה: fileUpload, ונוסיף לו את משתנה נתיב קובץ להעלאה שהגדרנו למעלה, כך:

           'fileUpload' => $File
      

      כאן לא מוסיפים פסיק :, משום שהוא הפרמטר האחרון.

      נסגור עם:

         ]
      );
      

      לסיכום: קוד הפקודה יחד עם הפרמטרים נראה כך:

         $Upload_order = $con -> connecting('UploadFile',
         [
          'path' =>$path_name,
          'convertAudio' => 1,
          'fileUpload' => $File
         ]
      );
      

      זהו, סיימנו!

      בצעו שמירה
      ורעננו את הדפדפן או כנסו שוב ל http://localhost/my_php/main.php.
      אם אין שגיאות כנסו למערכת הניהול שלכם ובידקו האם הקובץ אכן עלה לשלוחה, אם כן - ברכות- אם לא חזרו שוב על הקוד ובידקו את הטעות לפי הודעת השגיאה...

      למדנו המון, במדריך הבא נבצע בל"נ יחד פרוייקט קטן בכדי לבדוק האם העיקרון הובן לנו היטב.
      יהי רצון שיהיה לתועלת להרבות תורה בישראל.

      למעבר למדריך הבא לחצו כאן.

      ל ש 3 תגובות תגובה אחרונה תגובה ציטוט 10
      • ל
        לולב ואתרוג @ASS נערך לאחרונה על ידי

        @ass לא עלה לי הקובץ
        היכן אני מכניס את הפקודה הזו?
        $path = "ivr2:4/1";
        ואיך אני מפנה לשלוחה 1 תחת השלוחה הראשית?

        A תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • A
          ASS @לולב ואתרוג נערך לאחרונה על ידי ASS

          @לולב-ואתרוג אמר במדריך התחלת עבודה עם API של ימות משיח (חלק ב').:

          היכן אני מכניס את הפקודה הזו?

          שלום @לולב-ואתרוג,
          ראשית זאת לא פקודה אלא משתנה שהערך שלו זה פרמטר הנתיב, כלומר אתה מגדיר לתוכנה מראש להיכן להעלות את הקובץ.

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

          ואיך אני מפנה לשלוחה 1 תחת השלוחה הראשית?

          פשוט ככה:

          $path = "ivr2:1";
          

          או:

          $path = "ivr2:/1";
          

          ואיך אני מפנה לשלוחה 1 תחת השלוחה הראשית?

          טיפ: ע"י ניסוי וטעייה היית יכול לפתור לבד את הבעיה הזו, שווה לנסות ולבדוק מה קורה אם... זה יחסוך לך את הזמן לחכות עד שיענו לך וכו', גם ככה קוד הוא אבן שואבת לשגיאות ובעיות, אז יהיה נחמד להוריד קצת 🙂

          ל מ 2 תגובות תגובה אחרונה תגובה ציטוט 2
          • ל
            לולב ואתרוג @ASS נערך לאחרונה על ידי

            @ass כתבתי ככה
            01/
            זו הייתה הטעות שלי
            תודה👍

            תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • מ
              מני מני @ASS נערך לאחרונה על ידי

              פוסט זה נמחק!
              תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • Y
                yonatan נערך לאחרונה על ידי yonatan

                @ASS
                התחברתי עם המחלקה וכתבתי פקודה, בסוף סגרתי עם ?>

                והוא מחזיר

                ( ! ) Parse error: syntax error, unexpected '?>', expecting ')' in C:\wamp64\www\my_php\1.php on line 260
                

                כאילו יש לו בעיה עם הסיומת, הורדתי את הסיומת ומחזיר

                ( ! ) Parse error: syntax error, unexpected end of file, expecting ')' in C:\wamp64\www\my_php\1.php on line 260
                

                הקוד המלא הוא

                <?php
                
                define("URL", "https://private.call2all.co.il/ym/api/");
                $server = "private";
                
                class BodyPost
                {
                // part "multipart/form-data"
                    public static function PartPost($name, $val)
                     {
                         $body = 'Content-Disposition: form-data; name="' . $name . '"';
                // check instance of oFile
                         if($val instanceof oFile)
                          {
                              $file = $val->Name();
                              $mime = $val->Mime();
                              $cont = $val->Content();
                 
                              $body .= '; filename="' . $file . '"' . "\r\n";
                              $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                              $body .= $cont."\r\n";
                          } else $body .= "\r\n\r\n".$val."\r\n";
                         return $body;
                     }
                 
                    public static function Get(array $post, $delimiter = '-------------0123456789')
                     {
                         if(is_array($post) && !empty($post))
                          {
                              $bool = true;
                              //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                              if($bool)
                               {
                                   $ret = '';
                                   foreach($post as $name=>$val)
                                       $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                                   $ret .= "--" . $delimiter . "--\r\n";
                               } else $ret = http_build_query($post);
                          } else throw new \Exception('Error input param!');
                         return $ret;
                     }
                }
                 
                class oFile
                {
                     private $name;
                     private $mime;
                     private $content;
                 
                     public function __construct($name, $mime=null, $content=null)
                      {
                          if(is_null($content))
                           {
                               $info = pathinfo($name);
                // check is exist and readable file
                               if(!empty($info['basename']) && is_readable($name))
                                {
                                    $this->name = $info['basename'];
                // get MIME
                                    $this->mime = mime_content_type($name);
                // load file
                                    $content = file_get_contents($name);
                                    if($content!==false)
                                    {
                                        $this->content = $content;
                                    }
                                    else
                                    {
                                        throw new Exception('Don`t get content - "'.$name.'"');
                                    }
                                }
                                else
                                {
                                    throw new Exception('Error param');
                                }
                           }
                           else
                           {
                                   $this->name = $name;
                                   if(is_null($mime)) $mime = mime_content_type($name);
                                   $this->mime = $mime;
                                   $this->content = $content;
                            };
                      }
                 
                    public function Name() { return $this->name; }
                 
                    public function Mime() { return $this->mime; }
                 
                    public function Content() { return $this->content; }
                 
                }
                 
                class connecting_to_yemot_api
                {
                    public $token;
                 
                    const URL = URL;
                 
                    public function __construct($user_name, $password)
                    {
                        $body = array('username' => $user_name, 'password' => $password);
                 
                        $body = http_build_query($body);
                 
                        $opts = array('http' => array(
                 
                            'method'  => 'POST',
                 
                            'header'  => "Content-Type: application/x-www-form-urlencoded",
                 
                            'content' => $body,
                 
                            'follow_location' => false) );
                 
                         $context  = stream_context_create($opts);
                 
                         $url = self::URL.'Login';
                 
                            $result = file_get_contents($url, FALSE, $context);
                 
                            $result = json_decode($result);
                 
                            if($result -> responseStatus == 'OK')
                            {
                                $this -> token = $result -> token;
                 
                                return TRUE;
                            }
                            else
                            {
                                throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                            }
                    }
                 
                    public function __destruct()
                    {
                        $this -> connecting('Logout');
                    }
                 
                    public function connecting($action, $body = array())
                    {
                        $delimiter = '----'.uniqid();
                 
                        $body['token'] = $this -> token;
                 
                        $body = BodyPost::Get($body, $delimiter);
                 
                        $opts = array('http' =>
                                array(
                                    'method'  => 'POST',
                                    'header'  => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                                    'content' => $body,
                                    'follow_location' => false
                                    )
                                  );
                        $context  = stream_context_create($opts);
                 
                        $url = self::URL.$action;
                 
                        $result = file_get_contents($url, FALSE, $context);
                 
                        $headers = $this -> parseHeaders($http_response_header);
                 
                        if($headers['Content-Type'][0] == 'application/json')
                        {
                            return json_decode($result);
                        }
                        else
                        {
                            return $result;
                        }
                    }
                 
                    private function parseHeaders($headers)
                    {
                        // פונקציה שמקבלת מערך של שורות הכותרות
                        // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
                 
                 
                        // מערך הכותרות
                        $head = array();
                 
                        foreach( $headers as $k=>$v )
                        {
                            $t = explode( ':', $v, 2 );
                 
                            if( isset( $t[1] ) )
                            {
                                if($t[0] == 'Set-Cookie')
                                {
                                    $CookiesArr = array();
                 
                                    $cookies = explode( ';', $t[1]);
                 
                                    foreach($cookies as $cookie)
                                    {
                                        $c = explode( '=', $cookie);
                 
                                        if( isset( $c[1] ) )
                                        {
                                            $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                                        }
                                        else
                                        {
                                            $CookiesArr[] = trim( $c[0] );
                                        }
                                    }
                 
                                    $head[ trim($t[0]) ] = $CookiesArr;
                                }
                                elseif($t[0] == 'Content-Type')
                                {
                                    $arr = array();
                 
                                    $children = explode( ';', $t[1]);
                 
                                    foreach($children as $child)
                                    {
                                        $c = explode( '=', $child);
                 
                                        if( isset( $c[1] ) )
                                        {
                                            $arr[ trim($c[0]) ] = trim( $c[1] );
                                        }
                                        else
                                        {
                                            $arr[] = trim( $c[0] );
                                        }
                                    }
                 
                                    $head[ trim($t[0]) ] = $arr;
                                }
                                else
                                {
                                    $head[ trim($t[0]) ] = trim( $t[1] );
                                }
                            }
                            else
                            {
                                $head[] = $v;
                                if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                                {
                                    $head['reponse_code'] = intval($out[1]);
                                }
                            }
                        }
                        return $head;
                    }
                }
                
                
                $con = new connecting_to_yemot_api('07*****','****');
                $token = "07******:*****";
                
                
                
                $File_list = $con -> connecting('GetSession',
                
                ?>
                
                A מ 2 תגובות תגובה אחרונה תגובה ציטוט 0
                • A
                  ASS @yonatan נערך לאחרונה על ידי

                  @yonatan
                  היה חסר לך בשורה אחת לפני הסוף (.
                  בדרך כלל שגיאות מסוג של מצפה לסיום הקובץ וכו' זה בעיה בשורות שלפני כן ולא בשורה של השגיאה.

                  <?php
                  define("URL", "https://private.call2all.co.il/ym/api/");
                  $server = "private";
                   
                  class BodyPost
                  {
                  // part "multipart/form-data"
                      public static function PartPost($name, $val)
                       {
                           $body = 'Content-Disposition: form-data; name="' . $name . '"';
                  // check instance of oFile
                           if($val instanceof oFile)
                            {
                                $file = $val->Name();
                                $mime = $val->Mime();
                                $cont = $val->Content();
                   
                                $body .= '; filename="' . $file . '"' . "\r\n";
                                $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                                $body .= $cont."\r\n";
                            } else $body .= "\r\n\r\n".$val."\r\n";
                           return $body;
                       }
                   
                      public static function Get(array $post, $delimiter = '-------------0123456789')
                       {
                           if(is_array($post) && !empty($post))
                            {
                                $bool = true;
                                //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                                if($bool)
                                 {
                                     $ret = '';
                                     foreach($post as $name=>$val)
                                         $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                                     $ret .= "--" . $delimiter . "--\r\n";
                                 } else $ret = http_build_query($post);
                            } else throw new \Exception('Error input param!');
                           return $ret;
                       }
                  }
                   
                  class oFile
                  {
                       private $name;
                       private $mime;
                       private $content;
                   
                       public function __construct($name, $mime=null, $content=null)
                        {
                            if(is_null($content))
                             {
                                 $info = pathinfo($name);
                  // check is exist and readable file
                                 if(!empty($info['basename']) && is_readable($name))
                                  {
                                      $this->name = $info['basename'];
                  // get MIME
                                      $this->mime = mime_content_type($name);
                  // load file
                                      $content = file_get_contents($name);
                                      if($content!==false)
                                      {
                                          $this->content = $content;
                                      }
                                      else
                                      {
                                          throw new Exception('Don`t get content - "'.$name.'"');
                                      }
                                  }
                                  else
                                  {
                                      throw new Exception('Error param');
                                  }
                             }
                             else
                             {
                                     $this->name = $name;
                                     if(is_null($mime)) $mime = mime_content_type($name);
                                     $this->mime = $mime;
                                     $this->content = $content;
                              };
                        }
                   
                      public function Name() { return $this->name; }
                   
                      public function Mime() { return $this->mime; }
                   
                      public function Content() { return $this->content; }
                   
                  }
                   
                  class connecting_to_yemot_api
                  {
                      public $token;
                   
                      const URL = URL;
                   
                      public function __construct($user_name, $password)
                      {
                          $body = array('username' => $user_name, 'password' => $password);
                   
                          $body = http_build_query($body);
                   
                          $opts = array('http' => array(
                   
                              'method'  => 'POST',
                   
                              'header'  => "Content-Type: application/x-www-form-urlencoded",
                   
                              'content' => $body,
                   
                              'follow_location' => false) );
                   
                           $context  = stream_context_create($opts);
                   
                           $url = self::URL.'Login';
                   
                              $result = file_get_contents($url, FALSE, $context);
                   
                              $result = json_decode($result);
                   
                              if($result -> responseStatus == 'OK')
                              {
                                  $this -> token = $result -> token;
                   
                                  return TRUE;
                              }
                              else
                              {
                                  throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                              }
                      }
                   
                      public function __destruct()
                      {
                          $this -> connecting('Logout');
                      }
                   
                      public function connecting($action, $body = array())
                      {
                          $delimiter = '----'.uniqid();
                   
                          $body['token'] = $this -> token;
                   
                          $body = BodyPost::Get($body, $delimiter);
                   
                          $opts = array('http' =>
                                  array(
                                      'method'  => 'POST',
                                      'header'  => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                                      'content' => $body,
                                      'follow_location' => false
                                      )
                                    );
                          $context  = stream_context_create($opts);
                   
                          $url = self::URL.$action;
                   
                          $result = file_get_contents($url, FALSE, $context);
                   
                          $headers = $this -> parseHeaders($http_response_header);
                   
                          if($headers['Content-Type'][0] == 'application/json')
                          {
                              return json_decode($result);
                          }
                          else
                          {
                              return $result;
                          }
                      }
                   
                      private function parseHeaders($headers)
                      {
                          // פונקציה שמקבלת מערך של שורות הכותרות
                          // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
                   
                   
                          // מערך הכותרות
                          $head = array();
                   
                          foreach( $headers as $k=>$v )
                          {
                              $t = explode( ':', $v, 2 );
                   
                              if( isset( $t[1] ) )
                              {
                                  if($t[0] == 'Set-Cookie')
                                  {
                                      $CookiesArr = array();
                   
                                      $cookies = explode( ';', $t[1]);
                   
                                      foreach($cookies as $cookie)
                                      {
                                          $c = explode( '=', $cookie);
                   
                                          if( isset( $c[1] ) )
                                          {
                                              $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                                          }
                                          else
                                          {
                                              $CookiesArr[] = trim( $c[0] );
                                          }
                                      }
                   
                                      $head[ trim($t[0]) ] = $CookiesArr;
                                  }
                                  elseif($t[0] == 'Content-Type')
                                  {
                                      $arr = array();
                   
                                      $children = explode( ';', $t[1]);
                   
                                      foreach($children as $child)
                                      {
                                          $c = explode( '=', $child);
                   
                                          if( isset( $c[1] ) )
                                          {
                                              $arr[ trim($c[0]) ] = trim( $c[1] );
                                          }
                                          else
                                          {
                                              $arr[] = trim( $c[0] );
                                          }
                                      }
                   
                                      $head[ trim($t[0]) ] = $arr;
                                  }
                                  else
                                  {
                                      $head[ trim($t[0]) ] = trim( $t[1] );
                                  }
                              }
                              else
                              {
                                  $head[] = $v;
                                  if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                                  {
                                      $head['reponse_code'] = intval($out[1]);
                                  }
                              }
                          }
                          return $head;
                      }
                  }
                   
                   
                  $con = new connecting_to_yemot_api('07*****','****');
                  $token = "07******:*****";
                   
                   
                   
                  $File_list = $con -> connecting('GetSession')
                   
                  ?>
                  
                  
                  
                  
                  
                  
                  Y תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • מ
                    מנסה מומחה @yonatan נערך לאחרונה על ידי

                    @yonatan

                    אני לא יודע בדיוק מה הבעיה ואין לי כח לבדוק שורה אחרי שורה,אבל גם אני אתמול ניסיתי להעלות קובץ עם המחלקה וזה החזיר שגיאות כל הזמן.

                    אז העתקתי את המחלקה המקורית [מהפורום הישן] וזה עבד מצויין.

                    הנה המחלקה

                    class BodyPost
                    {
                    // part "multipart/form-data"
                    public static function PartPost($name, $val)
                    {
                    $body = 'Content-Disposition: form-data; name="' . $name . '"';
                    // check instance of oFile
                    if($val instanceof oFile)
                    {
                    $file = $val->Name();
                    $mime = $val->Mime();
                    $cont = $val->Content();
                    
                    $body .= '; filename="' . $file . '"' . "\r\n";
                    $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                    $body .= $cont."\r\n";
                    } else $body .= "\r\n\r\n".$val."\r\n";
                    return $body;
                    }
                    
                    public static function Get(array $post, $delimiter = '-------------0123456789')
                    {
                    if(is_array($post) && !empty($post))
                    {
                    $bool = true;
                    //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                    if($bool)
                    {
                    $ret = '';
                    foreach($post as $name=>$val)
                    $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                    $ret .= "--" . $delimiter . "--\r\n";
                    } else $ret = http_build_query($post);
                    } else throw new \Exception('Error input param!');
                    return $ret;
                    }
                    }
                    
                    class oFile
                    {
                    private $name;
                    private $mime;
                    private $content;
                    
                    public function __construct($name, $mime=null, $content=null)
                    {
                    if(is_null($content))
                    {
                    $info = pathinfo($name);
                    // check is exist and readable file
                    if(!empty($info['basename']) && is_readable($name))
                    {
                    $this->name = $info['basename'];
                    // get MIME
                    $this->mime = mime_content_type($name);
                    // load file
                    $content = file_get_contents($name);
                    if($content!==false)
                    {
                    $this->content = $content;
                    }
                    else
                    {
                    throw new Exception('Don`t get content - "'.$name.'"');
                    }
                    }
                    else
                    {
                    throw new Exception('Error param');
                    }
                    }
                    else
                    {
                    $this->name = $name;
                    if(is_null($mime)) $mime = mime_content_type($name);
                    $this->mime = $mime;
                    $this->content = $content;
                    };
                    }
                    
                    public function Name() { return $this->name; }
                    
                    public function Mime() { return $this->mime; }
                    
                    public function Content() { return $this->content; }
                    
                    }
                    
                    class connecting_to_yemot_api
                    {
                    public $token;
                    
                    const URL = 'https://www.call2all.co.il/ym/api/';
                    
                    public function __construct($user_name, $password)
                    {
                    $body = array('username' => $user_name, 'password' => $password);
                    
                    $body = http_build_query($body);
                    
                    $opts = array('http' => array(
                    
                    'method' => 'POST',
                    
                    'header' => "Content-Type: application/x-www-form-urlencoded",
                    
                    'content' => $body,
                    
                    'follow_location' => false) );
                    
                    $context = stream_context_create($opts);
                    
                    $url = self::URL.'Login';
                    
                    $result = file_get_contents($url, FALSE, $context);
                    
                    $result = json_decode($result);
                    
                    if($result -> responseStatus == 'OK')
                    {
                    $this -> token = $result -> token;
                    
                    return TRUE;
                    }
                    else
                    {
                    throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                    }
                    }
                    
                    public function __destruct()
                    {
                    $this -> connecting('Logout');
                    }
                    
                    public function connecting($action, $body = array())
                    {
                    $delimiter = '----'.uniqid();
                    
                    $body['token'] = $this -> token;
                    
                    $body = BodyPost::Get($body, $delimiter);
                    
                    $opts = array('http' =>
                    array(
                    'method' => 'POST',
                    'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                    'content' => $body,
                    'follow_location' => false
                    )
                    );
                    $context = stream_context_create($opts);
                    
                    $url = self::URL.$action;
                    
                    $result = file_get_contents($url, FALSE, $context);
                    
                    $headers = $this -> parseHeaders($http_response_header);
                    
                    if($headers['Content-Type'][0] == 'application/json')
                    {
                    return json_decode($result);
                    }
                    else
                    {
                    return $result;
                    }
                    }
                    
                    private function parseHeaders($headers)
                    {
                    // פונקציה שמקבלת מערך של שורות הכותרות
                    // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
                    
                    
                    // מערך הכותרות
                    $head = array();
                    
                    foreach( $headers as $k=>$v )
                    {
                    $t = explode( ':', $v, 2 );
                    
                    if( isset( $t[1] ) )
                    {
                    if($t[0] == 'Set-Cookie')
                    {
                    $CookiesArr = array();
                    
                    $cookies = explode( ';', $t[1]);
                    
                    foreach($cookies as $cookie)
                    {
                    $c = explode( '=', $cookie);
                    
                    if( isset( $c[1] ) )
                    {
                    $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                    }
                    else
                    {
                    $CookiesArr[] = trim( $c[0] );
                    }
                    }
                    
                    $head[ trim($t[0]) ] = $CookiesArr;
                    }
                    elseif($t[0] == 'Content-Type')
                    {
                    $arr = array();
                    
                    $children = explode( ';', $t[1]);
                    
                    foreach($children as $child)
                    {
                    $c = explode( '=', $child);
                    
                    if( isset( $c[1] ) )
                    {
                    $arr[ trim($c[0]) ] = trim( $c[1] );
                    }
                    else
                    {
                    $arr[] = trim( $c[0] );
                    }
                    }
                    
                    $head[ trim($t[0]) ] = $arr;
                    }
                    else
                    {
                    $head[ trim($t[0]) ] = trim( $t[1] );
                    }
                    }
                    else
                    {
                    $head[] = $v;
                    if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                    {
                    $head['reponse_code'] = intval($out[1]);
                    }
                    }
                    }
                    return $head;
                    }
                    }
                    

                    והנה החלקים שמצרפים המקוריים

                    הזדהות [חובה]

                    /*================יצירת אובייקט(מופע) חדש====================*/
                    
                    $con = new connecting_to_yemot_api('0773137770', '0000');
                    
                    

                    שאר סוגי הפעולות לצירוף

                    /*================קבלת מספר היחידות====================*/
                    
                    $a = $con -> connecting('GetSession');
                    
                    print_r($a);
                    
                    /*===============================================================*/
                    
                    
                    
                    /*================הפעלת קמפיין====================*/
                    
                    $body = array
                    (
                    // מספר הקמפיין
                    'templateId' => '203584',
                    );
                    
                    $a = $con -> connecting('RunCampaign', $body);
                    
                    print_r($a);
                    
                    /*===============================================================*/
                    
                    
                    /*================הורדת קובץ====================*/
                    
                    $body = array
                    (
                    // נתיב הקובץ
                    'path' => 'ivr/ext.ini',
                    );
                    
                    $a = $con -> connecting('DownloadFile', $body);
                    
                    print_r($a);
                    
                    /*===============================================================*/
                    
                    
                    
                    /*================העלאת קובץ====================*/
                    
                    // יצירת הקובץ
                    $File = new oFile('ext.ini', 'text/plain', 'type=menu');
                    
                    $body = array
                    (
                    'path' => 'ivr/ext.ini',
                    'convertAudio' => 0,
                    'fileUpload' => $File
                    );
                    
                    $a = $con -> connecting('UploadFile', $body);
                    
                    print_r($a);
                    
                    /*===============================================================*/
                    להלן המחלקה:
                    קוד: בחירת הכל
                    

                    מקור

                    וקרדיט ענק ל @מאזין-נלהב

                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • Y
                      yonatan @ASS נערך לאחרונה על ידי

                      @ass עכשיו אין שגיאה אבל לא מחזיר נתונים

                      מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • מ
                        מנסה מומחה @yonatan נערך לאחרונה על ידי מנסה

                        @yonatan

                        כי לא כתבת לו להחזיר נתונים

                        תוסיף את זה

                        print_r $File_list;
                        
                        Y תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • Y
                          yonatan @מנסה נערך לאחרונה על ידי

                          @מנסה הוא מחזיר שיש לו בעיה עם השורה הזאת

                          מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • מ
                            מנסה מומחה @yonatan נערך לאחרונה על ידי

                            @yonatan

                            ערכתי אותה מקודם

                            תנסה

                            print_r ($File_list);
                            

                            אם לא אז תנסה

                            print $File_list;
                            
                            
                            Y תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • Y
                              yonatan @מנסה נערך לאחרונה על ידי

                              @מנסה לא עובד

                              A תגובה 1 תגובה אחרונה תגובה ציטוט 0
                              • A
                                ASS @yonatan נערך לאחרונה על ידי

                                @yonatan
                                אולי תעלה פה את הקוד המלא (אני מניח שעדכנת אותו מאז הפוסט הקודם ) ואני יבדוק אצלי.

                                תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                • מ
                                  מנחם עזריה נערך לאחרונה על ידי

                                  כתבתי ככה ועושה לי שגיאה מה הבעיה?

                                  <?php

                                  echo "זה קוד PHP";
                                  //בשרת רגיל
                                  define("URL", "https://www.call2all.co.il/ym/api/");
                                  //בשרת פרייבט
                                  //define("URL", "https://private.call2all.co.il/ym/api/");
                                  //בשרת רגיל
                                  //משתנה כדי למנוע בעיות בהעלאת קבצים בהמשך
                                  $server = "www";
                                  //בשרת פרייבט
                                  //$server = "private";
                                  class BodyPost
                                  {
                                  // part "multipart/form-data"
                                  public static function PartPost($name, $val)
                                  {
                                  $body = 'Content-Disposition: form-data; name="' . $name . '"';
                                  // check instance of oFile
                                  if($val instanceof oFile)
                                  {
                                  $file = $val->Name();
                                  $mime = $val->Mime();
                                  $cont = $val->Content();

                                            $body .= '; filename="' . $file . '"' . "\r\n";
                                            $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                                            $body .= $cont."\r\n";
                                        } else $body .= "\r\n\r\n".$val."\r\n";
                                       return $body;
                                   }
                                  
                                  public static function Get(array $post, $delimiter = '-------------0123456789')
                                   {
                                       if(is_array($post) && !empty($post))
                                        {
                                            $bool = true;
                                            //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                                            if($bool)
                                             {
                                                 $ret = '';
                                                 foreach($post as $name=>$val)
                                                     $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                                                 $ret .= "--" . $delimiter . "--\r\n";
                                             } else $ret = http_build_query($post);
                                        } else throw new \Exception('Error input param!');
                                       return $ret;
                                   }
                                  

                                  }

                                  class oFile
                                  {
                                  private $name;
                                  private $mime;
                                  private $content;

                                   public function __construct($name, $mime=null, $content=null)
                                    {
                                        if(is_null($content))
                                         {
                                             $info = pathinfo($name);
                                  

                                  // check is exist and readable file
                                  if(!empty($info['basename']) && is_readable($name))
                                  {
                                  $this->name = $info['basename'];
                                  // get MIME
                                  $this->mime = mime_content_type($name);
                                  // load file
                                  $content = file_get_contents($name);
                                  if($content!==false)
                                  {
                                  $this->content = $content;
                                  }
                                  else
                                  {
                                  throw new Exception('Don`t get content - "'.$name.'"');
                                  }
                                  }
                                  else
                                  {
                                  throw new Exception('Error param');
                                  }
                                  }
                                  else
                                  {
                                  $this->name = $name;
                                  if(is_null($mime)) $mime = mime_content_type($name);
                                  $this->mime = $mime;
                                  $this->content = $content;
                                  };
                                  }

                                  public function Name() { return $this->name; }
                                  
                                  public function Mime() { return $this->mime; }
                                  
                                  public function Content() { return $this->content; }
                                  

                                  }

                                  class connecting_to_yemot_api
                                  {
                                  public $token;

                                  const URL = URL;
                                  
                                  public function __construct($user_name, $password)
                                  {
                                      $body = array('username' => $user_name, 'password' => $password);
                                  
                                      $body = http_build_query($body);
                                  
                                      $opts = array('http' => array(
                                  
                                          'method'  => 'POST',
                                  
                                          'header'  => "Content-Type: application/x-www-form-urlencoded",
                                  
                                          'content' => $body,
                                  
                                          'follow_location' => false) );
                                  
                                       $context  = stream_context_create($opts);
                                  
                                       $url = self::URL.'Login';
                                  
                                          $result = file_get_contents($url, FALSE, $context);
                                  
                                          $result = json_decode($result);
                                  
                                          if($result -> responseStatus == 'OK')
                                          {
                                              $this -> token = $result -> token;
                                  
                                              return TRUE;
                                          }
                                          else
                                          {
                                              throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                                          }
                                  }
                                  
                                  public function __destruct()
                                  {
                                      $this -> connecting('Logout');
                                  }
                                  
                                  public function connecting($action, $body = array())
                                  {
                                      $delimiter = '----'.uniqid();
                                  
                                      $body['token'] = $this -> token;
                                  
                                      $body = BodyPost::Get($body, $delimiter);
                                  
                                      $opts = array('http' =>
                                              array(
                                                  'method'  => 'POST',
                                                  'header'  => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                                                  'content' => $body,
                                                  'follow_location' => false
                                                  )
                                                );
                                      $context  = stream_context_create($opts);
                                  
                                      $url = self::URL.$action;
                                  
                                      $result = file_get_contents($url, FALSE, $context);
                                  
                                      $headers = $this -> parseHeaders($http_response_header);
                                  
                                      if($headers['Content-Type'][0] == 'application/json')
                                      {
                                          return json_decode($result);
                                      }
                                      else
                                      {
                                          return $result;
                                      }
                                  }
                                  
                                  private function parseHeaders($headers)
                                  {
                                      // פונקציה שמקבלת מערך של שורות הכותרות
                                      // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
                                  
                                  
                                      // מערך הכותרות
                                      $head = array();
                                  
                                      foreach( $headers as $k=>$v )
                                      {
                                          $t = explode( ':', $v, 2 );
                                  
                                          if( isset( $t[1] ) )
                                          {
                                              if($t[0] == 'Set-Cookie')
                                              {
                                                  $CookiesArr = array();
                                  
                                                  $cookies = explode( ';', $t[1]);
                                  
                                                  foreach($cookies as $cookie)
                                                  {
                                                      $c = explode( '=', $cookie);
                                  
                                                      if( isset( $c[1] ) )
                                                      {
                                                          $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                                                      }
                                                      else
                                                      {
                                                          $CookiesArr[] = trim( $c[0] );
                                                      }
                                                  }
                                  
                                                  $head[ trim($t[0]) ] = $CookiesArr;
                                              }
                                              elseif($t[0] == 'Content-Type')
                                              {
                                                  $arr = array();
                                  
                                                  $children = explode( ';', $t[1]);
                                  
                                                  foreach($children as $child)
                                                  {
                                                      $c = explode( '=', $child);
                                  
                                                      if( isset( $c[1] ) )
                                                      {
                                                          $arr[ trim($c[0]) ] = trim( $c[1] );
                                                      }
                                                      else
                                                      {
                                                          $arr[] = trim( $c[0] );
                                                      }
                                                  }
                                  
                                                  $head[ trim($t[0]) ] = $arr;
                                              }
                                              else
                                              {
                                                  $head[ trim($t[0]) ] = trim( $t[1] );
                                              }
                                          }
                                          else
                                          {
                                              $head[] = $v;
                                              if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                                              {
                                                  $head['reponse_code'] = intval($out[1]);
                                              }
                                          }
                                      }
                                      return $head;
                                  }
                                  

                                  }
                                  //שם משתמש וסיסמא של המערכת
                                  $con = new connecting_to_yemot_api('077*****','');
                                  $token = "077
                                  :****";

                                  //נתיב
                                  $path = "ivr2:/2";

                                  // פונקציה למספרי קבצים עוקבים
                                  function FileNameToUpload($server, $token, $path){
                                  $array = json_decode(file_get_contents("https://$server.call2all.co.il/ym/api//GetIVR2Dir?token=$token&path=$path"),true);
                                  if($array["responseStatus"] == "OK"){
                                  foreach($array["files"] as $key => $value){
                                  if($value["fileType"] == "AUDIO" || $value["fileType"] == "TTS"){
                                  $split = explode(".",$value["name"]);
                                  if (is_numeric($split[0])){
                                  break;
                                  }
                                  }
                                  }
                                  if($split[0] == null){
                                  $NewFileName = 0;
                                  }else{
                                  $NewFileName = $split[0]+1;
                                  }
                                  //הפוך למינימום 3 ספרות/
                                  return str_pad($NewFileName,3,"0",STR_PAD_LEFT);
                                  }else{
                                  //במקרה של שגיאה
                                  echo "שגיאה";

                                  }
                                  

                                  }
                                  // קריאה לפונקציה.
                                  $NewFileName = FileNameToUpload($server,$token,$path);
                                  if($NewFileName != null){
                                  //מכריז על שם של נתיב הקובץ להעלאה
                                  $path_name = "$path/$NewFileName.wav";
                                  }

                                  //מאיפה לקחת את הקובץ
                                  $File = new oFile('ext.ini', 'text/plain', file_get_contents("...."));

                                  //להעלאת קבצים פקודה
                                  $Upload_order = $con -> connecting('UploadFile',
                                  [
                                  //טוקן
                                  'path' =>$path_name,
                                  //המרה ל-wav אם מוגדר על 1 הקובץ יומר אם מוגדר על 0 לא
                                  'convertAudio' => 1,
                                  //קובץ להעלאה
                                  'fileUpload' => $File
                                  ]
                                  );

                                  ?>

                                  ל תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                  • ל
                                    לעזור לכולם מומחה @מנחם עזריה נערך לאחרונה על ידי

                                    @מנחם-עזריה
                                    איפה הוא נותן לך שגיאה בטלפון או בדפדפן?

                                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                    • ש
                                      שמואל מאיר @ASS נערך לאחרונה על ידי

                                      @ASS את כל מה שאתה אומר להעתיק זה לאותו קובץ ראשון שפתחתי?

                                      A תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                      • A
                                        ASS @שמואל מאיר נערך לאחרונה על ידי

                                        @שמואל-מאיר כתב במדריך התחלת עבודה עם API של ימות משיח (חלק ב').:

                                        אותו קובץ ראשון שפתחתי?

                                        בדיוק

                                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • ש
                                          שמואל מאיר @ASS נערך לאחרונה על ידי

                                          @ASS עשיתי את כל מה שרשום וזה לא אומר שגיאה וגם לא מעלה את הקובץ לשלוחה.

                                          ש תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                          • ש
                                            שמואל מאיר @שמואל מאיר נערך לאחרונה על ידי

                                            פוסט זה נמחק!
                                            ל תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                            • פוסט ראשון
                                              פוסט אחרון