Changes between Version 3 and Version 4 of FunctionsSipRouting


Ignore:
Timestamp:
Jan 27, 2022, 6:50:14 PM (3 years ago)
Author:
alx
Comment:

Добавлено описание маршрутизации по from URI, обновлены картинки.

Legend:

Unmodified
Added
Removed
Modified
  • FunctionsSipRouting

    v3 v4  
    1313Но что делать, если требуется, например, вызовы абонентов, номера которых начинаются с цифры 1, направлять в одну АТС, вызовы абонентов, номера которых начинаются с цифры 9 - в другую АТС, а все остальные вызовы - в третью? В этом случае поможет функция маршрутизации SIP.
    1414
    15 Прокси-сервер платы VE-01 имеет таблицу маршрутов SIP. Каждый маршрут состоит из двух основных частей - регулярного выражения, на совпадение с которым проверяется цель (target) запроса SIP, и строки, которой заменяется цель в случае совпадения. В маршрутах SIP используются [https://www.pcre.org/ Perl Compatible Regular Expressions] (начиная с прошивки платы ревизии 41, в прошивках до ревизии 41 использовались регулярные выражения POSIX). Благодаря этому механизму можно организовать желаемую схему подключения:
     15Прокси-сервер платы VE-01 имеет таблицу маршрутов SIP. Каждый маршрут состоит из двух основных частей - регулярного выражения, на совпадение с которым проверяется цель (target URI) запроса SIP, и строки, которой заменяется цель в случае совпадения. В маршрутах SIP используются [https://www.pcre.org/ Perl Compatible Regular Expressions] (начиная с прошивки платы ревизии 41, в прошивках до ревизии 41 использовались регулярные выражения POSIX). Благодаря этому механизму можно организовать желаемую схему подключения:
    1616
    1717[[Image(dia2.png)]]
     
    2525[[Image(ss1.jpg)]]
    2626
    27 На этой вкладке отображается таблица маршрутов, содержащая регулярное выражение URI, замену URI и комментарий. Также для случаев, когда требуется определенный порядок проверки маршрутов, у каждого маршрута имеется поле "Порядок", значение которого определяет приоритет маршрута: проверки выполняется в порядке возрастания значения. Для добавления маршрутов в таблицу служит кнопка "Добавить маршрут" над таблицей. Также для каждого маршрута в таблице имеются кнопки "Редактировать маршрут" и "Удалить маршрут".
     27На этой вкладке отображается таблица маршрутов, содержащая регулярное выражение target URI, замену target URI и комментарий. Для случаев, когда требуется определенный порядок проверки маршрутов, у каждого маршрута имеется поле "Порядок", значение которого определяет приоритет маршрута: проверки выполняется в порядке возрастания значения. Также каждый маршрут имеет необязательные поля "Регулярное выражение from URI" и "Комментарий". Для добавления маршрутов в таблицу служит кнопка "Добавить маршрут" над таблицей. Также для каждого маршрута в таблице имеются кнопки "Редактировать маршрут" и "Удалить маршрут", расположенные в столбце "Действия" справа.
    2828
    2929В данном примере в таблице маршрутизации установлено два маршрута. Первый маршрут имеет регулярное выражение `^sip:(1.*)@10.0.0.3`, которому удовлетворяют SIP URI, имя пользователя которых начинается с цифры 1, а имя хоста - "10.0.0.3". Имя пользователя в этом выражении заключено в круглые скобки для того чтобы подставить его в новый URI в процессе замены. В качестве замены в этом маршруте указана строка `sip:\1@10.0.0.1`. Вместо имени пользователя в этом URI стоит комбинация "\1", предписывающая подставить вместо нее подстроку, соответствующую фрагменту регулярного выражения, заключенного в круглые скобки.
     
    6363[[Image(ss3.jpg)]]
    6464
    65 Как нетрудно заметить, с регулярными выражениями обоих маршрутов совпадает один и тот же URI - `sip:111@192.168.1.67`.
    66 
    67  //Примечание: используемый платой VE-01 прокси-сервер не позволяет создать несколько маршрутов с одним и тем же регулярным выражением. Чтобы обойти это ограничение регулярное выражение второго маршрута было изменено таким образом, чтобы, тем не менее, сохранить его смысл - с регулярным выражением должен совпадать только URI `sip:111@192.168.1.67`.//
     65Как нетрудно заметить, с регулярным выражением обоих маршрутов совпадает один и тот же URI - `sip:111@192.168.1.67`.
    6866
    6967Изображенная на рисунке конфигурация маршрутов работает следующим образом. При получении вызова URI `sip:111@192.168.1.67` прокси-сервер ищет в таблице маршрутов записи, с регулярными выражениями которых совпадает вызываемый URI. Так как вызываемый URI совпадает с регулярными выражениями обоих маршрутов, прокси-сервер последовательно выполняет вызовы найденных маршрутов, пока вызов не окажется успешным (пока вызываемый абонент не ответит на вызов, и прокси-сервер получит "200 OK") или пока не кончатся найденные маршруты. В данном примере сначала будет сформирован вызов URI `sip:102@127.0.0.1`, который поступит на телефон главного бухгалтера. Если он ответит на вызов, состоится разговор, и обработка вызова на этом завершится. Если же главбух отклонит вызов (например уже занят другим разговором, или включил режим "не беспокоить"), прокси-сервер, получив ответ "486 Busy here", перейдет к следующему маршруту и сформирует вызов URI `sip:105@127.0.0.1`, который поступит на телефон зама.
     
    7472
    7573Описанное в предыдущем примере поведение прокси-сервера может быть изменено отметкой чекбокса "Параллельный вызов маршрутов", расположенного на вкладке "Маршруты SIP" диалога конфигурации платы VE-01. При его отметке найденные в таблице маршруты обрабатываются не последовательно, а параллельно (одновременно). Так, при получении вызова URI `sip:111@192.168.1.67` прокси сервер направит INVITE и на URI `sip:102@127.0.0.1`, и на URI `sip:105@127.0.0.1`, в результате чего телефоны главбуха и его зама будут звенеть одновременно. Разговор состоится при снятии трубки любого из телефонов, при этом другой аппарат звенеть перестанет. Данная конфигурация маршрутов работает подобно функции "Группы вызова".
     74
     75=== Маршрутизация с учетом вызывающего ===
     76
     77Как правило, при маршрутизации вызовов имеет значение только номер вызываемого абонента, вызывающий же абонент на выбор маршрута никакого влияния не оказывает. Однако в некоторых случаях может оказаться полезным учитывать при маршрутизации также и вызывающего абонента. Для подобных случаев маршруты SIP имеют необязательное поле "Регулярное выражение from URI". Если задать в этом поле непустую строку, маршрут будет действовать только при одновременном совпадении URI поля From принятого запроса SIP с регулярным выражением "Регулярное выражение from URI" и совпадении вызываемого URI с регулярным выражением "Регулярное выражение target URI". Если же в поле "Регулярное выражение from URI" содержится пустая строка, поверка URI поля From не производится, и маршрут действует для любого URI вызывающего абонента, как это было в примерах, рассмотренных выше.
     78
     79Рассмотрим еще один пример. Предположим, что в организации есть два отдела - отдел X и отдел Z. Номера телефонов сотрудников отдела X начинаются с цифры 5, номера телефонов сотрудников отдела Z начинаются с цифры 7. Также предположим, что имеется две телефонные линии, обслуживающие исходящие телефонные вызовы. Требуется, чтобы сотрудники отдела X совершали исходящие вызовы только через первую линию, а сотрудники отдела Z - только через вторую.
     80
     81Для решения данной задачи создадим два маршрута, которые будут добавлять к номерам, вызываемым сотрубниками отдела X, префикс "X-", а к номерам, вызываемым сотрудниками отдела Z - префикс "Z-". Пример таких маршрутов показан на рисунке:
     82
     83[[Image(ss4.jpg)]]
     84
     85В поле "Регулярное выражение from URI" первого из маршрутов содержится регулярное выражение `^sip:5`, благодаря чему маршрут действует только для исходящих вызовов от сотрудников отдела X, номера которых начинаются с цифры 5. Второй маршрут в том же поле содержит регулярное выражение `^sip:7` и, таким образом, действует только для вызовов от сотрудников отдела Z. Регулярное выражение target URI первого маршрута совпадает с любыми SIP URI, не имеющими префикса "X-" (имя пользователя в которых не начинается с комбинации символов "X-"). Выражения же замены target URI добавляет префикс "X-" сразу после "sip:". Аналогично, второй маршрут добавляет префикс "Z-" всем target URI, не начинающимся с этого префикса.
     86
     87В завершении остается только настроить канальные окончания FXO так, чтобы они принимали только вызовы со "своим" префиксом. Для этого в поле "Рег. выражение вызова" канального окончания, обслуживающего линию отдела X, запишем регулярное выражение `^X-`, а в это же поле канального окончания, обслуживающего линию отдела Z, запишем регулярное выражение `^Z-`. Так как канальные окончания FXO игнорируют нецифровые символы в номере вызываемого абонента, префиксы "X-" и "Z-" не нарушат процесс передачи номера в телефонную линию.