MikoPBX
Модули
Перевод этой страницы:
MikoPBX
Модули
Такой функционал удобен для мобильных сотрудников. Когда важно, чтобы разговор был записан и зафиксирован на АТС в истории звонков. Когда нет возможности использовать софтфон / или «IP-SIM».
<?php namespace MikoPBX\Core\System; require_once('Globals.php'); use MikoPBX\Common\Models\ExternalPhones; use MikoPBX\Core\Asterisk\AGI; use Phalcon\Mvc\Model\Resultset; $agi = new AGI(); $number = substr($agi->request['agi_callerid'],-10); if(strlen($number) < 7){ $agi->noop('Count < 7'); // Проверка на длину номера. exit(0); } $outPhone = ExternalPhones::findFirst([ 'conditions' => 'dialstring LIKE :number:', 'bind' => [ 'number' => "%$number", ], 'hydration' => Resultset::HYDRATE_ARRAYS, ]); if(count($outPhone) !== 1){ $agi->noop('ExternalPhones not found '.$number); // Проверка на принадлежность номера телефона сотруднику компании. exit(0); } $agi->set_variable('AGIEXITONHANGUP', 'yes'); $agi->set_variable('AGISIGHUP', 'yes'); $agi->set_variable('__ENDCALLONANSWER', 'yes'); $agi->exec('Ringing', ''); $agi->Answer(); $result = $agi->getData('vm-enter-num-to-call', 3000, 11); $selectednum = $result['result']??''; if(!empty($selectednum)){ // Все ок. Завершаем вызов. $agi->set_variable('__pt1c_UNIQUEID', ''); $agi->exec( 'Dial', "Local/{$selectednum}@all_peers/n,300," . 'TtekKHhU(dial_answer)b(dial_create_chan,s,1)' ); }else{ $agi->noop('selectednum is empty'); }
[add-trim-prefix-clid-custom] exten => _.!,1,ExecIf($[ "${EXTEN}" == "h" ]?Hangup() same => n,AGI(DIALPLAN-APP-FEA889C8EDD8F2F18213E473E8236C20.php) same => n,Return()
, тут «DIALPLAN-APP-FEA889C8EDD8F2F18213E473E8236C20» - это ID приложения.