Перейти до вмісту

Трансляція номерів

Цей переклад зроблено автоматично і ще не вичитано. Читати англійську версію

Трансляція номерів змінює номер того, хто дзвонить (CLI), і набраний номер (CLD) дзвінка, поки він проходить через комутатор. Клієнти набирають номери за власними звичками: з 00, 011, +, у національному форматі або з технічним префіксом. Вендори теж хочуть отримувати номери у своєму форматі. Правила трансляції перетворюють формат клієнта на один внутрішній формат перед тарифікацією й маршрутизацією, а внутрішній формат — на формат кожного вендора на виході. Тоді вашим тарифам і маршрутам термінації потрібен лише один набір префіксів.

Правила трансляції: п’ять вхідних кроків перед тарифікацією й маршрутизацією, два вихідні кроки для кожного підключення

Правило трансляції — це текстове поле в кількох об’єктах. Комутатор застосовує їх у фіксованому порядку, і кожен крок працює з результатом попереднього.

  1. Правило автентифікації DID. Дзвінок, що надходить на DID від вашого DID-провайдера, отримує CLI Translation Rule (правило трансляції CLI) відповідного правила в DID Pool (пул DID).
  2. Правило автентифікації. Дзвінок, автентифікований за правилом акаунта, отримує CLD Tr. Rule (правило трансляції CLD) цього правила, а потім його CLI Tr. Rule (правило трансляції CLI).
  3. Правило після автентифікації. Коли в акаунта є правило після автентифікації, що збігається з віддаленим IP, CLI або CLD (у вже зміненому вигляді), застосовуються його правила для CLI і CLD. Ці правила керуються лише через API. Дивіться Правила після автентифікації.
  4. Акаунт. CLD Translation Rule (правило трансляції CLD) акаунта, а потім його CLI Translation Rule. Клас акаунта може задати обидва правила наперед під час створення акаунтів. Для дзвінка на DID CLD потім замінюється номером DID, зміненим за DID Translation Rule (правило трансляції DID) цього DID, тому правило CLD акаунта на такі дзвінки не впливає; правило CLI — впливає.
  5. Зовнішній скрипт. Якщо для середовища встановлено виконуваний файл external_translator, він отримує номери й може змінити їх, додати вартість або відхилити дзвінок. Дивіться Переписування CLI і CLD зовнішнім скриптом.

CLD, що виходить із кроку 5, — це номер, за яким комутатор тарифікує й маршрутизує дзвінок. Потім комутатор пробує підключення групи маршрутизації одне за одним, і для кожного підключення:

  1. Підключення (крок 6 на схемі). CLD Translation Rule і CLI Translation Rule підключення змінюють номери, що надсилаються цьому вендору. Кожне підключення починає з тих самих внутрішніх номерів, тож правило одного підключення ніколи не впливає на наступне.
  2. Вихідний скрипт (крок 7). Якщо встановлено виконуваний файл external_translator_outbound, він має останнє слово щодо CLI і CLD, які надсилаються вендору.

Ще кілька правил використовують той самий синтаксис для інших значень: P-Asserted-Id Translation Rule (правило трансляції P-Asserted-Id) акаунта та Identity Tr. Rule (правило трансляції ідентичності) підключення для заголовків ідентичності абонента, Diversion Header Tr. Rule (правило трансляції заголовка Diversion) підключення та LRN Translation Rule (правило трансляції LRN) групи маршрутизації для результату запиту перенесення номерів.

Об’єкт Поля Де їх задати
DID DID Translation Rule, CLI Translation Rule кожного правила автентифікації DIDs & IVR Apps → DID Pool. Дивіться Пул DID
Правило автентифікації CLD Tr. Rule, CLI Tr. Rule Actions → Authentication Rules акаунта. Дивіться Акаунти
Правило після автентифікації cli_translation_rule, cld_translation_rule XML-RPC API. Дивіться Керування правилами після автентифікації
Акаунт CLD Translation Rule, CLI Translation Rule Форма акаунта. Дивіться Акаунти
Клас акаунта CLD Tr. Rule, CLI Tr. Rule My Customers → Account Classes
Підключення CLD Translation Rule, CLI Translation Rule Number Translation у формі підключення. Дивіться Підключення

Правило може бути одним із трьох варіантів:

  • Порожнє. Номер залишається без змін.
  • Підстановка, що починається з s/. Вона шукає в номері збіг із регулярним виразом і замінює знайдене.
  • Будь-що інше — це фіксоване значення. Правило 123456 замінює будь-який номер на 123456, яким би він не був.
s/<pattern>/<replacement>/
s/<pattern>/<replacement>/g

Без прапорця замінюється лише перший збіг; прапорець g замінює всі збіги. Інших прапорців немає, і правило з іншою літерою після останнього / недійсне. Шаблон — це регулярний вираз у синтаксисі Python. Він збігається в будь-якому місці номера, якщо ви не прив’яжете його через ^ (початок) або $ (кінець).

Правило Номер Результат
s/^011// 01138056123456 38056123456
s/^/+/ 442079460123 +442079460123
s/1/x/ 1213 x213
s/1/x/g 1213 x2x3

Щоб об’єднати кілька підстановок в одному правилі, розділіть їх символом ;. Вони виконуються зліва направо, кожна з результатом попередньої. Пробіли навколо ; і ; у кінці ігноруються.

Правило Номер Результат
s/^00//;s/^/+/ 00442079460123 +442079460123
s/^44/222/;s/^2222/55/ 442333222111 55333222111

Другий приклад показує підводний камінь: 44 стає 222, і новий номер починається з 2222, тому друга підстановка знову його змінює. Коли наступна підстановка не повинна бачити результат попередньої, позначте результат символом, який ніколи не трапляється в номерах, і приберіть позначку наприкінці. Дивіться Кілька правил послідовно.

Коротко про регулярні вирази

Розділ «Коротко про регулярні вирази»
Елемент Що збігається
^, $ Початок і кінець номера
. Будь-який один символ
\d, \D Цифра, не цифра
[0-5], [+#], [^0] Один символ із набору або не з нього
{7}, {8,10}, {,9} Рівно 7, від 8 до 10, до 9 попередніх елементів
*, +, ? Нуль або більше, один або більше, нуль або один
(…) Група, яку можна повторно використати в заміні
a|b a або b
(?!…) Лише якщо текст, що йде далі, не збігається
\+, \., \* Буквальний +, . або *

У заміні \1–\9 вставляють групи шаблону. Пишіть \g<1>, коли за групою йде цифра: \g<1>0000 додає чотири нулі, тоді як \10000 означало б групу 10.

Заміна може містити ${R:[<characters>]<count>}. Щоразу, коли правило виконується, комутатор вставляє <count> символів, вибраних випадково зі списку. Список містить окремі символи й діапазони, розділені комами; типове значення <count> — 1. Усередині одного макросу кілька списків можуть іти один за одним.

Правило Можливий результат
s/.*/${R:[0-3,6]5}/ 16020: п’ять символів із 0, 1, 2, 3, 6
s/.*/+17266${R:[0-9]8}/ +1726677763170
s/$/${R:[1-9]1[0-9]4}/ Номер, за яким іде одна цифра від 1 до 9 і чотири від 0 до 9
  • Символ / не може з’являтися в шаблоні чи заміні, навіть екранований: комутатор розбиває правило за кожним /.
  • Правило має бути дійсним для будь-якого номера. Шаблон, що не компілюється, або заміна, що посилається на відсутню групу, — це помилка, навіть якщо номер не збігся б.

Панель перевіряє синтаксис правила, коли ви зберігаєте форму, і не приймає недійсне правило. Щоб побачити, що правило робить із певним номером:

  • Викличте applyTranslationRule із правилом і зразком номера. Метод повертає результат, нічого не змінюючи.
  • Відкрийте Tools & Debugs → Test Dialplan (перевірка плану набору) і змоделюйте дзвінок. Рядок 0 у Routing Entries (записи маршрутизації) показує CLI і CLD після вхідних правил акаунта; кожен рядок маршруту показує їх після правил підключення.
  • Translation Rule (правило трансляції) — правило на основі регулярного виразу, що змінює номер того, кому дзвонять, або того, хто дзвонить, перед тарифікацією чи маршрутизацією.
  • CLI (номер того, хто дзвонить) — номер абонента (ANI), що передається з дзвінком.
  • Authentication Rule (правило автентифікації) — правило, яке зіставляє вхідні дзвінки з акаунтом за віддаленим IP, CLI, CLD або доменом.
  • Connection (підключення) — SIP-шлюз вендора з власним хостом, автентифікацією та ємністю.

Клієнти набирають міжнародні номери по-різному

Розділ «Клієнти набирають міжнародні номери по-різному»

Виберіть один внутрішній формат, наприклад E.164 без +: 442079460123. Задайте кожному акаунту чи правилу автентифікації правило CLD, яке дає цей формат: s/^011// для клієнта в Північній Америці, s/^00// для клієнта в Європі, s/^\+// для АТС, що надсилає +. Тоді ставки й маршрути термінації використовують лише префікси на кшталт 44.

Двоє вендорів хочуть той самий номер у різних форматах

Розділ «Двоє вендорів хочуть той самий номер у різних форматах»

Не змінюйте внутрішній номер і задайте формат для кожного підключення. Британський оператор, що приймає національні номери, отримує s/^44/0/ (02079460123), міжнародний оператор, якому потрібен +, отримує s/^/+/ (+442079460123). Дзвінок, що не вдався на першому підключенні, доходить до другого вже в другому форматі.

Дзвінок завершується помилкою 403 Invalid CLD translation

Розділ «Дзвінок завершується помилкою 403 Invalid CLD translation»

У вхідному правилі є помилка. Число в дужках підказує, де саме: (1) — правило автентифікації, (3) — акаунт, (6) — правило після автентифікації. Те саме стосується Invalid CLI translation: (2) — правило автентифікації, (4) — акаунт, (5) — DID. Недійсне правило підключення не призводить до помилки дзвінка; комутатор пропускає це підключення й пробує наступне. Дивіться Коди відповідей SIP.

Пов’язані сторінки

Розділ «Пов’язані сторінки»