Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2013-11-29 12:51:53 +0400

Menog Gravatar Menog

Ограничение определенных номеров телефонов (skypemate p4k) на 1 канал

Есть у меня несколько пользователей, которые юзают богомерзкие телефоны 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!

Ограничение определенных номеров телефонов (skypemate p4k) на 1 канал

Есть у меня несколько пользователей, которые юзают богомерзкие телефоны 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!HELP! .....[updated].......

кароче сделал обходным путём

[macro-innercall]
exten => s,1,GotoIf($["${SIPPEER(${MACRO_EXTEN},context)}" = ""]?number_not_exists)
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,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 - если нет значит и такого номера нет... если не дозванивается - значит ответ занят если не берет трубу 40 сек - то значит недоступен.... осталось только обработать тот момент, когда peer зарегистрен в sip.cfg, но сам телефонный аппарат не доступен....есть идеи?)

Ограничение определенных номеров телефонов (skypemate p4k) на 1 канал

Есть у меня несколько пользователей, которые юзают богомерзкие телефоны 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! HELP!

.....[updated].......

кароче сделал обходным путём

[macro-innercall]
exten => s,1,GotoIf($["${SIPPEER(${MACRO_EXTEN},context)}" = ""]?number_not_exists)
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,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 - если нет значит и такого номера нет... если не дозванивается - значит ответ занят если не берет трубу 40 сек - то значит недоступен.... осталось только обработать тот момент, когда peer зарегистрен в sip.cfg, но сам телефонный аппарат не доступен....есть идеи?)

Ограничение определенных номеров телефонов (skypemate p4k) на 1 канал

Есть у меня несколько пользователей, которые юзают богомерзкие телефоны 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,Dial(SIP/${MACRO_EXTEN},40)
exten => s,n,Goto(d-${DIALSTATUS},1)
exten => s,n(number_not_exists),Playback(invalid)
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 - если нет его - значит и такого номера нет... нет...

если не дозванивается - значит ответ занят занят

если не берет трубу 40 сек - то значит недоступен.... недоступен....

осталось только обработать тот момент, когда peer зарегистрен в sip.cfg, но сам телефонный аппарат не доступен....есть идеи?)

проверять ${SIPPEER(${MACRO_EXTEN},status) не хочу, т.к. Qualify нигде не стоит.

Ограничение определенных номеров телефонов (skypemate p4k) на 1 канал

Есть у меня несколько пользователей, которые юзают богомерзкие телефоны 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 сек - то значит опять же недоступен....

осталось только обработать тот момент, когда peer зарегистрен в sip.cfg, но сам телефонный аппарат не доступен....есть идеи?)

проверять ${SIPPEER(${MACRO_EXTEN},status) не хочу, т.к. Qualify нигде не стоит.и без всяких непонятных мне групп )))

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.