Покритикуйте/подскажите по failover trunking
Сообщений: 16
|
Покритикуйте/подскажите по failover trunking
Здравствуйте.
Имеется следющая схема звонков на мобильные телефоны:
УАТС -> * -> GSM-шлюз -> если Busy -> обратно в УАТС с префиксом -> отрезать префикс на УАТС и кинуть в PRI.
Аналогично ходят SIP-клиенты, вместо УАТС AddPac-и.
exten => _98050XXXXXXX,1,Macro(GSM,${EXTEN})
exten => _8050XXXXXXX,1,Macro(GSM,${EXTEN})
[macro-GSM]
exten => s,1,GotoIf($[${ARG1:0:1}=9]?2:7)
exten => s,2,Set(CDR(userfield)=GSM-GW)
exten => s,3,Dial(SIP/${ARG1:1}@2513)
exten => s,4,Set(CDR(userfield)=OS7200-CO)
exten => s,5,Dial(SIP/6${ARG1}@9000)
exten => s,6,Goto(11)
exten => s,7,Set(CDR(userfield)=GSM-GW)
exten => s,8,Dial(SIP/${ARG1}@2513)
exten => s,9,Set(CDR(userfield)=OS7200-CO)
exten => s,10,Dial(SIP/69${ARG1}@9000)
exten => s,11,Hangup()
2513 - пир GSM-шлюза
9000 - пир УАТС
Все, в принципе устраивает, но имеется полу-баг, полу-фича:
звонок уходит в gsm-шлюз, но у вызываемого абонента занято - * делает повторную попытку, отправляя вызов в УАТС, который снова отбивается. Аналогичная картина, если вызываемый абонент сбрасывает вызов, звонок повторно направляется ему через запасной маршрут. Не Бог весть как анноит, больше для общего развития.. Также буду раз конструктивной критике в сторону макроса.
|
Сообщений: 866
|
Re: Покритикуйте/подскажите по failover trunking
Надо уметь различать отбой ручками отбой из-за перегруженности сети...
А не факт что вы сможете их различить - это зависит как от оператора так и от шлюза. Но попробуйте посмотреть на HANGUPCAUSE/DIaLSTATUS после dial.
Вообще, зачем при BUSY перезванивать - непонятно, мобильник же не освободится от того что вы другим путем пойдете. Это имеет смысл тольо при CONGESTION imho.
Также буду раз конструктивной критике в сторону макроса.
Откройте для сеюя AEL :) И макросы будут читаться (да и писаться) в разы легче. (Оффтопик, конечно, знаю)
|
Сообщений: 866
|
Re: Покритикуйте/подскажите по failover trunking
Все-таки есть конструктивная критика!
У вас копипаст жестий - макро состоит из двух идентичных веток, отличающихся только тем что в первой ветке номер начинается с девяти а во второй - нет.
Проще оставить одну ветку (без девятки) и отрезать эту девытку перед вызовом макроса:
exten => _98050XXXXXXX,1,Macro(GSM,${EXTEN:1})
exten => _8050XXXXXXX,1,Macro(GSM,${EXTEN})
|
Сообщений: 16
|
Re: Покритикуйте/подскажите по failover trunking
dimas: Надо уметь различать отбой ручками отбой из-за перегруженности сети...
А не факт что вы сможете их различить - это зависит как от оператора так и от шлюза. Но попробуйте посмотреть на HANGUPCAUSE/DIaLSTATUS после dial.
Ясно..
Вообще, зачем при BUSY перезванивать - непонятно, мобильник же не освободится от того что вы другим путем пойдете. Это имеет смысл тольо при CONGESTION imho.
Вообще-то я об этом и веду речь, мне нужно перезванивать (точнее, идти другим маршрутом), если gsm-шлюз занят. А вот "занят", как раз, расползается и на случай занятости шлюза, и на случай сброса звонка вызываемым абонентом, и на случай занятости вызываемого абонента..
|
Сообщений: 16
|
Re: Покритикуйте/подскажите по failover trunking
dimas: Все-таки есть конструктивная критика!
У вас копипаст жестий - макро состоит из двух идентичных веток, отличающихся только тем что в первой ветке номер начинается с девяти а во второй - нет.
Проще оставить одну ветку (без девятки) и отрезать эту девытку перед вызовом макроса:
exten => _98050XXXXXXX,1,Macro(GSM,${EXTEN:1})
exten => _8050XXXXXXX,1,Macro(GSM,${EXTEN})
Спасибо!
Это потому что в соседней ветке я спрашивал про шаблон, можно ли _98050XXXXXXX и _8050XXXXXXX объединить. Если бы оказалось, что можно, тогда в макросе (как на данный мромент) нужно было с ней разбираться..
|
Сообщений: 866
|
Re: Покритикуйте/подскажите по failover trunking
Неа :)
если бы оказалось что можно такой шаблон сделать, то первым делом в макросе нужнлы было бы девятку отрезать если она есть а дальше все равно обрабатывать номер без девятки.
|
Сообщений: 16
|
Re: Покритикуйте/подскажите по failover trunking
Согласен :-)
|
|