Понимание преобразования номеров

Понимание преобразования номеров
S
Автор Sergiiy
Обновлено 6 месяцев назад

Преобразование номеров играет очень важную роль в современном мире VoIP, позволяя взаимодействовать сетям с различными и часто конфликтующими соглашениями о нумерации. В идеальном мире был бы только один стандарт нумерации, и все бы его придерживались, но, к сожалению, в реальном мире это не так.

Даже если рассматривать старую простую телефонную сеть общего пользования, почти в каждой стране существуют свои несовместимые стандарты для набора местных, междугородных и международных номеров. С годами к этому привыкли, так что любой VoIP-провайдер, желающий предоставлять услуги клиентам в разных странах, столкнется с необходимостью как-то компенсировать эти различия и обеспечить единый план нумерации в системе, при этом позволяя пользователям набирать номера в разных странах. как они привыкли.

Так же, как и пользователи, многие операторы VoIP по разным причинам требуют от своих клиентов совершать звонки с использованием каких-то «странных» планов нумерации (страновых планов, технических префиксов и т.д.). Чтобы справиться со всеми этими реальными сценариями, Softswitch предоставляет гибкий механизм преобразования номеров, задачей которого является компенсация различий в привычках набора номера отдельных пользователей и обеспечение соблюдения требований поставщика. На приведенной ниже диаграмме показано, как различные преобразования номеров CLD применяются во время типичного вызова.

  1. Клиент набирает номер в своем SIP-телефоне. Он вводит номер телефона в том же формате, что и на обычном телефоне. Номер доставляется на Софтсвитч, который выполняет аутентификацию, в результате которой идентифицируется соответствующий Аккаунт в системе. В приведенном выше примере клиент, который физически находится в Ванкувере, Канада, хочет позвонить по номеру 123456 в Днепр, Украина. 
  2. После идентификации вызывающего Пользователя Софтсвитч транслирует номер, используя Правило перевода CLD, специфичное для этой учетной записи. В приведенном выше примере этот процесс приводит к удалению префикса международного набора 011. CLD становится 380-56-123456 — номер в формате E.164.
  3. Затем Softswitch передает полученный номер в логику маршрутизации, которая создает список возможных направлений (подключений) для завершения вызова. В приведенном выше примере было идентифицировано два таких Соединения — Соединение «А» и Соединение «В».
  4. Вызываемый номер в формате E.164 передается механизму маршрутизации вместе с набором соединений, которые могут принять этот вызов, вместе с правилами трансляции CLD, соответствующими каждому из этих соединений. Механизм маршрутизации пытается отправить вызов каждому из этих подключений до тех пор, пока оно не будет подключено или пока не останется подключений, которые можно было бы попробовать. В приведенном выше примере в процессе попытки достичь конечного пункта назначения для звонка софтсвитч сначала пытается отправить его на соединение А, которое соответствует шлюзу, подключенному к ТфОП в той же области, где находится номер назначения. Следовательно, применение правила преобразования CLD для соединения A удаляет код страны и местный код из номера E.164, и он становится просто 123456 (4a). Звонок почему-то не проходит, так что Софтсвитч ловит следующее Соединение, Соединение Б, из списка маршрутизации. Соединение B соответствует шлюзу, подключенному к PSTN в той же стране, но с другим кодом города. Опять же, прежде чем отправить вызов на этот шлюз, Softswitch принимает CLD в формате E.164 и объединяет соответствующее правило CLD Translation Rule, которое в этом случае удаляет код страны (380) и заменяет его кодом междугородного доступа (80). CLD становится 80-56-123456.

Как работает перевод чисел 


Softswitch построен с учетом того, что все номера внутри системы имеют формат E.164, то есть код страны, код города, затем местный номер, за которым следует необязательный добавочный номер. Однако, как объясняется в предыдущем разделе, в реальном мире вызовы будут поступать в некоторых пользовательских форматах, которые необходимо преобразовать в E.164, а также поставщики, вероятно, ожидают отправки CLD в каком-то другом формате.

В целях выполнения преобразований учетной записи в E.164, а затем E.164 в специфичных для поставщика, система предоставляет три различные функции, позволяющие преобразовывать вызываемый или вызывающий номер на разных этапах распространения вызова через коммутатор. В Softswitch доступно 6 основных типов перевода чисел:

  • Преобразование входящего номера адресата в правиле аутентификации . Настраивается на уровне правила проверки подлинности, применяется к вызываемому номеру после соответствия конкретному правилу проверки подлинности и перед преобразованием номера для каждой учетной записи. Настраивается с помощью параметра правила трансляции CLD в правилах аутентификации учетной записи или с помощью параметра правила трансляции CLD в настройках DID (начиная с версии 4.5)
  • Преобразование входящего номера вызывающего абонента в правиле аутентификации . Настраивается на уровне правила проверки подлинности, применяется к номеру вызывающего абонента после соответствия конкретному правилу проверки подлинности и перед преобразованием номера для каждой учетной записи. Настраивается с помощью параметра правила трансляции CLI в правилах аутентификации учетной записи или с помощью параметра правила трансляции CLI в правилах аутентификации DID.
  • Преобразование входящего номера адресата для каждой учетной записи . Настраивается для каждой учетной записи, применяется к вызываемому номеру до принятия каких-либо решений о рейтинге вызовов и маршрутизации. Настраивается с помощью параметра учетной записи правила преобразования CLD для каждой учетной записи.
  • Преобразование входящих номеров для каждой учетной записи . Настраивается для каждой учетной записи, применяется к вызывающему номеру до принятия каких-либо решений о рейтинге вызовов и маршрутизации. Настраивается с помощью двух параметров для каждой учетной записи: CLI и Force CLI. Если Force CLI включен, то CLI всех входящих вызовов, соответствующих этому Пользователю, будет заменен значением параметра CLI.
  • Преобразование номера исходящего адресата . Настраивается для каждого соединения, применяется к вызываемому номеру, полученному после применения правила преобразования входящего вызываемого номера и после принятия решений о рейтинге и маршрутизации, но до того, как вызов будет отправлен на это конкретное соединение. Настраивается с помощью параметра правила преобразования CLD для каждого соединения или исходящего CLD в магистралях.
  • Преобразование исходящего номера . Настраивается для каждого соединения, применяется к исходному вызывающему номеру перед отправкой вызова на это конкретное соединение. Настраивается с помощью параметра правила трансляции CLI для каждого подключения.

Синтаксис правила перевода 


Правила перевода указываются либо в виде номеров замены, либо в виде набора регулярных выражений с синтаксисом Python в следующих двух формах:

    • s/<match what>/<replace with>/
    • s/<match what>/<replace with>/g


Первый будет сопоставлять/заменять одно совпадающее вхождение или шаблон, а первый — все вместе. В одном правиле перевода можно использовать несколько выражений; в этом случае они должны быть разделены точкой с запятой («;»).

В <match what> есть несколько «специальных» символов, которые позволяют определить правила сопоставления, например, ^ соответствует началу строки, а $ — ее концу, так что, например, ^1 будет соответствовать только 1 как первому символу строки. строка, в то время как 9$ будет соответствовать только 9 в качестве последнего символа.

Например, можно использовать следующее правило перевода, чтобы удалить начальный префикс 011 из номера:

  • s/^011//


Правило перевода добавит префикс 53872:

  • s/^/53872/


В то время как следующее правило приведет к замене номера на 123456 во всех случаях безоговорочно.

  • 123456

Перевести все не 10-значные CLI в новый и обойти CLI с другой длиной

  • s/^.{0,9}$/0123456789/

Исключить + перед номером:

  • s/^[+]//

Добавить 1 к любой последовательности из 10 символов:

  • s/^(.{10})$/1\1/

Проверить, содержит ли число «пробел» ИЛИ «-» (тире) ИЛИ «.» (точка) и замените все на «block»:

  • s/^.*([ ]|\-|\.).*$/block/

Найдите пробел в числе и удалите его:

  • 's/[ ]//'

Если номер не начинается с префикса 14, то замените его на «BLOCK»:

  • 's/^(?!(14)).*$/BLOCK/'

Генерация случайных чисел:

Чтобы заменить исходное значение 5 случайными символами, каждый из которых может быть 0, 1, 2, 3 и 6:

  • s/.*/${R:[0-3,6]5}/

Чтобы получить переведенное число с некоторым постоянным префиксом и телом с числами из некоторого диапазона:

Пример:

prefix +17266

body - any number from 00000001 to 99999999

  • s/.*/+17266${R:[0-9]7}/

Сгенерировать 1 из 6 случайных чисел

  • s/.*/${R:[a-f]1}/; s/^a/+919995346432/; s/^b/+919995000100/; s/^c/+919846000012/; s/^d/+919746532512/; s/^e/+919783252017/; s/^f/+919230456789/;
Оцените эту статью