דף 1 מתוך 2

העלאת קבצים בapi של ימות בphp

נשלח: 13:39 11/02/2018
על ידי מנחם מענדל מענדי
https://www.call2all.co.il/ym/api/Uploa ... ivr/mm.ini
איך אני יכול להעלות בלינק הזה באמצעות php.

Re: העלאת קבצים בapi של ימות בphp

נשלח: 13:49 25/02/2018
על ידי מנחם מענדל מענדי
לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.

Re: העלאת קבצים בapi של ימות בphp

נשלח: 13:58 25/02/2018
על ידי 011371
לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.
בדיוק בשביל זה "מאזין נלהב" פרסם מחלקה שלמה , עיין שם ותמצא נחת

Re: העלאת קבצים בapi של ימות בphp

נשלח: 14:01 25/02/2018
על ידי מנחם מענדל מענדי
לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.
בדיוק בשביל זה "מאזין נלהב" פרסם מחלקה שלמה , עיין שם ותמצא נחת
לצערי זה לא עובד לי בשרת החינמי של הוסטינגר.
ואולי הסיבה נובעת מעליונות הכתיבה שם כי יש הרבה קודים שהמערכת שלי לא מקבלת.
אם יש לך דרך לעזור לי, או לפחות לתת לי את הקודים המתאימים רק להעלות קובץ, אשמח מאד ואוכל אי"ה לצ'פר אותך.
תודה

Re: העלאת קבצים בapi של ימות בphp

נשלח: 14:52 25/02/2018
על ידי מנחם מענדל מענדי
זה מה שניסיתי לעשות אבל ללא הצלחה. אשמח שתעזור לי בזה

קוד: בחירת הכל

<?php
$File = 'type=meunu';
$url = "https://www.call2all.co.il/ym/api/UploadFile?";

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);


print_r($File);

Re: העלאת קבצים בapi של ימות בphp

נשלח: 14:57 25/02/2018
על ידי 011371
עושה רושם שאתה כבר כמה שבועות עוסק באיזה פיתוח מעניין,
אולי תפרט מה בדיוק אתה רוצה לעשות?
יכול להיות שאתה עמל לשווא לפלס לך דרך בשדה קוצים, במקום לצעוד בדרך הסלולה בשעה שיש קודים מוכנים לפעולה שאחרים כבר כתבו ויתכן שמוכנים לשתף

נ.ב. אם אתה מתכנן להשלים את הפרוייקט על שרת חינמי , קח בחשבון שזה ספק ברכה לבטלה , וכדאי שתשדרג
במחיר של 30 - 50 ₪ לחודש אתה יכול למצוא שרתי אחסון של חברות גדולות ומהימנות המספיקים די והותר לפרוייקטים מסוג זה

Re: העלאת קבצים בapi של ימות בphp

נשלח: 15:00 25/02/2018
על ידי מנחם מענדל מענדי
עושה רושם שאתה כבר כמה שבועות עוסק באיזה פיתוח מעניין,
אולי תפרט מה בדיוק אתה רוצה לעשות?
יכול להיות שאתה עמל לשווא לפלס לך דרך בשדה קוצים, במקום לצעוד בדרך הסלולה בשעה שיש קודים מוכנים לפעולה שאחרים כבר כתבו ויתכן שמוכנים לשתף

נ.ב. אם אתה מתכנן להשלים את הפרוייקט על שרת חינמי , קח בחשבון שזה ספק ברכה לבטלה , וכדאי שתשדרג
במחיר של 30 - 50 ₪ לחודש אתה יכול למצוא שרתי אחסון של חברות גדולות ומהימנות המספיקים די והותר לפרוייקטים מסוג זה
אני עושה הכל בהתנדבות לעילוי נשמת סבי ולכן אין לי מאיפה להשקיע.
אשמח אם תעזור לי במה שיש לי.

Re: העלאת קבצים בapi של ימות בphp

נשלח: 15:02 25/02/2018
על ידי 011371
זה מה שניסיתי לעשות אבל ללא הצלחה. אשמח שתעזור לי בזה

קוד: בחירת הכל

<?php
$File = 'type=meunu';
$url = "https://www.call2all.co.il/ym/api/UploadFile?";

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);


print_r($File);
אני לא רואה את הקובץ שאותו אתה מנסה להעלות
יש מחלקה בפני העצמה האחראית ליצירת הקובץ
השורה:

קוד: בחירת הכל

$File = 'type=meunu';
היא רק תוכן הקובץ אבל איפה שמו והמאפיינים שלו?

Re: העלאת קבצים בapi של ימות בphp

נשלח: 15:04 25/02/2018
על ידי מאזין נלהב
נסה את זה

קוד: בחירת הכל

<?php

$con = new connecting_to_yemot_api('0773137770', '0000');

$File = new oFile('ext.ini', 'text/plain', 'type=menu');

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$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;
}
}
?>

Re: העלאת קבצים בapi של ימות בphp

נשלח: 15:06 25/02/2018
על ידי מנחם מענדל מענדי
יש מצב להביא לי לכאן בתור קובץ מצורף?
נסה את זה

קוד: בחירת הכל

<?php

$con = new connecting_to_yemot_api('0773137770', '0000');

$File = new oFile('ext.ini', 'text/plain', 'type=menu');

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$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;
}
}
?>