Позвонить в компанию с мобильного и набрав добавочный позвонить сторонней компании
Такой функционал удобен для мобильных сотрудников. Когда важно, чтобы разговор был записан и зафиксирован на АТС в истории звонков. Когда нет возможности использовать софтфон / или «IP-SIM».
<?phpnamespaceMikoPBX\Core\System;require_once('Globals.php');useMikoPBX\Common\Models\ExternalPhones;useMikoPBX\Core\Asterisk\AGI;usePhalcon\Mvc\Model\Resultset;$agi =newAGI();$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');}
В адресной строке браузера скопируйте ID приложения. Он будет иметь вид «DIALPLAN-APP-6A9902C631C5E7B5AC8F501C559FD678»
Перейдите в раздел "Кастомизация системных файлов"
Откройте для редактирования файл "extensions.conf"
Вставьте в конец файла следующий код:
[add-trim-prefix-clid-custom]exten => _.!,1,ExecIf($[ "${EXTEN}"=="h" ]?Hangup() same => n,AGI(«DIALPLAN-APP-6A9902C631C5E7B5AC8F501C559FD678.php) same => n,Return()
тут «DIALPLAN-APP-6A9902C631C5E7B5AC8F501C559FD678» - это ID приложения.
Важные моменты
Приложение будет выполнено для всех входящих вызовов
Ввести добавочный будет возможно лишь в том случае, если номер телефона звонящего заполнен в карточке сотрудника, то есть номер должен принадлежать сотруднику. Это сделано для безопасности
Скрипт не является завершенным продуктом, но открыт для кастомизации