Помогите разобраться!! Стоит краснодарский Asterisk -АлтерСвязь. У них есть конференция. Тоесть в определенное время обзванивает всех абонентов, и подключает к конференции. Как сделать чтобы меньше по времени звонило абоненту???
Нашел такие строки, но они иногда повторяются...
exten => 777,1,SetCallerId(<${participant}> ${participant})
exten => 777,2,agi,check_exist_in_conferences.php
exten => 777,3,GotoIf($["${EXIST}" = "true"]?4:12)
exten => 777,4,Noop(${CALLERIDNUM})
exten => 777,5,NoCDR()
exten => 777,6,Set(room=777)
exten => 777,7,agi,get_video_param.php
exten => 777,8,GotoIf($["${code}" = "0"]?12)
exten => 777,9,Answer
exten => 777,10,Wait,2
exten => 777,11,mixer_join(777|${place}|${dim}|${fps}|${rate}|${lecteur}|${mosa$
exten => 777,12,HangUp
exten => 777_monitor,1,Answer
exten => 777_monitor,2,NoCDR()
exten => 777_monitor,3,mp4save(/var/spool/asterisk/monitor/${UNIQUEID}-777.3gp)
exten => 777_monitor,4,HangUp
Содержание Php файла:
#!/usr/bin/php -q
<?php
$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
// $stdlog = fopen('/user-dir/queue.log', 'w');
function expect_result(){
global $stdin,$stdlog;
while(!feof($stdin)){
$text=fgets($stdin);
fputs($stdlog,"$text\n");
if ( ($text = strstr($text,"result=")) != "") {
sscanf($text,"result=%i",$code);
return $code;
} elseif (strstr($text,"Invalid or unknown command") != ""){ return -1;}
}
return "";
}
function expect_result_str(){
global $stdin,$stdlog;
while(!feof($stdin)){
$text=fgets($stdin);
// fputs($stdlog,"$text\n");
if ( ($text = strstr($text,"result=")) != "") {
sscanf($text,"result=1 %s",$code);
$val=preg_replace('/"/', "", $code);
$val1=str_replace("(", "", $val);
$val=str_replace(")", "", $val1);
//fputs($stdlog,"code=$val\n");
return $val;
}elseif (strstr($text,"Invalid or unknown command")) return -1;
}
return "";
}
function strtrr ($str,$del){
$tok=strtok($str,$del);
while ($tok !== false) {
$ret[]=$tok;
$tok = strtok($del);
}
return $ret;
}
function do_command($command){
global $stdin,$stdlog,$stdout;
do {
fputs($stdlog,"$command");
fputs($stdout,"$command");
$ret=expect_result();
} while($ret == -1);
return $ret;
}
function get_params($val){
// echo "$val";
if ($val != "") {
$t=strtrr($val,"|");
unset($ret);
foreach($t as $v) {
$z=strtrr($v,"=");
switch($z[0]) {
case "mode":
$ret['mode'] = $z[1];
break;
case "lecteur":
$ret['lecteur'] = $z[1];
break;
case "monitor":
$ret['monitor'] = $z[1];
break;
case "mosaic":
$ret['mosaic'] = $z[1];
break;
case "pbook":
$ret['pbook'] = $z[1];
break;
case "resolution":
$ret['resolution'] = $z[1];
break;
case "w_font":
$ret['w_font'] = $z[1];
break;
case "wb_color":
$ret['wb_color'] = $z[1];
break;
case "wt_color":
$ret['wt_color'] = $z[1];
break;
case "ddt_color":
$ret['ddt_color'] = $z[1];
break;
case "dt_color":
$ret['dt_color'] = $z[1];
break;
}
}
} else {
$ret['mode'] = 0;
$ret['lecteur'] = "0";
$ret['monitor'] = "0";
$ret['mosaic'] = "4p";
$ret['pbook'] = "";
$ret['resolution'] = "CIF";
$ret['w_font'] = "comic.ttf";
$ret['wb_color'] = "000000";
$ret['wt_color'] = "FFFFFF";
$ret['ddt_color'] = "444444";
$ret['dt_color'] = "999999";
}
return $ret;
}
function getLocalTimezone()
{
$iTime = time();
$arr = localtime($iTime);
$arr[5] += 1900;
$arr[4]++;
$iTztime = gmmktime($arr[2], $arr[1], $arr[0], $arr[4], $arr[3], $arr[5], $arr[8]);
$offset = doubleval(($iTztime-$iTime)/(60*60));
$zonelist =
array
(
'Kwajalein' => -12.00,
'Pacific/Midway' => -11.00,
'Pacific/Honolulu' => -10.00,
'America/Anchorage' => -9.00,
'America/Los_Angeles' => -8.00,
'America/Denver' => -7.00,
'America/Tegucigalpa' => -6.00,
'America/New_York' => -5.00,
'America/Caracas' => -4.30,
'America/Halifax' => -4.00,
'America/St_Johns' => -3.30,
'America/Argentina/Buenos_Aires' => -3.00,
'America/Sao_Paulo' => -3.00,
'Atlantic/South_Georgia' => -2.00,
'Atlantic/Azores' => -1.00,
'Europe/Dublin' => 0,
'Europe/Belgrade' => 1.00,
'Europe/Minsk' => 2.00,
'Europe/Moscow' => 3.00,
'Asia/Tehran' => 3.30,
'Asia/Muscat' => 4.00,
'Asia/Yekaterinburg' => 5.00,
'Asia/Kolkata' => 5.30,
'Asia/Katmandu' => 5.45,
'Asia/Dhaka' => 6.00,
'Asia/Rangoon' => 6.30,
'Asia/Krasnoyarsk' => 7.00,
'Asia/Brunei' => 8.00,
'Asia/Seoul' => 9.00,
'Australia/Darwin' => 9.30,
'Australia/Canberra' => 10.00,
'Asia/Magadan' => 11.00,
'Pacific/Fiji' => 12.00,
'Pacific/Tongatapu' => 13.00
);
$index = array_keys($zonelist, $offset);
if(sizeof($index)!=1)
return false;
return $index[0];
}
function get_abonents($params){
unset($abnts);
$t=strtrr($params["pbook"],";");
foreach($t as $val) {
$y=strtrr($val,",");
$abnts[] = $y[0];
}
return $abnts;
}
$link = mysql_connect("localhost", "root", "")
or die("Could not connect");
mysql_select_db("asterisk") or die("Could not select database");
date_default_timezone_set(getLocalTimezone());
$tm = time();
do_command("SET VARIABLE EXIST false\n");
fputs($stdout,"GET VARIABLE participant \n");
$part=expect_result_str();
fputs($stdout,"GET VARIABLE CHANNEL \n");
$chan=expect_result_str();
if ($part == "") {
exec("/bin/echo '$tm <span class=\"er\">Попытка соединения ($chan) не удалась так как такого участника не существует.</span>' >> /tmp/video_log");
exit();
}
mysql_query("LOCK TABLES user_company WRITE");
$result = mysql_query("select enter_number,value from user_company where operator='active'");
unset($cfncs);
while($row=mysql_fetch_row($result)) $cfncs[$row[0]] = $row[1];
if (is_array($cfncs)) {
foreach($cfncs as $room=>$value) {
unset($params);
$params=get_params($value);
unset($abn);
$abn=get_abonents($params);
if (is_array($abn)) {
foreach($abn as $abon) if ($abon == $part) {
do_command("SET VARIABLE CONFERENCE ".$room."\n");
do_command("SET VARIABLE EXIST true\n");
do_command("SET VARIABLE CALLERIDNUM $part\n");
do_command("SET VARIABLE CALLERIDNAME $part\n");
exec("/bin/echo '$tm <span class=\"ok\">Участник $part ($chan) успешно подключен к конференции $room</span>' >> /tmp/video_log");
mysql_query("UNLOCK TABLES");
exit();
}
}
}
}
exec("/bin/echo '$tm <span class=\"er\">Участник $part ($chan) не учавствует в текущих активных конференциях. Участник отключен.</span>' >> /tmp/video_log");
mysql_query("UNLOCK TABLES");
exit();
?>
Деньги то заплатили, но договор же не действует.... Просто я в PHP не очень... думал тут помогут люди которые с ним дружат
lib_32 ( 2014-05-05 12:54:04 +0400 )редактировать