Конвертация номеров (модификаторы, преобразования к e.164)

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (22)

просмотр истории страницы
(!) *Известный баг: при сохранении просит выбрать NAS - выбираем любой, в результате проставится правильный*
!voip_phone_numbers_parser.png|border=0,width=800!


Для расчета стоимости и поиска абонентов по номеру в биллинге мы стараемся держать все номера в едином формате, по рекомендациям e.164, например: 74951122334

Поля записей:

1. * Имя - ваш комментарий, для чего вообще делается данное преобразование

2. * Порядок выполнения правил - задает порядок выполнения правил (важно учитывать, что если номер был изменен предыдущим правилом - в следующее он придет уже в новом формате, об этом позже)

3. * Regexp шаблон для номера - регулярное выражение для номера (применяется как для входящего, так и для исходящего номера по порядку). Советуем ставить якоря ^ в начале и $ в конце, чтобы четко задавать длину номера. Скобками можете указать часть номера, которую нужно сохранить. Если данное поле не будет совпадать с номером - правило не применяется


4. * Regexp шаблон для замены номера - трансформация номера. Значение \1 - заменится символами из первых скобок п.3

Следует сразу отметить, что для трансформации используется функция sub модуля re языка python. [https://docs.python.org/2/library/re.html#re.sub] Первым параметром идет п.3, вторым п.4, а третьим - номер.
* Regexp шаблон для поля ama-flags, Regexp шаблон для номера звонящего, Regexp шаблон для номера назначения - регулярные выражения, проверяющие поля у записи звонка. Если они не совпадут - правило не применяется. Пустое значение - результат будет всегда истинным, для проверки на пустоту нужно использовать \^$


5. Regexp шаблон для поля ama-flags, Regexp шаблон для номера звонящего, Regexp шаблон для номера назначения - регулярные выражения, проверяющие поля у записи звонка. Если они не совпадут - правило не применяется. Пустое значение - результат будет всегда истинным, для проверки на пустоту нужно использовать \^$

Правила применяются по очереди, отсортированной по приоритету (меньше - раньше). По шагам: берется первое правило, применяется для dst (номером телефона является номер назначения звонка), потом применяется для src (номер звонящего), далее берется следующее правило. Если п.3 или п.5 не подходят к звонку - правило пропускается.

Примеры:
{note}При сохранении просит выбрать NAS - выбираем любой, в результате проставится правильный{note}

1. У нас есть код выхода на линию 8 и 9. 8 используют абоненты из пула номеров с префиксом 888, а 9 с 999, номера семизначные:
h2. Примеры

h3. Используются различные кода выхода на линию для абонентов из разных пулов номеров
Используются два кода выхода на линию - "8" и "9". "8" используют абоненты из пула номеров с префиксом 888, а 9 с 999, номера семизначные:
{code}
правило1:
{code}

2. h3. Приходят номера с 8 или вообще без кода страны:
{code}
правило 1 (для замены 8 на 7):
{code}

h3. Аналогично первому примеру, но для кода 8 есть несколько определенных пулов
3. аналогично Аналогично первому примеру, только но для кода 8 есть несколько определенных пулов, у которых код города не 888, а 887 (это номера 7887300хххх и 7887400хххх, приходят без кода города):
{code}
правило1:
{code}

h3. Преобразование номеров без кода города
4. Все предыдущие правила отработали, но остались номера без кода города, поступаем так: если один номер идет с кодом, другой без, то назначаем аналогичный код.
{code}
правило1 (если номер 7мизначный, а в src номер с кодом).