Стоит астериск 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,645 раз
Обновлен: Jul 20 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.