דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. סלולרי
  3. מערכות IVR - ימות המשיח
  4. ימות המשיח API
  5. בקשת מידע | כיצד להתחיל להתחבר ל API של ימות

בקשת מידע | כיצד להתחיל להתחבר ל API של ימות

מתוזמן נעוץ נעול הועבר ימות המשיח API
19 פוסטים 5 כותבים 1.3k צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A ASS

    @יוסף-ח
    אתה בטוח???
    זה מודול API זה לא גישת מפתחים למערכת...
    ימות הסבירו את ההבדל כאן: https://f2.freeivr.co.il/post/24190

    י מנותק
    י מנותק
    יוסף ח
    כתב ב נערך לאחרונה על ידי
    #10

    @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

    זה מודול API

    זה ההתחברות לשרת שלהם !

    תגובה 1 תגובה אחרונה
    0
    • A ASS

      @צדיק-תמים
      נכון, ימות עובד על PHP מה שאומר ש NODE.JS וגם ג'אווה סקריפט לא טוב....
      יש למשהו מושג כיצד נראה קוד ה PHP ההתחלתי? (התחברות לשרת שלהם, וכניסה עם שם משתמש וסיסמא).

      yzahnY מנותק
      yzahnY מנותק
      yzahn
      עימוד
      כתב ב נערך לאחרונה על ידי
      #11

      @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

      נכון, ימות עובד על PHP מה שאומר ש NODE.JS וגם ג'אווה סקריפט לא טוב....

      זה לא נכון. אפשר להשתמש ב-API הזה מכל שפה בעולם שתומכת בשליחת בקשות HTTP.
      API הוא סה"כ תוכנה שמאזינה לפקודות שנשלחות על ידי בקשות HTTP. לא משנה אם צד השרת מומש ב-PHP או בכל שפה אחרת תמיד תוכל לשלוח פקודות מכל שפה שהיא.

      📧 | יוסי@יצ.קום

      A תגובה 1 תגובה אחרונה
      3
      • yzahnY yzahn

        @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

        נכון, ימות עובד על PHP מה שאומר ש NODE.JS וגם ג'אווה סקריפט לא טוב....

        זה לא נכון. אפשר להשתמש ב-API הזה מכל שפה בעולם שתומכת בשליחת בקשות HTTP.
        API הוא סה"כ תוכנה שמאזינה לפקודות שנשלחות על ידי בקשות HTTP. לא משנה אם צד השרת מומש ב-PHP או בכל שפה אחרת תמיד תוכל לשלוח פקודות מכל שפה שהיא.

        A מנותק
        A מנותק
        ASS
        כתב ב נערך לאחרונה על ידי
        #12

        @yzahn
        נכון, אבל כל התיעוד של ימות זה ב PHP לכן יותר סביר לעבוד עם PHP...
        בכל מקרה מישהו יכול לעזור לי בעזרת קוד לדוגמא להתחיל לשלוח בקשות לשרת , איפה שמים את ה URL , היכן את הפקודות וכו' התיעוד של ימות מאוד מינמאלי, כבר שבוע מנסה להבין איך מתחילים...
        הנה קוד לדוגמא שעשיתי אבל לא מחזיר כלום.

        <?php
        //Initialize cURL.
        $ch = curl_init();
        
        //Set the URL that you want to GET by using the CURLOPT_URL option.
        curl_setopt($ch, CURLOPT_URL, "https://www.call2all.co.il/ym/api/<WebServiceName>[?p1=v1[&p2=v2...]]");
        
        //Set CURLOPT_RETURNTRANSFER so that the content is returned as a variable.
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        //Set CURLOPT_FOLLOWLOCATION to true to follow redirects.
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        
        //Execute the request.
        $data = curl_exec($ch);
        
        //Close the cURL handle.
        curl_close($ch);
        
        //Print the data out onto the page.
        echo $data;
        ?>
        
        yzahnY תגובה 1 תגובה אחרונה
        0
        • A ASS

          @yzahn
          נכון, אבל כל התיעוד של ימות זה ב PHP לכן יותר סביר לעבוד עם PHP...
          בכל מקרה מישהו יכול לעזור לי בעזרת קוד לדוגמא להתחיל לשלוח בקשות לשרת , איפה שמים את ה URL , היכן את הפקודות וכו' התיעוד של ימות מאוד מינמאלי, כבר שבוע מנסה להבין איך מתחילים...
          הנה קוד לדוגמא שעשיתי אבל לא מחזיר כלום.

          <?php
          //Initialize cURL.
          $ch = curl_init();
          
          //Set the URL that you want to GET by using the CURLOPT_URL option.
          curl_setopt($ch, CURLOPT_URL, "https://www.call2all.co.il/ym/api/<WebServiceName>[?p1=v1[&p2=v2...]]");
          
          //Set CURLOPT_RETURNTRANSFER so that the content is returned as a variable.
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          
          //Set CURLOPT_FOLLOWLOCATION to true to follow redirects.
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
          
          //Execute the request.
          $data = curl_exec($ch);
          
          //Close the cURL handle.
          curl_close($ch);
          
          //Print the data out onto the page.
          echo $data;
          ?>
          
          yzahnY מנותק
          yzahnY מנותק
          yzahn
          עימוד
          כתב ב נערך לאחרונה על ידי
          #13

          @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

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

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

          📧 | יוסי@יצ.קום

          A 2 תגובות תגובה אחרונה
          1
          • yzahnY yzahn

            @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

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

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

            A מנותק
            A מנותק
            ASS
            כתב ב נערך לאחרונה על ידי
            #14

            @yzahn
            נכון, אני בצד של אלא שמעתיקים קוד 🙂
            בכל מקרה יש לך אולי קוד לדוגמא להראות לי בבקשה?

            תגובה 1 תגובה אחרונה
            0
            • yzahnY yzahn

              @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

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

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

              A מנותק
              A מנותק
              ASS
              כתב ב נערך לאחרונה על ידי
              #15

              @yzahn
              לדוגמא יש את המחלקה שמישהו בנה בימות:
              לא כל כך יודע איך להמשיך מכאן, איפה אני מכניס את הפקודות וכו'.

              <?php
              $SetSite = ["SetSite"];
              	if ($SetSite == NULL) {
              	define("URL", "https://www.call2all.co.il/ym/api/");
              }
              	if ($SetSite == "private") {
              	define("URL", "https://www.private.call2all.co.il/ym/api/");
              }
              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;
                  }
              }
              ?> 
              
              
              yzahnY תגובה 1 תגובה אחרונה
              0
              • A ASS

                @yzahn
                לדוגמא יש את המחלקה שמישהו בנה בימות:
                לא כל כך יודע איך להמשיך מכאן, איפה אני מכניס את הפקודות וכו'.

                <?php
                $SetSite = ["SetSite"];
                	if ($SetSite == NULL) {
                	define("URL", "https://www.call2all.co.il/ym/api/");
                }
                	if ($SetSite == "private") {
                	define("URL", "https://www.private.call2all.co.il/ym/api/");
                }
                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;
                    }
                }
                ?> 
                
                
                yzahnY מנותק
                yzahnY מנותק
                yzahn
                עימוד
                כתב ב נערך לאחרונה על ידי yzahn
                #16

                @ass אני לא מסכים לגישה הזאת. אתה מנסה לרוץ לפני שלמדת ללכת.

                📧 | יוסי@יצ.קום

                A תגובה 1 תגובה אחרונה
                3
                • yzahnY yzahn

                  @ass אני לא מסכים לגישה הזאת. אתה מנסה לרוץ לפני שלמדת ללכת.

                  A מנותק
                  A מנותק
                  ASS
                  כתב ב נערך לאחרונה על ידי
                  #17

                  @yzahn
                  אוקי, בס"ה אני צריך לעשות דבר אחד בלבד, הייתי שמח אם מישהו היה יכול לעזור.

                  yzahnY M 2 תגובות תגובה אחרונה
                  0
                  • A ASS

                    @yzahn
                    אוקי, בס"ה אני צריך לעשות דבר אחד בלבד, הייתי שמח אם מישהו היה יכול לעזור.

                    yzahnY מנותק
                    yzahnY מנותק
                    yzahn
                    עימוד
                    כתב ב נערך לאחרונה על ידי
                    #18

                    @ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:

                    הייתי שמח אם מישהו היה יכול לעזור

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

                    מקווה שתמצא מישהו יותר סבלני ממני...

                    📧 | יוסי@יצ.קום

                    תגובה 1 תגובה אחרונה
                    3
                    • A ASS

                      @yzahn
                      אוקי, בס"ה אני צריך לעשות דבר אחד בלבד, הייתי שמח אם מישהו היה יכול לעזור.

                      M מנותק
                      M מנותק
                      mfmf
                      כתב ב נערך לאחרונה על ידי
                      #19

                      @ass מציע לך לבקש בפורום של ימות, יש שם תיעוד להרבה מאד דברים. בהצלחה.

                      תגובה 1 תגובה אחרונה
                      0

                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • חוקי הפורום
                      • פופולרי
                      • לא נפתר
                      • משתמשים
                      • חיפוש גוגל בפורום
                      • צור קשר