К нам часто обращаются с просьбой разъяснить принцип обработки входящего и исходящего Caller ID в 3CX Phone System. В этой статье мы постараемся ответить на этот вопрос. Кроме того, мы опишем принцип работы функции, называемой Dictinctive Ring (отличительный звонок). Она нечастно используется в современных организациях, потому что ей на смену пришли возможности CRM интеграции. Однако, для быстрого понимания, откуда пришел вызов, отличительный звонок может быть полезен.
Внимание! В 3CX Phone System v14 SP3 вы можете отключить обработку Caller ID по формату E164 (см. скриншот ниже).
Для обработки входящего Caller ID 3CX использует параметры, указанные в разделе интерфейса Параметры — АТС – e164.
![image image](https://habrastorage.org/getpro/habr/post_images/2c4/31c/d1f/2c431cd1f83ceecf54eefcfd640b4d54.png)
3CX пытается определить тип вызова (номера), используя параметры, указанные в разделе Параметры — АТС – e164 (см. рис). Система проверяет входящий Caller ID слева направо.
Как система определяет, что номер, пришедший в международном формате, можно считать местным т.е. Caller ID принадлежит той же стране, в которой расположена система?
Если система видит, что Caller ID не принадлежит стране, в которой установлена система, т.е. номер имеет тип International (международный), — никакая обработка Caller ID не производится и он поступает на добавочный номер 3CX. Функция Distinctive Ringing (отличительного звонка), реализованная в 3CX, добавляет в вызову дополнительный заголовок Alert-info: international. IP телефон пользователя подаст сигнал в соответствии с настройками для международных вызовов.
Если система видит, что Caller ID принадлежит стране, в которой установлена система, то снова проверяется тип вызова: национальный (National) или городской (Local). При этом, если установлена опция Удалять, если в той же стране, проверяется только часть номера, не содержащая код страны.
Если Caller ID поступает в национальном формате, т.е. код региона не соответствует региону, в котором работает система (указанному в разделе Параметры — АТС – e164), никакая обработка номера не производится и он поступает на внутренний номер. Функция Distinctive Ringing добавляет в вызову дополнительный заголовок Alert-info: national. Номер поступает с отрезанной международной частью, поскольку была установлена опция Удалять, если в той же стране. IP телефон пользователя подаст сигнал в соответствии с настройками для национальных вызовов.
Если Caller ID начинается с кода региона, указанном в Параметры — АТС – e164, то он распознается как городской. Если установлена опция Удалять, если в том же регионе, Caller ID (с отрезанной интернациональной и национальной частью) поступает на добавочный номер 3CX. Функция Distinctive Ringing добавляет в вызову дополнительный заголовок Alert-info: local. IP телефон пользователя подаст сигнал в соответствии с настройками для городских вызовов.
3CX Phone System обрабатывает исходящий номер по Исходящим правилам, используя цифры набранного номера. В соответствии с совпавшим Исходящим правилом выбирается нужный маршрут (SIP линия или шлюз).
3CX Phone System должна явно определить, в каком SIP заголовке находится Caller ID. Для этого:
![image image](https://habrastorage.org/getpro/habr/post_images/9c5/0d0/a28/9c50d0a281f76cc5638089fa2da96a62.png)
Как определяется значение переменной OriginatorCallerID?
Изначально значение OriginatorCallerID не определено. Затем значение OriginatorCallerID задается параметром Исходящий Caller ID в настройках транка.
![image image](https://habrastorage.org/getpro/habr/post_images/fa2/84c/b92/fa284cb92b32b1645f1ddec6d617d6eb.png)
Затем, если добавочному номеру 3CX присвоен Внешний Caller ID, он присваивается переменной OriginatorCallerID.
![image image](https://habrastorage.org/getpro/habr/post_images/30e/e90/bd6/30ee90bd6f430e213585329026aacf73.png)
При этом действуют следующие правила:
После этого выполняется переформатирование исходящего Caller ID в соответствии с настройками транка.
Начиная с 3CX Phone System v.12 SP1 номер звонящего абонента (Caller ID) с порта, транка, VoIP шлюза или VoIP провайдера можно получить в том виде, в котором он требуется администратору системы. Также можно модифицировать и исходящий номер, т.е. передавать его на порт / транк / шлюз / провайдеру в требуемом виде.
Форматирование входящих и исходящих Caller ID делается единообразно. Чтобы сделать его корректно, объясним принципы форматирования номера / строки замены.
![image image](https://habrastorage.org/getpro/habr/post_images/e90/188/ace/e90188ace407733ee053f9657005763e.png)
Чтобы настроить модификацию Caller ID выполните следующие действия
1. Компании требуется, чтобы все международные американские номера были переформатированы в локальный формат. В этом случае достаточно простого правила
Source CID Pattern +(1)(…)(.*)
New Source CID Pattern 3
В этом примере
+ удаляется (игнорируется)
(1) соответсует коду страны США и передается в первой переменной 1
(…) соответстует трехзначному коду города и передается во второй переменной 2
(.*) соответсвует оставшимся цифрам номера и передается в третьей переменной 3
В нашем примере в новом переформатированном номере мы оставляем только третью переменную 3, что соответствует локальному номеру.
Было +12021234567, стало 1234567.
![image image](https://habrastorage.org/getpro/habr/post_images/b78/9c8/bb0/b789c8bb023ad31c0fa23422be87ba02.png)
2. Компании требуется привести номер к национальному формату и добавить 0 в начале номера для быстрого обратного звонка клиенту. Входящий Caller ID имеет такой вид +17864722245.
Source CID Pattern +(1)(…)(.*)
New Source CID Pattern 023
В этом примере
В начало номера добавляется 0.
Переменные 2 (786) и 3 (4722245) сохраняются, приводя номер к национальному формату.
Было +17864722245, стало 07864722245.
Внимание! В 3CX Phone System v14 SP3 вы можете отключить обработку Caller ID по формату E164 (см. скриншот ниже).
Обработка Caller ID входящего вызова
Для обработки входящего Caller ID 3CX использует параметры, указанные в разделе интерфейса Параметры — АТС – e164.
![image image](https://habrastorage.org/getpro/habr/post_images/2c4/31c/d1f/2c431cd1f83ceecf54eefcfd640b4d54.png)
3CX пытается определить тип вызова (номера), используя параметры, указанные в разделе Параметры — АТС – e164 (см. рис). Система проверяет входящий Caller ID слева направо.
Как система определяет, что номер, пришедший в международном формате, можно считать местным т.е. Caller ID принадлежит той же стране, в которой расположена система?
- Впереди находится знак +, за которым следует код страны, указанный в разделе Параметры — АТС – e164, или
- Впереди находится международный код набора, за которым следует код страны, указанный в разделе Параметры — АТС – e164, или
- Впереди находится код страны, указанный в разделе Параметры — АТС – e164.
Если система видит, что Caller ID не принадлежит стране, в которой установлена система, т.е. номер имеет тип International (международный), — никакая обработка Caller ID не производится и он поступает на добавочный номер 3CX. Функция Distinctive Ringing (отличительного звонка), реализованная в 3CX, добавляет в вызову дополнительный заголовок Alert-info: international. IP телефон пользователя подаст сигнал в соответствии с настройками для международных вызовов.
Если система видит, что Caller ID принадлежит стране, в которой установлена система, то снова проверяется тип вызова: национальный (National) или городской (Local). При этом, если установлена опция Удалять, если в той же стране, проверяется только часть номера, не содержащая код страны.
Если Caller ID поступает в национальном формате, т.е. код региона не соответствует региону, в котором работает система (указанному в разделе Параметры — АТС – e164), никакая обработка номера не производится и он поступает на внутренний номер. Функция Distinctive Ringing добавляет в вызову дополнительный заголовок Alert-info: national. Номер поступает с отрезанной международной частью, поскольку была установлена опция Удалять, если в той же стране. IP телефон пользователя подаст сигнал в соответствии с настройками для национальных вызовов.
Если Caller ID начинается с кода региона, указанном в Параметры — АТС – e164, то он распознается как городской. Если установлена опция Удалять, если в том же регионе, Caller ID (с отрезанной интернациональной и национальной частью) поступает на добавочный номер 3CX. Функция Distinctive Ringing добавляет в вызову дополнительный заголовок Alert-info: local. IP телефон пользователя подаст сигнал в соответствии с настройками для городских вызовов.
Обработка Caller ID исходящего вызова
3CX Phone System обрабатывает исходящий номер по Исходящим правилам, используя цифры набранного номера. В соответствии с совпавшим Исходящим правилом выбирается нужный маршрут (SIP линия или шлюз).
3CX Phone System должна явно определить, в каком SIP заголовке находится Caller ID. Для этого:
- Выберите необходимый SIP транк или ТфОП шлюз
- Перейдите в раздел Исходящие параметры
- Определите SIP поле, передающее Caller ID. Caller ID присваивается переменной OriginatorCallerID.
![image image](https://habrastorage.org/getpro/habr/post_images/9c5/0d0/a28/9c50d0a281f76cc5638089fa2da96a62.png)
Как определяется значение переменной OriginatorCallerID?
Изначально значение OriginatorCallerID не определено. Затем значение OriginatorCallerID задается параметром Исходящий Caller ID в настройках транка.
![image image](https://habrastorage.org/getpro/habr/post_images/fa2/84c/b92/fa284cb92b32b1645f1ddec6d617d6eb.png)
Затем, если добавочному номеру 3CX присвоен Внешний Caller ID, он присваивается переменной OriginatorCallerID.
![image image](https://habrastorage.org/getpro/habr/post_images/30e/e90/bd6/30ee90bd6f430e213585329026aacf73.png)
При этом действуют следующие правила:
- Если вызов поступил на добавочный номер как внешний входящий и снова вышел наружу. В этом случае номер звонящего снаружи (который был переформатирован в соответствии с параметрами, указанными в Параметры — АТС – e164) будет установлен в переменную OriginatorCallerID.
- Если вызов уходит на внешний номер при срабатывании правила переадресации на добавочном номере, либо вызов не делается непосредственно с этого добавочного номера, исходящий Caller ID будет перезаписан значением, которое уже содержится в поле OriginatorCallerID поступившего на этот добавочный номер вызова (оригинального вызова).
- Если вызов уходит при прямом наборе с добавочного номера (т.е. не используются никакие правила переадресации вызова), Caller ID не перезаписывается и отправляется как есть.
После этого выполняется переформатирование исходящего Caller ID в соответствии с настройками транка.
Форматирование входящего и исходящего Caller ID
Начиная с 3CX Phone System v.12 SP1 номер звонящего абонента (Caller ID) с порта, транка, VoIP шлюза или VoIP провайдера можно получить в том виде, в котором он требуется администратору системы. Также можно модифицировать и исходящий номер, т.е. передавать его на порт / транк / шлюз / провайдеру в требуемом виде.
Форматирование входящих и исходящих Caller ID делается единообразно. Чтобы сделать его корректно, объясним принципы форматирования номера / строки замены.
- ( ) Скобки– в них заключаются (отделяются друг от друга) группы цифр. Каждая группа присваивается переменной 1, 2, 3 … 9.
- (.*) – означает любую последовательность цифр. Эта строка должна указываться последней, т.к. все цифры и другие символы после нее будут игнорироваться.
- 0-9, + – Цфры 0-9 и + используются для указания совпадения соответствующего символа в Caller ID
- (xxx) –, где x – любая цифра в диапазоне 0-9. Например, если передается номер 0203123456 и вы указываете (0203), 3CX будет искать строку, которая точно совпадает с 0203.
- (.) – точка – замещает любой символ. Например, указав (…), вы заставите 3CX искать любые 3 цифры в номере. Так, если код города начинается с 3 и содержит 3 цифры, вы можете указать (3..)
- 1, 2, … 9 – эти строки замещаются содержимым переменных 1, 2, … 9
![image image](https://habrastorage.org/getpro/habr/post_images/e90/188/ace/e90188ace407733ee053f9657005763e.png)
Чтобы настроить модификацию Caller ID выполните следующие действия
- Перейдите в раздел SIP транки или PSTN шлюзы и выберите порт или транк, который следует настроить
- Кликнув на нужный порт, выберите раздел Другие параметры справа
- В разделе Изменить Caller ID вы можете настроить нужные правила для входящего и исходящего Caller ID
- Можно настроить несколько правил одновременно, и правило с более высоким приоритетом будет иметь преимущество
Примеры
1. Компании требуется, чтобы все международные американские номера были переформатированы в локальный формат. В этом случае достаточно простого правила
Source CID Pattern +(1)(…)(.*)
New Source CID Pattern 3
В этом примере
+ удаляется (игнорируется)
(1) соответсует коду страны США и передается в первой переменной 1
(…) соответстует трехзначному коду города и передается во второй переменной 2
(.*) соответсвует оставшимся цифрам номера и передается в третьей переменной 3
В нашем примере в новом переформатированном номере мы оставляем только третью переменную 3, что соответствует локальному номеру.
Было +12021234567, стало 1234567.
![image image](https://habrastorage.org/getpro/habr/post_images/b78/9c8/bb0/b789c8bb023ad31c0fa23422be87ba02.png)
2. Компании требуется привести номер к национальному формату и добавить 0 в начале номера для быстрого обратного звонка клиенту. Входящий Caller ID имеет такой вид +17864722245.
Source CID Pattern +(1)(…)(.*)
New Source CID Pattern 023
В этом примере
В начало номера добавляется 0.
Переменные 2 (786) и 3 (4722245) сохраняются, приводя номер к национальному формату.
Было +17864722245, стало 07864722245.
![image image](https://habrastorage.org/getpro/habr/post_images/d45/9bf/ab4/d459bfab46bc9d07763902a440ad2e04.png)