Спасибо, сработало. Только внес небольшие изменения.
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,519 раз
Обновлен: Jan 29 '14
Dial и продолжение обработки после сброса звонящего
Переход при недоступном абоненте
Нет голосового сообщения если телефон выключен или заблокирован
Grandstream транслирует Busy как "Ошибка"
Как узнать кто поднял трубку при множественном Dial()?
Звонок на определенную линию многоканального телефона.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.