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

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

    פורום מפתחים API
    8
    24
    2552
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • 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
                  • ל
                    לעזור לכולם מומחה @שמואל מאיר נערך לאחרונה על ידי

                    @שמואל-מאיר
                    זה אומר שאין לך מספיק מקום בשרת ואתה צריך להגדיל את הנפח שלו

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

                      @לעזור-לכולם מה זאת אומרת יש לי במחשב המון מקום, ועשיתי שהמחשב יהיה שרת כמו שכתב שם בהדרכה.

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

                        @ASS @לעזור-לכולם מה קורה אף אחד לא יכול לעזור לי קצת?

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

                          זה עכשיו כותב לי כך:
                          Screenshot_3.png

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