Спасибо, сработало. Только внес небольшие изменения.
sattellite ( 2014-01-29 17:42:53 +0400 )редактироватьЕсть в диалплане функция 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 на аргумент
Спасибо, сработало. Только внес небольшие изменения.
sattellite ( 2014-01-29 17:42:53 +0400 )редактироватьЗадан: 2014-01-20 12:57:47 +0400
Просмотрен: 1,527 раз
Обновлен: Jan 29 '14
Нет голосового сообщения если телефон выключен или заблокирован
Приветствие вызывающей стороне
Cancel cause code как передать?
Grandstream транслирует Busy как "Ошибка"
Не говорит что недоступен абонент
Проблема с отсуствием сигнала отбоя на SPA2102 (SPA8000) [закрыт]
Macro, циклическая обработка аргументов
Обрываться внешние звонки через произвольный промежуток, но не более минуты.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.