אתה יודע איך?למיטב ידיעתי אפשרי, פירוט שיחות כללי (חודשי) לא.דרך ה yemot api זה לא קייםיפה מאד!
יש אפשרות לקבל את:
מספר המאזינים כעת
פירוט שיחות פעילות
פירוט שיחות
?
מחכים שיפתחו
או שמישהו ידריך איך אפשר להתחבר לאתר אם אופציה של curl
(אולי אני לא יודע אבל יש דרך להשתמש ב file_get_contents כאשר צריך לשלוח חלק מהנתונים בPOST ?)
שיחות פעילות ומספר המאזינים כן.
מחלקה של תקשורת עם ימות API
Re: מחלקה של תקשורת עם ימות API
Re: מחלקה של תקשורת עם ימות API
תשאל את אחד המשתמשים הבאיםאתה יודע איך?למיטב ידיעתי אפשרי, פירוט שיחות כללי (חודשי) לא.דרך ה yemot api זה לא קיים
מחכים שיפתחו
או שמישהו ידריך איך אפשר להתחבר לאתר אם אופציה של curl
(אולי אני לא יודע אבל יש דרך להשתמש ב file_get_contents כאשר צריך לשלוח חלק מהנתונים בPOST ?)
שיחות פעילות ומספר המאזינים כן.
חוקר מאזין נלהב boyoss
Re: מחלקה של תקשורת עם ימות API
@957 אפשר בלי שום בעייה, אשל לך במייל בל"נ
Re: מחלקה של תקשורת עם ימות API
תודה רבה@957 אפשר בלי שום בעייה, אשל לך במייל בל"נ
יש מקום מסודר עם תיעוד לכל הפונקציות או שצריך לקושש פה?
-
- הודעות: 980
- הצטרף: 16:42 28/04/2016
Re: מחלקה של תקשורת עם ימות API
במחלקה הנ"ל, איך אני יכול להדפיס "סיסמא שגוייה" במקרה שהסיסמא או אחד מהנתונים שגוי.
תודה
תודה
Re: מחלקה של תקשורת עם ימות 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 = '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
{
// להדפיס כאן באם אחד מהנתונים שגוי
print "id_list_message=t-";
echo 'שם המשתמש או הסיסמא של המערכת שגויים';
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;
}
}
-
- הודעות: 980
- הצטרף: 16:42 28/04/2016
Re: מחלקה של תקשורת עם ימות API
ממש תודה אבל עוד שאלה.
איך אני יכול להעלות באמצעות המחלקה הנ"ל קובץ שמע בhtml באפשרות "בחר קובץ"?
תודה
איך אני יכול להעלות באמצעות המחלקה הנ"ל קובץ שמע בhtml באפשרות "בחר קובץ"?
תודה
Re: מחלקה של תקשורת עם ימות API
ממש תודה אבל עוד שאלה.
איך אני יכול להעלות באמצעות המחלקה הנ"ל קובץ שמע בhtml באפשרות "בחר קובץ"?
תודה
קוד: בחירת הכל
<?php
$DID = '0773137770' ;
$PASS = '1234' ;
$path = 'ivr/M1000.wav' ;
$con = new connecting_to_yemot_api( $DID , $PASS );
//העלאת הקובץ לשידור
$feMessage='';
if($_POST['submit']=='העלה'){
//בדיקה האם הקובץ קיים
if($_FILES['uploadedfile']['size']==0)
{$feMessage="<FONT color='red'>לא נבחר קובץ!, אנא בחר קובץ ונסה שנית</FONT><br />";}
//בדיקה האם אירעה שגיאה בהעלאה
else{if($_FILES[uploadedfile][error] !=0)
{$feMessage="<FONT color='red'>אירעה שגיאה במהלך העלאת הקובץ!, אנא בחר קובץ ונסה שנית</FONT><br />";}
else{
// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain',
file_get_contents($_FILES[uploadedfile][tmp_name]));
$body = array
(
'path' => $path ,
'convertAudio' => 1,
'fileUpload' => $File
);
$a = $con -> connecting('UploadFile', $body);
//אם הצליח
if($a -> responseStatus == OK)
{
$feMessage="<FONT color='green'>הקובץ: <b><u>".$_FILES['uploadedfile']['name']."</u></b>, הועלה בהצלחה! </FONT><br />";
}
else
{
$feMessage="<FONT color='red'>אירעה שגיאה במהלך העלאת הקובץ: <b><u>".$_FILES['uploadedfile']['name']."</u></b>, נסה שוב! </FONT><br />";
}
}}
}
//טופס העלאת הודעה לשידור
$uploab_form=
'<FORM method="post" enctype="multipart/form-data" >'
. $feMessage .
'<p>
<aside>העלאת הודעה חדשה : </aside>
<input name="uploadedfile" type="file" />
</p>
<p>
<INPUT TYPE="SUBMIT"
NAME="submit" VALUE="העלה" />
</p>
</FORM>';
print $uploab_form;
//===============המחלקה=============//
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;
}
}
?>
-
- הודעות: 980
- הצטרף: 16:42 28/04/2016
Re: מחלקה של תקשורת עם ימות API
ממש תודה על כל העזרה, אבל עוד שאלה קטנה.ממש תודה אבל עוד שאלה.
איך אני יכול להעלות באמצעות המחלקה הנ"ל קובץ שמע בhtml באפשרות "בחר קובץ"?
תודהקוד: בחירת הכל
<?php
$DID = '0773137770' ;
$PASS = '1234' ;
$path = 'ivr/M1000.wav' ;
$con = new connecting_to_yemot_api( $DID , $PASS );
//העלאת הקובץ לשידור
$feMessage='';
if($_POST['submit']=='העלה'){
//בדיקה האם הקובץ קיים
if($_FILES['uploadedfile']['size']==0)
{$feMessage="<FONT color='red'>לא נבחר קובץ!, אנא בחר קובץ ונסה שנית</FONT><br />";}
//בדיקה האם אירעה שגיאה בהעלאה
else{if($_FILES[uploadedfile][error] !=0)
{$feMessage="<FONT color='red'>אירעה שגיאה במהלך העלאת הקובץ!, אנא בחר קובץ ונסה שנית</FONT><br />";}
else{
// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain',
file_get_contents($_FILES[uploadedfile][tmp_name]));
$body = array
(
'path' => $path ,
'convertAudio' => 1,
'fileUpload' => $File
);
$a = $con -> connecting('UploadFile', $body);
//אם הצליח
if($a -> responseStatus == OK)
{
$feMessage="<FONT color='green'>הקובץ: <b><u>".$_FILES['uploadedfile']['name']."</u></b>, הועלה בהצלחה! </FONT><br />";
}
else
{
$feMessage="<FONT color='red'>אירעה שגיאה במהלך העלאת הקובץ: <b><u>".$_FILES['uploadedfile']['name']."</u></b>, נסה שוב! </FONT><br />";
}
}}
}
//טופס העלאת הודעה לשידור
$uploab_form=
'<FORM method="post" enctype="multipart/form-data" >'
. $feMessage .
'<p>
<aside>העלאת הודעה חדשה : </aside>
<input name="uploadedfile" type="file" />
</p>
<p>
<INPUT TYPE="SUBMIT"
NAME="submit" VALUE="העלה" />
</p>
</FORM>';
print $uploab_form;
//===============המחלקה=============//
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;
}
}
?>
איך בהעלאת קבצי שמע למערכת לשלוחות השמעות קבצים שיעלה את הקובץ לפי המספר הסידורי במדרג עולה כמו בהעלאה רגילה דרך האתר הניהול הרגיל.
תודה
Re: מחלקה של תקשורת עם ימות API
דרך הapi זה עדיין לא קיים
איך בהעלאת קבצי שמע למערכת לשלוחות השמעות קבצים שיעלה את הקובץ לפי המספר הסידורי במדרג עולה כמו בהעלאה רגילה דרך האתר הניהול הרגיל.
תודה
אולי ל"אהבת ישראל" יש קשרים עם ימות המשיח ויצליחו לשכנע אותם להוסיף אפשרות בAPI שכאשר הנתיב המשודר מסתיים ב "/" (סלש) ולא בשם קובץ יקבל הקובץ שם אוטומטי לפי המקובל באתר בתוך התיקייה הנ"ל
בינתיים צריך לחפש פתרון אחר
תוכל למשל לרשום בDB את מספר הקובץ האחרון שהעלית ולהוסיף 1 כל פעם.
מי מחובר
משתמשים הגולשים בפורום זה: אין משתמשים רשומים | 4 אורחים