====== Позвонить в компанию с мобильного и набрав добавочный позвонить сторонней компании ======
Такой функционал удобен для мобильных сотрудников. Когда важно, чтобы разговор был записан и зафиксирован на АТС в истории звонков. Когда нет возможности использовать софтфон / или "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:|Обратно к инструкциям]]