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

Конференция

0

Помогите разобраться!! Стоит краснодарский 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();

?>

спросил May 5 '14

lib_32 Gravatar lib_32
11 1 2

обновил May 5 '14

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

Деньги то заплатили, но договор же не действует.... Просто я в PHP не очень... думал тут помогут люди которые с ним дружат

lib_32 (May 5 '14)edit

1 Ответ

1

Думаю вам нужно обратиться к разработчику. Вы ему деньги заплатили, он должен разбираться. Зачем нам делать это за него?

ссылка удалить спам редактировать

ответил May 5 '14

switch Gravatar switch
8334 11 7 92
http://lynks.ru/

Comments

Деньги то заплатили, но договор же не действует.... Просто я в PHP не очень... думал тут помогут люди которые с ним дружат

lib_32 (May 5 '14)edit

тут тоже платная поддержка работает :) из того что вы показали - нету тут параметров звонка.

awsswa (May 5 '14)edit

если бы я знал какие параметры искать(((( подскажите хоть примерно что нужно искать в файлах?

lib_32 (May 5 '14)edit

Думаю все-таки правильнее обратиться к ним. Это и дешевле будет. Чтобы ответить на ваш вопрос нужно лезть в эту систему и разбираться как она работает.

switch (May 5 '14)edit

Спасибо) Попил чаю, сел со свежей головой и сам нашел где что поменять)

lib_32 (May 5 '14)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: May 5 '14

Просмотрен: 3,053 раз

Обновлен: May 05 '14

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