Есть у меня несколько пользователей, которые юзают богомерзкие телефоны SkypeMate P4K (SM). Проблемма у них такая, что при параллельном звонке, если пользователь SM сбрасывает его, у него врубается громкая связь с первой линией. Соответственно после всех возможных деяний, я принял решение тупо ограничить этим пользователям канал в одну линию. по началу сделал так:
[xlite](!)
; Turn off silence suppression in X-Lite ("Transmit Silence"=YES)!
; Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed
"Transmit Silence"=YES
type=friend
;regexten=1234 ; When they register, create extension 1234
context=phones
host=dynamic ; This device needs to register
secret=qwerty
directmedia=no ; Typically set to NO if behind NAT
nat=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm ; GSM consumes far less bandwidth than ulaw
call-limit=1
Но при call-limit=1 при втором звонке DIALSTATUS дает статус CHANUNAVAIL, а нужно чтобы давал статус BUSY. Как это можно сделать? говорят, что call-limit функция устарела и можно как-то использовать функции GROUP...но я совершенно не понимаю как.... :) HELP!
.....[updated].......
кароче сделал обходным путём
[macro-innercall]
exten => s,1,GotoIf($["${SIPPEER(${MACRO_EXTEN},context)}" = ""]?number_not_exists)
exten => s,n,ChanIsAvail(SIP/${MACRO_EXTEN},a)
exten => s,n,GotoIf($["${AVAILCHAN}" = ""]?number_not_access)
exten => s,n,Dial(SIP/${MACRO_EXTEN},40)
exten => s,n,Goto(d-${DIALSTATUS},1)
exten => s,n(number_not_exists),Playback(invalid)
exten => s,n(number_not_access),Playback(vm-isunavail)
exten => s,n,HangUp()
exten => d-BUSY,1,Playback(vm-isonphone)
exten => d-BUSY,n,HangUp()
exten => d-CONGESTION,1,Playback(vm-isonphone)
exten => d-CONGESTION,n,HangUp()
exten => d-CHANUNAVAIL,1,Playback(vm-isonphone)
exten => d-CHANUNAVAIL,n,HangUp(
exten => d-NOANSWER,1,Playback(vm-isunavail)
exten => d-NOANSWER,n,HangUp()
exten => _d-.,1,HangUp()
при звонке на внутренний номер проверяет наличие context - если нет его - значит и такого номера нет...
если ChanIsAvail пустой- значит аппарат выключен, т.е. недоступен
если не берет трубу 40 сек - то значит опять же недоступен....
и без всяких непонятных мне групп )))
для таких запросов сделана специальная функция считающая обращения.
сделайте обработку входящих через очередь, тогда второй звонок будет ожидать соединения
Задан: 2013-11-29 12:51:53 +0400
Просмотрен: 208 раз
Обновлен: Nov 29 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
перед звонком проверяйте статус chanisavail
awsswa ( 2013-11-29 12:58:14 +0400 )редактироватьЭто врятли мне поможет.... Пример: есть куча номеров которые вообще не используются или временно выключены (например номер 444) а есть вышесказанный номер с 1 линией (например номер 333) соответственно звонящий на 444 или на 333(у которого линия занята) получает один и тот же результат а надо, чтобы при звонке на 333 получал ответ - Занято.
Menog ( 2013-11-29 13:01:36 +0400 )редактироватьа с очередями заморачиваться совершенно неохота. Не для этого они сделаны. Неужели нет более простого выхода?
Menog ( 2013-11-29 13:42:23 +0400 )редактироватьобновил своё первое сообщение...
Menog ( 2013-11-29 16:00:04 +0400 )редактировать