====== Позвонить в компанию с мобильного и набрав добавочный позвонить сторонней компании ====== Такой функционал удобен для мобильных сотрудников. Когда важно, чтобы разговор был записан и зафиксирован на АТС в истории звонков. Когда нет возможности использовать софтфон / или "IP-SIM". [[faq:|Обратно к инструкциям]] ===== Реализация ===== - Добавьте новое приложение dialplan (см. **[[:dialplan-applications|Приложения диалпланов]]**) - Назначьте внутренний номер, к примеру **2200109** - Скопируйте код приолжения 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-FEA889C8EDD8F2F18213E473E8236C20**" - - В разделе "[[:custom-files|Кастомизация системных файлов]]" добавьте к файлу **extensions.conf** [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 приложения. ===== Важные моменты ===== - Приложение будет выполнено для **всех** входящих вызовов - Ввести добавочный будет возможно лишь в том случае, если номер телефона звонящего заполнен в карточке сотрудника, то есть номер должен принадлежать сотруднику. Это сделано для безопасности - **Скрипт не является завершенным продуктом**, но открыт для кастомизации [[faq:|Обратно к инструкциям]]