Это старая версия документа!
В плане набора должен быть описан контекст miko_ajam.
В контексте miko_ajam определяется extension с номером 10000109.
[miko_ajam] exten => 10000109,1,NoOP(internal calling application: 10000109 1C_get_context)
При начале работы, “Панель телефонии Asterisk” запрашивает контекст для пира, используя AMI команду originate.
Параметры originate
Переменные канала
Приложение должно выполнить команду плана набора UserEvent и передать настройки:
exten => 10000109,n,UserEvent(GetContest, Channel: ${tehnology}/${number}, context: ${1c_context})
[miko_ajam] exten => 10000109,1,NoCDR() exten => 10000109,n,Noop(internal calling application: 10000109 1C_get_context) exten => 10000109,n,AGI(1C_get_context.php) exten => 10000109,n,Hangup
#!/usr/bin/php -q <?php // Получение переменной AGI канала // function GetVarChannnel($agi, $_varName){ $v = $agi->get_variable($_varName); if(!$v['result'] == 0){ return $v['data']; } else{ return ""; } } // GetVarChannnel($_agi, $_varName) require_once('phpagi.php'); $agi = new AGI(); // $exten = GetVarChannnel($agi, "number"); $tehnology = GetVarChannnel($agi, "tehnology"); $output = array(); $result=''; if($tehnology == 'SIP'){ $result = exec("asterisk -rx\"sip show peer $exten\" | grep Context | awk -F'[:]+[ ]+' ' { print $2 } '",$output); $agi->exec("UserEvent", "GetContest,SIP:SIP"); }elseif($tehnology == 'DAHDI'){ $result = exec("asterisk -rx\"dahdi show channel $exten\" | grep Context | awk -F'[:]+[ ]+' ' { print $2 } '",$output); $agi->exec("UserEvent", "GetContest,DAHDI:DAHDI"); }elseif($tehnology == 'IAX'){ $result = exec("asterisk -rx\"iax2 show peer $exten\" | grep Context | awk -F'[:]+[ ]+' ' { print $2 } '",$output); $agi->exec("UserEvent", "GetContest,iax2:iax2"); } $agi->exec("UserEvent", "GetContest," ."Channel:$tehnology/$exten," ."context:$result"); // отклюаем запись CDR для приложения $agi->exec("NoCDR", ""); // ответить должны лишь после выполнения всех действий // если не ответим, то оргининация вернет ошибку $agi->answer(); ?>