בקשת מידע | כיצד להתחיל להתחבר ל API של ימות
-
וזה קוד להתנתקות:
<?php $ApiDID = $_GET['DID']; $password = $_GET['pass']; $TxtLogoutApidid = "אנא הקישו את מספר המערכת, ולסיום הקישו סולמית!"; $TxtLogoutPasspord = "אנא הקישו את סיסמת הניהול, ולסיום הקישו סולמית!"; $TxtLogoutPasspordWarning = "שימו לב, אם אינכם בטוחים שהנכם יודעים את הסיסמא, אנא נתקו את השיחה ובדקו זאת על ידי חיוג למערכת הטלפונית"; $FolderLogoutOk = $_GET['FolderLogoutOk']; $FolderLogoutError = $_GET['FolderLogoutError']; if ($_GET['DID'] == NULL){ echo "read=t-$TxtLogoutApidid=DID,no,10,9,10,No,yes";exit();} if ($_GET['pass'] == NULL){ echo "read=t-$TxtLogoutPasspord $TxtLogoutPasspordWarning! $TxtLogoutPasspord=pass,no,,,10,No,yes";exit();} $str = file_get_contents("https://www.call2all.co.il/ym/api/https://www.call2all.co.il/ym/api/Logout?token=$ApiDID:$password"); $str = json_decode($str,true); if ($str["responseStatus"] === "OK"){ echo "id_list_message=t-ההתנתקות בוצעה בהצלחה, ממערכת מספר.d-$ApiDID.&go_to_folder=$FolderLogoutOk";} else{ echo "id_list_message=t-שגיאה! אחד או יותר מהנתונים שהוקשו שגויים! שלום ותודה!&go_to_folder=hangup&"; } ?>
-
@ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:
נכון, ימות עובד על PHP מה שאומר ש NODE.JS וגם ג'אווה סקריפט לא טוב....
זה לא נכון. אפשר להשתמש ב-API הזה מכל שפה בעולם שתומכת בשליחת בקשות HTTP.
API הוא סה"כ תוכנה שמאזינה לפקודות שנשלחות על ידי בקשות HTTP. לא משנה אם צד השרת מומש ב-PHP או בכל שפה אחרת תמיד תוכל לשלוח פקודות מכל שפה שהיא. -
@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; ?>
-
@ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:
נכון, אבל כל התיעוד של ימות זה ב PHP לכן יותר סביר לעבוד עם PHP...
אהממ... אני לא מסכים לזה. זה נכון רק במקרה שאתה מעתיק קודים מהתיעוד שלהם. מי שיכול לכתוב קוד בעצמו יכול להסתדר מצויין בכל שפה.
-
@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; } } ?>
-
@ass אמר בבקשת מידע | כיצד להתחיל להתחבר ל API של ימות:
הייתי שמח אם מישהו היה יכול לעזור
בצורה כזאת ה"מישהו" לא יהיה אני.
אני שמח לעזור אנשים שעוזרים לעצמם.
ובמצב הזה אני סבור שלעזור לעצמך זה ככה:
או שתחליט שאתה רוצה ללמוד לתכנת ב-PHP, ואז תתחיל מההתחלה כמו ילד טוב.
או שתחליט שאתה לא רוצה ללמוד לתכנת, ואז תבקש יפה שמתכנת יעשה לך חסד ויכתוב לך סקריפט בחינם. אולי נעשה אזור בפורום של גמחים.
אבל ככה לפסוח על שתי הסעיפים לא מקובל עלי.מקווה שתמצא מישהו יותר סבלני ממני...