יש לי הצעה לשדרוג המערכת שלכם
הוספת שלוחות שאי אפשר כרגע להוסיף דרך הטלפון
הכנתי דוגמא של קוד php שמבצע יצירת שלוחה מסוג "מעבר לשלוחה אחרת" וכן "הפניית משתמשים לפי רשימת תפוצה"
להלן הדוגמא (מבוסס על המחלקה של "מאזין נלהב")
קוד: בחירת הכל
<?php
/*
הוספת שלוחות
*/
$hangup = $_GET['hangup'];//ניתוק השיחה
if($hangup) {exit; }
//מספר מערכת וסיסמא
$DID=ReadFromYemot('DID', 't-אנא הַקישו את מספר המערכת שלכם וסולמית לסיום.', ",yes,10,9,7");
$PASS=ReadFromYemot('PASS', 't-אנא הַקישו את סיסמת המערכת שלכם וסולמית לסיום.', ",yes,,1,7");
//נתיב השלוחה אותה רוצים להגדיר
$path=ReadFromYemot('PATH','t-אנא הַקישו את כתובת השלוחה אותה אתם רוצים להגדיר וסולמית לסיום , להגדרת השלוחה הראשית הקישו סולמית , לתיקיות פנימיות יש להקיש את כתובת השלוחה המלאה, כאשר בין שלוחה לשלוחה יש להקיש כוכבית.'
, ",,,1,7,Alpha,,,*/,,,Ok,ivr,");
//סוג השלוחה אותה רוצים להגדיר
$type=ReadFromYemot('type', 't-אנא בחרו את סוג השלוחה אותה ברצונכם להגדיר, למעבר לשלוחה אחרת הקישו אחת , להפניית משתמשים לפי רשימת תפוצה הקישו שתיים.');
if ($type==1)
{
$go_to=ReadFromYemot('goto', 't-אנא הַקישו את כתובת השלוחה שאליה יופנו וסולמית לסיום , להגדרת השלוחה הראשית הקישו סולמית , לתיקיות פנימיות יש להקיש את כתובת השלוחה המלאה, כאשר בין שלוחה לשלוחה יש להקיש סולמית.'
, ",,,1,7,Alpha,,,*/,,,Ok,ivr,");
if ($go_to=='ivr'){$go_to=null;}
$content="type=go_to_folder
go_to_folder=/$go_to";
}
if ($type==2)
{
//התבנית שלפיה רוצים לסנן
$template=ReadFromYemot('tamplate','t-אנא הַקישו את המספר הסידורי של התבנית שלפיה אתם רוצים לבצע את המיון לתבנית ברירת המחדל הַקישו סולמית.',
",,,1,7,Alpha,,,*/,,,Ok,def,");
$go_to_activ=ReadFromYemot('gotoact' , 't-אנא הַקישו את כתובת השלוחה שאליה יופנו המופיעים ברשימה במצב פעיל וסולמית לסיום , להגדרת השלוחה הראשית הקישו סולמית , לתיקיות פנימיות יש להקיש את כתובת השלוחה המלאה, כאשר בין שלוחה לשלוחה יש להקיש סולמית.',
",,,1,7,Alpha,,,*/,,,Ok,ivr,");
$go_to_blocked =ReadFromYemot('gotoblk', 't-אנא הַקישו את כתובת השלוחה שאליה יופנו המופיעים ברשימה במצב חסום וסולמית לסיום , להגדרת השלוחה הראשית הקישו סולמית , לתיקיות פנימיות יש להקיש את כתובת השלוחה המלאה, כאשר בין שלוחה לשלוחה יש להקיש סולמית.',
",,,1,7,Alpha,,,*/,,,Ok,ivr,");
$go_to_none =ReadFromYemot('gotonon', 't-אנא הַקישו את כתובת השלוחה שאליה יופנו אלו שאינם מופיעים ברשימה וסולמית לסיום , להגדרת השלוחה הראשית הקישו סולמית , לתיקיות פנימיות יש להקיש את כתובת השלוחה המלאה, כאשר בין שלוחה לשלוחה יש להקיש סולמית'
, ",,,1,7,Alpha,,,*/,,,Ok,ivr,");
if($template=='def'){$template=null; }
else {$template="template_filter=$template";}
if ($go_to_activ=='ivr'){$go_to_activ=null;}
if ($go_to_blocked=='ivr'){$go_to_blocked=null;}
if($go_to_none=='ivr'){$go_to_none=null;}
$content="type=template_filter
$template
template_filter_active_go_to=/$go_to_activ
template_filter_none_go_to=/$go_to_none
template_filter_blocked_go_to=/$go_to_blocked";
}
/*================יצירת אובייקט(מופע) חדש====================*/
$con = new connecting_to_yemot_api($DID, $PASS);
/*===============================================================*/
if($path=='ivr'){$path="ivr/ext.ini";}
else {$path="ivr/$path/ext.ini";}
/*===============================================================*/
/*================העלאת קובץ====================*/
// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain', $content);
$body = array
(
'path' => $path,
'convertAudio' => 0,
'fileUpload' => $File
);
$a = $con -> connecting('UploadFile', $body);
if($a) {print "id_list_message=t-השלוחה הוגדרה בהצלחה&";}
/*===============================================================*/
function ReadFromYemot($var, $message, $read=",,1,1,7,No,")
{if ($_GET[$var]) { return $_GET[$var] ;}else{
print "read=$message=$var$read"; exit; }
}
//המחלקה של "מאזין נלהב"
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;
}
}
?>
ב ext.ini כל מה שצריך לרשום זה את הלינק לקובץ בשרת שלכם
ניתן כמובן להחליף כל טקסט שמתחיל ב
לקובץ קריינות
כסבורני שתהיה זו תועלת רבה עבור אלו הזקוקים לכך
אולי תבקשו מימות המשיח שיפרסמו את הקו שלכם בכניסה לניהול של כלל המערכות עבור מאות מפעילי קווים שאין להם כלל גישה למחשב
בתודה