Определение CallerID и CalledID

Материал из Oktell
Перейти к: навигация, поиск

Наверх

Идентификация абонента в системе Oktell при входящем звонке зачастую происходит по таким характеристикам, как CallerId и CalledId.

  • CallerId - номер звонящего.
  • CalledId - набранный номер.

Пример: Клиент 89171234567 набрал номер компании Телефонные Системы 84952294989. Oktell определяет CallerId = 89171234567 и CalledId = 84952294989.

В этой статье разбираются случаи, если эти параметры не соответствуют действительности, их значения отличны от реальных. Неправильное определение полностью зависит от вида SIP-пакета с INVITE-запросом от внешнего шлюза (провайдер, оборудование).

Стандартные средства

Если при работе в Oktell замечено некорректное распознавание CallerId, вы можете попробовать изменить Источник определения CallerId в SIP-пакете.

  • Зайдите в Администрирование - Параметры аппаратуры.
  • Перейдите настройки шлюза. Измените параметр "Источник определения CallerId". Параметр влияет на распознавание CallerId в принятом INVITE-пакете. Выберите одно из трех значений:
  • From: Uri
  • From: DispayName
  • Contact: Uri

Нажмите "Сохранить".

В случае, если ни один из этих вариантов не обеспечивает нужного результата, необходимо использовать Служебный сценарий преобразования CallerId.

Сценарий преобразования CallerId

Шаг 1. Определите, что во входящем SIP-пакете вообще присутствует искомый CallerId или CalledId.

Все поступающие SIP-пакеты записываются в trn-лог. Лог располагается по пути server\log\hardware\sip. Откройте лог за текущую дату и найдите вид INVITE-пакета.

Ключевые слова: RECV, FROM {Внешний IP-адрес}, INVITE

По виду INVITE-пакета вы сможете определить:

  • приходит ли правильная информация
  • в каком поле располагается CallerID и корректно определить его в модуле "Параметры аппаратуры"
  • в каком поле располагается CalledID и программно переопределить его.

На рисунке показан пример SIP-пакета, в котором в поле INVITE подставлен некорректный CalledId. Необходимо программно переопределить CalledId.

Шаг 2. В модуле "Параметры аппаратуры" в настройках шлюза (см. выше) установите параметру "Источник определения CallerId" в значение "Сообщение полностью". Нажмите "Сохранить".

Шаг 3. Перейдите в Администрирование - Сценарии. Создайте служебный сценарий "Преобразование CallerId и CalledId". Вид сценария показан ниже:

1. Компонент "Старт". Задан параметр запуска - переменная CallerID (строковая). В нее будет записан полностью весь текст SIP пакета.

2. Компонент "CalledID" - парсит SIP-пакет и определяет значение CalledID (строковая) из поля "To:". Используются регулярные выражения:

To:\s<sip:([^@]+) 

3. Компонент "CallerID" - определяет CallerID из поля "Contact:". Используются регулярные выражения:

Contact:\s<sip:([^@]+)

ВНИМАНИЕ:Не обязательно использовать только поле Contact. Вы также можете самостоятельно найти DisplayName и Uri и использовать их.

Как видим, хоть CallerID изначально правильно определялся в системе, но нам пришлось заново его определять, так как система записала полностью сообщение в эту переменную. Важно, что вначале определяется CalledId, а затем CallerId.

4. Компонент "8+Called" - фактически, приводит CalledId к общепринятому 11-значному формату. Добавляет "8" к началу номера с помощью выражения:

'8'+[CalledID]

5. Компонент "8+Called" - действие, аналогично предыдущему. Компонент

'8'+[CalledID]

6. Компонент "Возвращаемые значения" нужен чтобы ввести в систему найденные значения присваиваем

  • служебной переменной "Возвращаемое значение" значение переменной CallerID
  • служебной переменной "Возвращаемое значение 2" значение переменной CalledID

7. Компонент "Отладочное уведомление" выводит информацию о найденных значениях на экран.

'[CalledID] '+[CalledID]+endline+
'[CallerID] '+[CallerID]

8. Перейдите на вкладку Сохранение и сохраните сценарий с помощью кнопки "На сервер".

Шаг 4. Перейдите в Администрирование - Общие настройки - Сценарии АТС и укажите созданный сценарий в качестве Служебного сценария преобразования CallerID. Нажмите "Сохранить".


Техническая документация: Служебный сценарий преобразования CallerId

Про компонент Парсер написано в статье: Компонент Парсер