Есть в диалплане функция Dial:
exten => _XXXXX,1,Dial(SIP/${EXTEN}&SIP/${EXTEN}l1,,Ttfg)
Это сделано для случая доступности с мобильного устройства. То есть номер XXXXXl1 всегда подключен. А вот номер XXXXX только с мобильного устройства в любой момент времени. При ситуации, что мобильный номер не зарегистрирован, а стационарный свободен - слышны длинные гудки, так как стационарный отвечает, что начал дозвон. И это нормально. А вот при ситуации, что мобильный номер не зарегестрирован, а стационарный занят, то абсолютная тишина. В косноли видно, что стационарный отбился с busy, а с мобильным есть попытка соединения, но отваливается вызов в итоге по таймауту.
ВОПРОС: Как отбивать в линию сигнал занято, если один из каналов занят?
UPD: Все отлично стало работать. Огромное спасибо octopas за подсказанный хак. Итоговое решение выглядит так:
exten => _XXXXX,1,Set(__ORIGINALCHANNEL=${CHANNEL})
exten => _XXXXX,n,Dial(Local/${EXTEN}@bridgepeer&Local/${EXTEN}l1@bridgepeer,,Ttfg)
[bridgepeer]
exten => _[0-9]!,1,Dial(SIP/${EXTEN})
exten => _[0-9]!,n,ExecIf($["${DIALSTATUS}"=="BUSY"]?AGI(busy.pl,${ORIGINALCHANNEL}))
В busy.pl
отправляю в канал Hangup.
# cat busy.pl
#!/usr/bin/perl
$|++;
use Asterisk::AGI;
$agi=new Asterisk::AGI;
$agi->hangup($ARGV[0]);
1;
Теоретически должно сработать:
exten => _XXXXX,1,Set(__ORIGINALCHANNEL,${CHANNEL})
exten => _XXXXX,n,Dial(Local/${EXTEN}@bridgepeer&Local/${EXTEN}l1@bridgepeer,,Ttfg)
[bridgepeer]
exten => _[*#0-9]!,1,Dial(SIP/{$EXTEN})
exten => _[*#0-9]!,n,ExecIf(${DIALSTATUS}=="BUSY"?${SHELL(/usr/bin/myamiscript.pl ${ORIGINALCHANNEL})})
в AMI скрипте Hangup на аргумент
Задан: Jan 20 '14
Просмотрен: 1,532 раз
Обновлен: Jan 29 '14
HangUP после redirect из AGI скрипта по AMI
Virtual Fax. номер Iax2 постоянно занят
Почему не происходит прекращение работы команды Dial?
Grandstream транслирует Busy как "Ошибка"
Звонок на определенную линию многоканального телефона.
если кладет трубку звонящий - Dial после завершения вызова возвращает пустые переменные
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.