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

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

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

      אין כאן משהו שמבין בזה?

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

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


        $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
                              • פוסט ראשון
                                פוסט אחרון