Стоит астериск 1.6.2.9. Задача сделать так чтобы ограничить число входящих звонков до 1 и при этом чтобы не было проблем с переводом звонка(т.е. call-limit=1 не подходит, а опции limitonpeers здесь нет). Можно сделать это через group_count для входящей свзяи - не проблема. Но проблема в том, что когда абонент совершает исходящий вызов и ему в этот момент кто то звонит по внутренней сети или с наружи, то он слышит гудки в трубке(уведомления о поступающем звонке) и соответственно при звонках из города, вместо того чтобы сразу перевести звонок на незанятую линию, астериск долбится в уже разговаривающего абонента. Подскажите как можно решить эту проблему. Понимаю что тема уже поднималась, но внятного ответа так и не было дано. Если можно хотел бы получить комментарии по callcounetr=yes и hint не совсем пойму как это работает...
Я делаю так (моя внутреняя нумерация 10ХХ):
exten => 10XX,1,Set(foo=${SIPPEER(${EXTEN},curcalls)}) exten => 10XX,n,GotoIf($["${foo}" = "0"]?4) exten => 10XX,n,Goto("то что вам надо",s,1) exten => 10XX,n,Dial(SIP/${EXTEN}) exten => 10XX,n,Hangup()
Если экстеншн уже занят одним звонком, то перевожу в другой контекст, а там уже далаю с этим звонком, то что мне надо.
Кто мешает устанавливать group для входящих и исходящих вызовов?
Надеюсь так будет понятнее:
[incoming] exten => _1XXX,1,GotoIf($[${GROUP_COUNT(${EXTEN})} > 0]?busy) exten => _1XXX,n,Set(GROUP()=${EXTEN}) exten => _1XXX,n,Dial(SIP/${EXTEN}) exten => _1XXX,n,Hangup() exten => _1XXX,n(busy),Busy() [outgoing] exten => _1XXX,n,Set(GROUP()=${CALLERID(num)}) exten => _1XXX,n,Dial(Local/${EXTEN}@incoming) exten => _1XXX,n,Hangup()
[incoming] exten => _1XXX,1,GotoIf($[${GROUP_COUNT(${EXTEN})} > 0]?busy) exten => _1XXX,n,Set(GROUP(in)=${EXTEN}) exten => _1XXX,n,Dial(SIP/${EXTEN}) exten => _1XXX,n,Hangup() exten => _1XXX,n(busy),Busy() [outgoing] exten => _1XXX,n,Set(GROUP(out)=${CALLERID(num)}) exten => _1XXX,n,Dial(Local/${EXTEN}@incoming) exten => _1XXX,n,Hangup()
Теперь у входящего и исходящего разные категории (in и out) и обе переменные будут установлены в одном канале. GROUP_COUNT считает независимо от категорий. Протестировал на внутренних номерах.
Задан: 2011-07-15 08:55:47 +0400
Просмотрен: 2,789 раз
Обновлен: Jul 20 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.