Re: Re[2]: Исходящая маршрутизация.

От: Dmitry Akindinov <CGatePro_at_mx_ru>
Дата: Tue 20 Jul 2010 - 23:22:25 MSD

Здравствуйте,

Andriy Harisios wrote:
> Tue, 20 Jul 2010 10:00:18 +0400 письмо от "Dmitry Akindinov" <CGatePro@mx.ru>:
>

>> Здравствуйте,
>>
>> Andriy Harisios wrote:
>>> Доброго дня всем.
>>>
>>> Столкнулись с неординарной ситуацией, не удается маршрутизировать исходящие звонки
>>> от определенного акаунта на определенный шлюз.
>>>
>>> Итак имеем:
>>>
>>> +38044XXXXXXX0   username:44X   pass:X1     sipgsteway:89.xxx.xxx.xxx  (шлюз1)
>>> +38032XXXXXXX0   username:32X   pass:X2     sipgsteway:89.xxx.xxx.xxx  (шлюз2)
>>>
>>> Телефоны регионально разнесены, тоисть один Львов второй Киев.
>>> Сейчас настроено таким образом.
>>> Пользователь набирает 044 и номер попадает на первый шлюз, набирает 032 на второй.
>>> Тут все работает как надо, проблема в том что нужно пере-настроить вот так:
>>>
>>> 1.Когда пользователь из аккаунта 44X набирает 2222222 звонок должен уходить на +38044XXXXXXX0,
>>> тоисть в маршрутизаторе создать правило маршрутизации от акаунта псевдонима или чего то такого.
>>>
>>> 2.Соответственно от пользователя 32X  при наборе 2222222 нужно чтоб уходил на +38032XXXXXXX0.
>>>
>>>
>>> 3.Акаунт 32X набрав 044   звонок должен уйти на +38044XXXXXXX0
>>>
>>> 4.Акаунт 44Х набрав 032   звонок должен уйти на +38032XXXXXXX0
>>>
>>> У кого так работает подскажите примером или покажите в каком направлении читать.  
>> Читать здесь: 
>> <http://www.communigate.com/CommuniGatePro/PSTN.html#LocalArea>
>>
>> Идея в том, что неполные номера должны направляться в скрипт 
>> localAreacall - скрипт достанет из настроек звонящено аккаунта его код 
>> страны и код города и превратит это всё в номер в формате E.164.
>>
>>> PS: Раньше был обыкновенный PSTN и набор производился так, сейчас перешли на IP линию,
>>> все привыкли звонить так, и набор префикса есть для них проблема.
>>>
>>> Спасибо.

>
>> -- 
>> Best regards,
>> Dmitry Akindinov -- Stalker Labs.

> -------------------------------------------
>
> Здравствуйте.
>
> Ссылку данную выше прочитали и изучили, но всеравно возникли некоторые нюансы.
>
> Настройки акаунтов.(дубль из прошлого письма но с немногим дополнением)
>
> +38044XXXXXXX0 username:44X pass:X1 sipgsteway:89.xxx.xxx.xxx (шлюз1)
> +38032XXXXXXX0 username:32X pass:X2 sipgsteway:89.xxx.xxx.xxx (шлюз2)
>
> -----------------------------------------------------------------------------
> В аккаунте +38044XXXXXXX0 в PSTN настройках прописано:
>
>
> Local Area Code: 38044(*)

Должно быть 38(044)

> Emergency Code:
> Gateway Domain: {SIP_38044XXXXXXX0=kiev.tel.ua;}
> Gateway Address: {SIP_38044XXXXXXX0=89.xxx.xxx.xxx;}

А на втором шлюзе (38032...) тоже нужен аккаунт (а здесь - настройки для него) если надо, чтобы пользователь мог звонить в 032 через шлюз в этой зоне.

> Caller ID: {SIP_38044XXXXXXX0=SIP_38044XXXXXXX0@kiev.tel.ua;}
> Name for Gateway: {SIP_38044XXXXXXX0=44X;}
> Pass for Gateway: {SIP_38044XXXXXXX0=X1;}
> Billing Plan:
> -----------
> В настройкаx пользователя: TEL NUMBERRS:38044XXXXXXX0
> -----------------------------------------------------------------------------
> В аккаунте +38032XXXXXXX0 в PSTN настройках прописано:
>
>
> Local Area Code: 38032(*)

38(032)

> Emergency Code:
> Gateway Domain: {SIP_38032XXXXXXX0=kiev.tel.ua;}
> Gateway Address: {SIP_38032XXXXXXX0=89.xxx.xxx.xxx;}
> Caller ID: {SIP_38032XXXXXXX0=SIP_38032XXXXXXX0@kiev.tel.ua;}
> Name for Gateway: {SIP_38032XXXXXXX0=32X;}
> Pass for Gateway: {SIP_38032XXXXXXX0=X2;}

Аналогично здесь - описать шлюз для 044.

> Billing Plan:
> -----------
> В настройкаx пользователя: TEL NUMBERRS:38032XXXXXXX0
> -----------------------------------------------------------------------------
> В ROUTER прописано:
>
> <(7d)@*> = (7d)@telnum

Вместо этого -

S:<(7d)@*> = localAreaCall{*}#postmaster@localhost

Если же все семизначные номера по умолчанию считаются киевскими, то можно такую запись использовать:

S:<(7d)@*> = +38032*@telnum

Не знаю, как у вас сейчас принято набирать номера для междугородних (в другой area code), но допуская, что для этого можно просто использовать десятизначные номера, можно добавить такую запись:

S:<(10d)@*> = localAreaCall{*,c}#postmaster@localhost

Вместо этого, если все такие номера предполагаются украинскими (на сервере нет аккаунтов, у которых area code был бы, например, российским или польским), можно записать:

<(10d)@*> = +38*@telnum

Результатом этой и двух предыдущих (с сиспользованием скрипта localAreaCall) записей будет то, что неполные номера при звонках из локальных аккаунтов будут ппреобразованы в глобально уникальные номера в формате E.164 (+ код_страны код_города номер), которые можно роутить через telnum. Соответственно, аккаунтам, которым можно присвоить настоящий номер из PSTN, присваивать его надо именно в формате E.164, то есть +38032XXXXXXX.
> <(8-15d)@*> = (8-15d)@telnum

Это просто неправильно в правой части, а с учётом вышесказанного (все полные номера должны быть в стандартном формате), запись будет выглядеть так:

<+(8-15d)@*> = +*@telnum
<(11-15d)@*> = +*@telnum

> S:telnum = pstn

Вот после этой записи всё, что не было найдено среди присвоенных локальным аккаунтам телефонных номеров (в формате E.164), будет отправлено в pstn. Теперь опишем, как эти звонки в pstn будут выполняться.

; киевские номера через шлюз в Киеве, просто конец номера без кодов S:<+38032*@pstn> = gatewaycaller{*,SIP_38032XXXXXXX0}#postmaster@localhost

;львовские номера через шлюз во Львове, передаём номер без кода страны и без кода города
S:<+38044*@pstn> = gatewaycaller{*,SIP_38044XXXXXXX0}#postmaster@localhost

;все звонки внутри Украины передаём в местный шлюз с префиксом, ;который используется этим шлюзом для межгорода S:<+38*@pstn> = gatewaycaller{0*,SIP_38032XXXXXXX0}#postmaster@localhost

;все международные звонки передаём в местный шлюз с нужным префиксом, например 010
S:<+*@pstn> = gatewaycaller{010*,SIP_38032XXXXXXX0}#postmaster@localhost

Всё.

> S:<(7d)@pstn> = localAreaCall{*,c,SIP_38044XXXXXXX0}#pbx
> S:<(7d)@pstn> = localAreaCall{*,c,SIP_38032XXXXXXX0}#pbx

Это вы плохо прочитали...

> -----------------------------------------------------------------------------
>
> Теперь о проблемах в настройке.
>
> Local Area Code: 38044
> Работет только в таком формате 38044(*), с параметром с,
> во всех других вариантах только две первый цифры, так
> должно быть?

Эта настройка ожидается в формате country(area). Например, для московского номера +7(495)212-8506 там будет 7(495). А номер 2128506, набранный аккаунтом с такой настройкой, будет преобразован програмкой localAreaCall в +74952128506.

> Правила в маршрутизаторе обрабатываются с верху в низ, поeтому так как прописано выше
> все звонки уходят через SIP_38044XXXXXXX0,если поменять местами то через
> SIP_38032XXXXXXX0,как тут быть?
По разному роутить номера, который начинаются с разных кодов страны и кодов номера. А для этого сначала привести номера к стандартному формату.

> При возможносити покажите пример настройки, и еще раз о маршрутизации,
> аккаунт +38044XXXXXXX0 набрав семизначный номер должен маршрутизироватся через
> SIP_38044XXXXXXX0, а 38032XXXXXXX0 через SIP_38032XXXXXXX0
Рассмотрите немного другую логику: в зависимости от настроек аккаунта, семизначные номера преобразуются в полные номера в формате E.164. А уж потом решается, на какие шлюзы отправляются эти полные номера. Если каким-то аккаунтам надо запретить звонки в другие города или за пределы страны, то надо описать в PSTN настройках параметры для нескольких шлюзов (пусть даже они дублируются для нормальных аккаунтов), и для международного шлюза эти настройки "испортить".

> Спасибо.
> ------------------

-- 
Best regards,
Dmitry Akindinov -- Stalker Labs.
Получено Tue Jul 20 19:22:32 2010

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:16:53 MSK