Определение CallerID и CalledID — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Шаг. Установка сценария)
 
(не показано 18 промежуточных версии этого же участника)
Строка 1: Строка 1:
 
[[Практики|Наверх]]
 
[[Практики|Наверх]]
  
Идентификация абонента в системе Oktell при входящем звонке зачастую происходит по таким характеристикам, как '''CallerId''' и '''CalledId'''.  
+
__TOC__
* CallerId - номер звонящего.   
+
 
* CalledId - набранный номер.
+
Идентификация абонента в системе '''Oktell''' при входящем звонке часто происходит по таким характеристикам, как '''CallerId''' и '''CalledId'''.  
 +
* '''CallerId''' - номер звонящего.   
 +
* '''CalledId''' - набранный номер.
  
 
'''Пример''': Клиент '''89171234567''' набрал номер компании Телефонные Системы '''84952294989'''. '''Oktell''' определяет ''CallerId = 89171234567'' и ''CalledId = 84952294989''.  
 
'''Пример''': Клиент '''89171234567''' набрал номер компании Телефонные Системы '''84952294989'''. '''Oktell''' определяет ''CallerId = 89171234567'' и ''CalledId = 84952294989''.  
  
В этой статье разбираются случаи, если эти параметры не соответствуют действительности, их значения отличны от реальных.  
+
В этой статье разбираются случаи, если эти параметры не соответствуют действительности, их значения отличны от реальных. Неправильное определение полностью зависит от вида SIP-пакета с INVITE-запросом от внешнего шлюза (провайдер, оборудование).  
  
=== Стандартные средства ===  
+
== Источник определения CallerId ==
  
Если при работе в Oktell замечено некорректное распознавание CallerId  
+
Если при работе в '''Oktell''' замечено некорректное распознавание '''CallerId''', вы можете попробовать изменить '''Источник определения CallerId''' в SIP-пакете.
  
=== Сценарий преобразования CallerId ===
+
* Зайдите в '''Администрирование''' - '''Параметры аппаратуры'''.
 +
* Перейдите настройки шлюза. Измените параметр "'''Источник определения CallerId'''". Параметр влияет на распознавание '''CallerId''' в принятом INVITE-пакете. Выберите одно из трех значений (каждое значение - это поле в пакете INVITE):
 +
:* '''From: Uri'''
 +
:* '''From: DispayName'''
 +
:* '''Contact: Uri'''
 +
 
 +
Нажмите "'''Сохранить'''".
 +
 
 +
[[Файл:Сценарий преобразования CallerID-001.png |center | 700px]]
 +
 
 +
 
 +
В случае, если ни один из этих вариантов не обеспечивает нужного результата, необходимо использовать ''Служебный сценарий преобразования CallerId''.
 +
 
 +
 
 +
== Сценарий преобразования CallerId ==
 +
 
 +
===Шаг. Разбор SIP-пакета===
 +
 
 +
Определите, что во входящем SIP-пакете вообще присутствует искомый '''CallerId''' или '''CalledId'''.
 +
 
 +
Все поступающие SIP-пакеты записываются в '''trn'''-лог. Лог располагается по пути '''server\log\hardware\sip'''. Откройте лог за текущую дату и найдите вид INVITE-пакета.
 +
 
 +
'''Ключевые слова:''' RECV, FROM {Внешний IP-адрес}, INVITE
 +
 
 +
По виду '''INVITE'''-пакета вы сможете определить:
 +
* приходит ли правильная информация
 +
* в каком поле располагается '''CallerID''' и корректно определить его в модуле "Параметры аппаратуры"
 +
* в каком поле располагается '''CalledID''' и программно переопределить его.
 +
 
 +
На рисунке показан пример SIP-пакета, в котором в поле '''INVITE''' подставлен некорректный '''CalledId'''. Необходимо программно переопределить '''CalledId'''. 
 +
 
 +
 
 +
[[Файл:Сценарий преобразования CallerID-002.png |center ]]
 +
 
 +
 
 +
===Шаг. Сохранение SIP-сообщения===
 +
 
 +
В модуле "'''Параметры аппаратуры'''" в настройках шлюза (см. выше) установите параметру "'''Источник определения CallerId'''" в значение "'''Сообщение полностью'''". Нажмите "'''Сохранить'''".
 +
 
 +
 
 +
[[Файл:Сценарий преобразования CallerID-003.png |center | 700px]]
 +
 
 +
 
 +
===Шаг. Создание сценария===
 +
 
 +
Перейдите в '''Администрирование''' - '''Сценарии'''. Создайте служебный сценарий "'''Преобразование CallerId и CalledId'''". Вид сценария показан ниже:
 +
 
 +
 
 +
[[Файл:Сценарий преобразования CallerID-004.png |center ]]
 +
 
 +
 
 +
'''1.''' Компонент "'''Старт'''". Задан параметр запуска - переменная '''CallerID''' (строковая). В нее будет записан полностью весь текст SIP пакета.
 +
 
 +
'''2.''' Компонент "'''CalledID'''" - парсит SIP-пакет и определяет значение '''CalledID''' (строковая) из поля "'''To:'''". Используются регулярные выражения:
 +
 
 +
To:\s<sip:([^@]+)
 +
 
 +
'''3.''' Компонент "'''CallerID'''" - определяет '''CallerID''' из поля "'''Contact:'''". Используются регулярные выражения:
 +
 
 +
Contact:\s<sip:([^@]+)
 +
 
 +
<FONT color="red">ВНИМАНИЕ:Не обязательно использовать только поле Contact. Вы также можете самостоятельно найти DisplayName и Uri и использовать их.</FONT>
 +
 
 +
Как видим, хоть '''CallerID''' изначально правильно определялся в системе, но нам пришлось заново его определять, так как система записала полностью сообщение в эту переменную. Важно, что вначале определяется '''CalledId''', а затем '''CallerId'''.
 +
 
 +
 
 +
[[Файл:Сценарий преобразования CallerID-006.png | center]]
 +
 
 +
 
 +
'''4.''' Компонент "'''8+Called'''" - фактически, приводит '''CalledId''' к общепринятому 11-значному формату. Добавляет "'''8'''" к началу номера с помощью выражения:
 +
 
 +
'8'+[CalledID]
 +
 
 +
'''5.''' Компонент "'''8+Called'''" - действие, аналогично предыдущему. Компонент
 +
 
 +
'8'+[CalledID]
 +
 
 +
'''6.''' Компонент "'''Возвращаемые значения'''" нужен чтобы ввести в систему найденные значения присваиваем
 +
* служебной переменной "'''Возвращаемое значение'''" значение переменной '''CallerID'''
 +
* служебной переменной "'''Возвращаемое значение 2'''" значение переменной '''CalledID'''
 +
 
 +
'''7.''' Компонент "'''Отладочное уведомление'''" выводит информацию о найденных значениях на экран. 
 +
 
 +
'[CalledID] '+[CalledID]+endline+
 +
'[CallerID] '+[CallerID]
 +
 
 +
'''8.''' Перейдите на вкладку '''Сохранение''' и сохраните сценарий  с помощью кнопки "'''На сервер'''".
 +
 
 +
 
 +
===Шаг. Установка сценария===
 +
 
 +
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария преобразования CallerID''. Нажмите "'''Сохранить'''".
 +
 
 +
 
 +
[[Файл:Сценарий преобразования CallerID-005.png |center ]]
 +
 
 +
 
 +
'''Скачать сценарий:''' [[Media:%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_CallerId_%D0%B8_CalledId.zip|Преобразование CallerId и CalledId.zip]]
  
 
'''Техническая документация:''' [[Сценарии_АТС#SvcCallerIdModify|Служебный сценарий преобразования CallerId]]
 
'''Техническая документация:''' [[Сценарии_АТС#SvcCallerIdModify|Служебный сценарий преобразования CallerId]]
 +
 +
Про компонент '''Парсер''' написано в статье: [[Компонент Парсер]]

Текущая версия на 11:20, 31 марта 2023

Наверх

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

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

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

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

Источник определения CallerId

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

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

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

Сценарий преобразования CallerID-001.png


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


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

Шаг. Разбор SIP-пакета

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

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

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

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

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

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


Сценарий преобразования CallerID-002.png


Шаг. Сохранение SIP-сообщения

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


Сценарий преобразования CallerID-003.png


Шаг. Создание сценария

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


Сценарий преобразования CallerID-004.png


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

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

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

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

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

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

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


Сценарий преобразования CallerID-006.png


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

'8'+[CalledID]

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

'8'+[CalledID]

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

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

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

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

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


Шаг. Установка сценария

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


Сценарий преобразования CallerID-005.png


Скачать сценарий: Преобразование CallerId и CalledId.zip

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

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