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

[РЕШЕНО] Asterisk call-limit Странная рекция на reject

Здравствуйте, есть пиры на Asterisk 1.4 с call-limit=1. На входящие звонки лимит настроен по принципу:

 

[macro-customer-incoming]
exten => s,1,Set(GROUP()=${MACRO_EXTEN})
exten => s,n,Set(CALL-LIMIT=1)
exten => s,n,ExecIf($[${GROUP_COUNT(${GROUP()})} > ${CALL-LIMIT}]|Busy)
exten => s,n,Dial(SIP/${MACRO_EXTEN})
exten => s,n,Hangup()

 

А вот в ситуации, когда клиент сделал исходящий звонок, и ему поступает входящий звонок, получаем:

 

[2013-10-09 17:01:01] ERROR[6032] chan_sip.c: Call to peer '<peer>' rejected due to usage limit of 1
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Couldn't call <peer>
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Executing [<peer>@<incoming-channel>:2] NoOp("<bla-bla-bla>", "***** Dialstatus: CHANUNAVAIL *****") in new stack

 

При этом не отрабатывается macros, ну оно и понятно, но даже если на входящие написать:

 

exten => <peer>,1,Dial(SIP/${EXTEN})
exten => <peer>,n,NoOp(***** Dialstatus: ${DIALSTATUS} *****)
exten => <peer>,n,ExecIf($[${DIALSTATUS} = "CHANUNAVAIL"]|Busy)
exten => <peer>,n,Hangup()

 

Reject отрабатывает первый, реакции на CHANUNAVAIL нет:

 

[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Executing [<peer>@<incoming-channel>:1] Dial("SIP/<bla-bla-bla>", "SIP/501") in new stack
[2013-10-09 17:01:01] ERROR[6032] chan_sip.c: Call to peer '501' rejected due to usage limit of 1
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Couldn't call <peer>
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Executing [<peer>@<incoming-channel>:2] NoOp("SIP/<bla-bla-bla>", "***** Dialstatus: CHANUNAVAIL *****") in new stack
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Executing [<peer>@<incoming-channel>:3] ExecIf("SIP/<bla-bla-bla>", "0|Busy") in new stack
[2013-10-09 17:01:01] VERBOSE[6032] logger.c: [2013-10-09 17:01:01]     -- Executing [<peer>@<incoming-channel>:4] Hangup("SIP/<bla-bla-bla>", "") in new stack

 

 

Так вот, в итоге, при звонки с других операторов, система выдает либо "Номер не существует" (Beeline), либо "Короткий Пи" и сброс (Megafon).

Может кто сталкивался с проблемой, или есть возможность сменить call-limit action/signal на Busy?

Edited by a-zazell

Share this post


Link to post
Share on other sites

а зачем вы мешаете кислое с пресным ?

 

зачем там в конфиге call-limit=1 если вы макросом тот лимит более красиво делаете ?

Share this post


Link to post
Share on other sites

зачем там в конфиге call-limit=1 если вы макросом тот лимит более красиво делаете ?

 

Макрос работает в общем контексте на Входящие звонки к клиенту, он не ограничивает Исходящие от клиента вызовы, это делает call-limit.

Share this post


Link to post
Share on other sites

call-limit не нужно использовать, он deprecated в актуальных версиях.

Рекомендую срочно обновить.

Share this post


Link to post
Share on other sites

Макрос работает в общем контексте на Входящие звонки к клиенту, он не ограничивает Исходящие от клиента вызовы, это делает call-limit.

Вы либо оба раза макросами делайте либо call-limit увеличивайте.

 

что мешает сделать макрос для исходящих exten => s,1,Set(GROUP()=${CALLERID(number)}) ?

Edited by io123

Share this post


Link to post
Share on other sites

Вы либо оба раза макросами делайте либо call-limit увеличивайте.

что мешает сделать макрос для исходящих exten => s,1,Set(GROUP()=${CALLERID(number)}) ?

 

Сегодня попробую, отпишусь. А так увеличил сразу call-limit до 2ух.

Share this post


Link to post
Share on other sites

Убрал call-limit и поправил контекст пиров на:

 

[CONTEXT_A]
exten => _X.,1,Set(GROUP()=${CALLERID(num)})
exten => _X.,n,Set(CALLS=${GROUP_COUNT(${GROUP()})})
exten => _X.,n,ExecIf($[ ${CALLS} > 1 ]|Congestion)
;exten => _X.,n,NoOp(*** ${GROUP_COUNT(${GROUP()})} ***)
exten => _X.,n,Goto(CONTEXT_B,${EXTEN},1)
exten => _X.,n,Hangup

а входящая для пиров обрабатывается макросом:

 

[macro-MACROS]
...
exten => s,n,Set(GROUP()=${MACRO_EXTEN})
exten => s,n,Set(CALLS=${GROUP_COUNT(${GROUP()})})
exten => s,n,ExecIf($[ ${CALLS} > 1]|Busy)
...

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