Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2014-05-05 09:42:48 +0400

lib_32 Gravatar lib_32

Конференция

Помогите разобраться!! Стоит краснодарский Asterisk -АлтерСвязь. У них есть конференция. Тоесть в определенное время обзванивает всех абонентов, и подключает к конференции. Как сделать чтобы меньше по времени звонило абоненту???

Нашел такие строки, но они иногда повторяются...

exten => 777,1,SetCallerId(<${participant}> ${participant}) exten => 777,2,agi,checkexistinconferences.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,getvideoparam.php exten => 777,8,GotoIf($["${code}" = "0"]?12) exten => 777,9,Answer exten => 777,10,Wait,2 exten => 777,11,mixerjoin(777|${place}|${dim}|${fps}|${rate}|${lecteur}|${mosa$ exten => 777,12,HangUp

exten => 777_monitor,1,Answer

exten => 777monitor,2,NoCDR() exten => 777monitor,3,mp4save(/var/spool/asterisk/monitor/${UNIQUEID}-777.3gp) exten => 777_monitor,4,HangUp

Содержание Php файла:

#!/usr/bin/php -q // $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 expectresultstr(){ 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=pregreplace('/"/', "", $code); $val1=strreplace("(", "", $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 docommand($command){ global $stdin,$stdlog,$stdout; do { fputs($stdlog,"$command"); fputs($stdout,"$command"); $ret=expectresult(); } 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/LosAngeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/NewYork' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/StJohns' => -3.30, 'America/Argentina/BuenosAires' => -3.00, 'America/SaoPaulo' => -3.00, 'Atlantic/SouthGeorgia' => -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 = mysqlconnect("localhost", "root", "") or die("Could not connect"); mysqlselect_db("asterisk") or die("Could not select database");

datedefaulttimezone_set(getLocalTimezone()); $tm = time();

do_command("SET VARIABLE EXIST false\n");

fputs($stdout,"GET VARIABLE participant \n"); $part=expectresultstr();

fputs($stdout,"GET VARIABLE CHANNEL \n"); $chan=expectresultstr();

if ($part == "") { exec("/bin/echo '$tm Попытка соединения ($chan) не удалась так как такого участника не существует.' >> /tmp/video_log"); exit(); }

mysqlquery("LOCK TABLES usercompany WRITE");

$result = mysqlquery("select enternumber,value from user_company where operator='active'");

unset($cfncs); while($row=mysqlfetchrow($result)) $cfncs[$row[0]] = $row[1];

if (isarray($cfncs)) { foreach($cfncs as $room=>$value) { unset($params); $params=getparams($value); unset($abn); $abn=getabonents($params); if (isarray($abn)) { foreach($abn as $abon) if ($abon == $part) { docommand("SET VARIABLE CONFERENCE ".$room."\n"); docommand("SET VARIABLE EXIST true\n"); docommand("SET VARIABLE CALLERIDNUM $part\n"); docommand("SET VARIABLE CALLERIDNAME $part\n"); exec("/bin/echo '$tm Участник $part ($chan) успешно подключен к конференции $room' >> /tmp/videolog"); mysqlquery("UNLOCK TABLES"); exit(); } } }
}

exec("/bin/echo '$tm Участник $part ($chan) не учавствует в текущих активных конференциях. Участник отключен.' >> /tmp/videolog"); mysqlquery("UNLOCK TABLES");

exit();

?>

Конференция

Помогите разобраться!! Стоит краснодарский Asterisk -АлтерСвязь. У них есть конференция. Тоесть в определенное время обзванивает всех абонентов, и подключает к конференции. Как сделать чтобы меньше по времени звонило абоненту???

Нашел такие строки, но они иногда повторяются...

exten => 777,1,SetCallerId(<${participant}> ${participant})
exten => 777,2,agi,checkexistinconferences.php
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,getvideoparam.php
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,mixerjoin(777|${place}|${dim}|${fps}|${rate}|${lecteur}|${mosa$
777,11,mixer_join(777|${place}|${dim}|${fps}|${rate}|${lecteur}|${mosa$
exten => 777,12,HangUp

777,12,HangUp exten => 777_monitor,1,Answer

777_monitor,1,Answer exten => 777monitor,2,NoCDR() 777_monitor,2,NoCDR() exten => 777monitor,3,mp4save(/var/spool/asterisk/monitor/${UNIQUEID}-777.3gp) 777_monitor,3,mp4save(/var/spool/asterisk/monitor/${UNIQUEID}-777.3gp) exten => 777_monitor,4,HangUp

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

-1;}

     }

 return "";

}

} function expectresultstr(){ 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=pregreplace('/"/', $val=preg_replace('/"/', "", $code); $val1=strreplace("(", $val1=str_replace("(", "", $val); $val=str_replace(")", "", $val1);
//fputs($stdlog,"code=$val\n"); return $val; }elseif (strstr($text,"Invalid or unknown command")) return -1;

-1;

     }


 return "";

}

function strtrr ($str,$del){
$tok=strtok($str,$del); while ($tok !== false) { $ret[]=$tok; $tok = strtok($del); }

} return $ret; }

} function docommand($command){ do_command($command){ global $stdin,$stdlog,$stdout; do { fputs($stdlog,"$command"); fputs($stdout,"$command"); $ret=expectresult(); $ret=expect_result(); } while($ret == -1);

-1); return $ret;
}

function get_params($val){

get_params($val){ // echo "$val"; if ($val != "") { $t=strtrr($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/LosAngeles' 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/NewYork' 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/StJohns' 'America/St_Johns' => -3.30, 'America/Argentina/BuenosAires' 'America/Argentina/Buenos_Aires' => -3.00, 'America/SaoPaulo' 'America/Sao_Paulo' => -3.00, 'Atlantic/SouthGeorgia' '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){

get_abonents($params){

    unset($abnts);
 $t=strtrr($params["pbook"],";");
 foreach($t as $val) {
     $y=strtrr($val,",");
     $abnts[] = $y[0];
 }

 return $abnts;

}

} $link = mysqlconnect("localhost", mysql_connect("localhost", "root", "") or die("Could not connect"); mysqlselect_db("asterisk") mysql_select_db("asterisk") or die("Could not select database");

datedefaulttimezone_set(getLocalTimezone()); database"); date_default_timezone_set(getLocalTimezone()); $tm = time();

time(); do_command("SET VARIABLE EXIST false\n");

false\n"); fputs($stdout,"GET VARIABLE participant \n"); $part=expectresultstr();

$part=expect_result_str(); fputs($stdout,"GET VARIABLE CHANNEL \n"); $chan=expectresultstr();

$chan=expect_result_str(); if ($part == "") { exec("/bin/echo '$tm Попытка <span class=\"er\">Попытка соединения ($chan) не удалась так как такого участника не существует.' существует.</span>' >> /tmp/video_log"); exit(); }

mysqlquery("LOCK mysql_query("LOCK TABLES usercompany WRITE");

user_company WRITE"); $result = mysqlquery("select enternumber,value mysql_query("select enter_number,value from user_company where operator='active'");

operator='active'"); unset($cfncs); while($row=mysqlfetchrow($result)) while($row=mysql_fetch_row($result)) $cfncs[$row[0]] = $row[1];

$row[1]; if (isarray($cfncs)) (is_array($cfncs)) { foreach($cfncs as $room=>$value) { unset($params); $params=getparams($value); $params=get_params($value); unset($abn); $abn=getabonents($params); $abn=get_abonents($params); if (isarray($abn)) (is_array($abn)) { foreach($abn as $abon) if ($abon == $part) { docommand("SET do_command("SET VARIABLE CONFERENCE ".$room."\n"); docommand("SET do_command("SET VARIABLE EXIST true\n"); docommand("SET do_command("SET VARIABLE CALLERIDNUM $part\n"); docommand("SET do_command("SET VARIABLE CALLERIDNAME $part\n"); exec("/bin/echo '$tm Участник <span class=\"ok\">Участник $part ($chan) успешно подключен к конференции $room' $room</span>' >> /tmp/videolog"); mysqlquery("UNLOCK /tmp/video_log"); mysql_query("UNLOCK TABLES"); exit(); } } }
}

exec("/bin/echo '$tm Участник <span class=\"er\">Участник $part ($chan) не учавствует в текущих активных конференциях. Участник отключен.' отключен.</span>' >> /tmp/videolog"); mysqlquery("UNLOCK TABLES");

exit();

?>

/tmp/video_log"); mysql_query("UNLOCK TABLES"); exit(); ?>

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.