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

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

    מתוזמן נעוץ נעול הועבר לא נפתר פורום PHP
    14 פוסטים 3 כותבים 731 צפיות 1 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • 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

                          שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                          בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                          הרשמה התחברות
                          • פוסט ראשון
                            פוסט אחרון