Jump to content
Калькуляторы

Ограничение количества вызовов

Привет! Нужно ограничить количество вызовов на один аппарат до 1. Нашел много инфы по этому поводу и делаю, как там написано, но что то не выходит каменный цветок!

 

extensions.conf

 

[macro-limit]
exten => s,1,Set(Group()=${ARG1})
exten => s,n,Set(Calls=${GROUP_COUNT(${ARG1}@in)})
exten => s,n,GotoIf($[${Calls}>1]?111)
exten => s,n,Dial(SIP/${ARG1},20,tT)
exten => s,111,Verbose(1, ***Количество вызовов ${Calls} больше лимита)
exten => s,n,Set(DIALSTATUS=CHANUNAVAIL)

[office]
exten => _5.,1,Verbose(1, ***** Вызов абонента ${EXTEN} *****)
exten => _5.,n,Macro(limit,${EXTEN})

 

sip.conf

 

[trunk](!)
secret=1
host=dynamic
dtmfmode=info
port=5060
context=office
canreinvite=yes
nat=no
disallow=all
allow=alaw,ulaw

[5000](trunk)
mailbox=5000
username=5000
callcounter=yes
qualify=u00
type=friend

[5001](trunk)
mailbox=5001
username=5001
#call-limit=1
callcounter=yes
qualify=u00
type=friend

[5002](trunk)
mailbox=5002
username=5002
callcounter=yes
qualify=u00
type=friend

[217](trunk)
mailbox=217
username=217
typr=friend
qualify=5000

[219](trunk)
mailbox=219
username=219
type=friend
qualify=5000

 

Однако при вызове выдает такой сценарий

 

-- Executing [5001@office:1] Verbose("SIP/5000-00000000", "1, ***** Вызов абонента 5001 *****") in new stack
 ***** Вызов абонента 5001 *****
   -- Executing [5001@office:2] Macro("SIP/5000-00000000", "limit,5001") in new stack
   -- Executing [s@macro-limit:1] Set("SIP/5000-00000000", "Group()=5001") in new stack
   -- Executing [s@macro-limit:2] Set("SIP/5000-00000000", "Calls=0") in new stack
   -- Executing [s@macro-limit:3] GotoIf("SIP/5000-00000000", "0?111") in new stack
   -- Executing [s@macro-limit:4] Dial("SIP/5000-00000000", "SIP/5001,20,tT") in new stack

 

Т.е. количество вызовов всегда 0! Что я делаю не так? Что нужно дописать или исправить?

Share this post


Link to post
Share on other sites

Ура! Ура! Ура! Заработало, как я и хотел!

 

[macro-limit-group] 
exten=>s,1,Set(GROUP()=${ARG1}) 
exten=>s,n,Set(CALLS=${GROUP_COUNT(${GROUP()})}) 
exten=>s,n,GotoIf($[${CALLS}>1]|?inuse) 
exten=>s,n,Dial(SIP/${ARG1},20,tT) 
exten=>s,n(inuse),Set(DIALSTATUS=BUSY) 


[office] 
exten => _5XXX,1,Macro(limit-group,${EXTEN})

Share this post


Link to post
Share on other sites

Ура! Ура! Ура! Заработало, как я и хотел!

 

[macro-limit-group] 
exten=>s,1,Set(GROUP()=${ARG1}) 
exten=>s,n,Set(CALLS=${GROUP_COUNT(${GROUP()})}) 
exten=>s,n,GotoIf($[${CALLS}>1]|?inuse) 
exten=>s,n,Dial(SIP/${ARG1},20,tT) 
exten=>s,n(inuse),Set(DIALSTATUS=BUSY) 


[office] 
exten => _5XXX,1,Macro(limit-group,${EXTEN})

 

А call-limit=1чем не подошёл?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this