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

    לא נפתר עזרה בהעתקת קובץ למערכת אחרת

    פורום PHP
    3
    14
    455
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • י
      ירחמיאל נערך לאחרונה על ידי ירחמיאל

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


      $url = 'https://www.call2all.co.il/ym/api/DownloadFile?&token=048******:****&path=ivr/1/1/951.wav';
      
      $con = new connecting_to_yemot_api('025*****', '****');
      
      $body = array
      (
      'path' => 'ivr/3/951.wav',
      'convertAudio' => 0,
      'fileUpload' => $url
      );
       
      $a = $con -> connecting('UploadFile', $body);
       
      print_r($a);
      

      וזה השגיאה:

      stdClass Object ( [responseStatus] => ERROR [message] => System error [messageCode] => 105 [yemotAPIVersion] => 6 )
      

      ניסיתי גם לשלוח המרה convertAudio' => 1' ועדיין מחזיר אותו שגיאה.

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

        @ירחמיאל השורה שבה אתה מוריד את הקובץ לא כתובה טוב, לכאורה צריך להיות כתוב:

        https://www.call2all.co.il/ym/api/DownloadFile?token=0777777777:******&path=ivr2:/1/1/951.wav
        

        תנסה לראות אם זה עובד כך...
        (אף פעם לא ניסיתי להוריד ולהעלות קובץ באותו קוד)

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

          @dudu
          זה היה טעות בהעתקה.
          (זה נשמט בעת מחיקת הסיסמה).
          בקובץ זה כתוב נכון.
          וזה השגיאות.
          תיקנתי את הפוסט.

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

            @ירחמיאל כולל הivr2?
            בשתי המקומות כתוב לך ivr ולא ivr2 גם בהורדה וגם בהעלאה...

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

              @dudu
              לפי הידוע לי זה משנה רק ב-API החדשים כגון העתקת/העברת/מחיקת קבצים.
              בכל אופן ניסיתי עכשיו עם ivr2 ועדיין אותו דבר.

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

                @ירחמיאל הבעיה היא שהקובץ בכלל לא יורד...
                זו לא הצורה הנכונה לעשות את זה...

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

                  @dudu
                  צודק.
                  היה חסר ()file_get_contents
                  הוספתי, ועכשיו יש שגיאה אחרת.
                  הנה הקוד המעודכן:

                  $url = file_get_contents('https://www.call2all.co.il/ym/api/DownloadFile?token=048******:****&path=ivr2:1/1/951.wav');
                   
                  $con = new connecting_to_yemot_api('025*****', '****');
                   
                  $body = array
                  (
                  'path' => 'ivr/3/951.wav',
                  'convertAudio' => 0,
                  'fileUpload' => $url
                  );
                   
                  $a = $con -> connecting('UploadFile', $body);
                   
                  print_r($a);
                  
                  

                  ועכשיו השגיאה היא:

                  stdClass Object ( [yemotAPIVersion] => 6 [responseStatus] => EXCEPTION [message] => Invalid WS request )
                  

                  עריכה: עכשיו כבר נשלח למייל דרך PHPMailer , רק העלאה לקו אחר לא עובד.

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

                    אין אף אחד שיכול לעזור בזה?
                    @sbb0799 @bc98400 @baror230

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

                      @ירחמיאל
                      אולי תעלה לפה את כל הקוד ונוכל לראות?

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

                        @אהרן-שובקס
                        זה כל הקוד, עם המחלקה:

                        $url = file_get_contents('https://www.call2all.co.il/ym/api/DownloadFile?token=048******:****&path=ivr2:1/1/3186.wav');
                        
                         
                         
                        $con = new connecting_to_yemot_api('025******', '****');
                        
                        $body = array
                        (
                        'path' => 'ivr2:3/951.wav',
                        'convertAudio' => 1,
                        'fileUpload' => $url
                        );
                         
                        $a = $con -> connecting('UploadFile', $body);
                         
                        print_r($a);
                        
                         /*===============================================================*/
                        
                        
                        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;
                            }
                        }
                        

                        וזה התגובה:

                        stdClass Object ( [yemotAPIVersion] => 6 [responseStatus] => EXCEPTION [message] => Invalid WS request )
                        
                        אהרן שובקס תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • אהרן שובקס
                          אהרן שובקס ניהול @ירחמיאל נערך לאחרונה על ידי

                          @ירחמיאל
                          המערכת נמצאת בפריווט?

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

                            @אהרן-שובקס
                            לא

                            תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • פוסט ראשון
                              פוסט אחרון