Определение CallerID и CalledID — различия между версиями
м (→Шаг. Установка сценария) |
|||
(не показано 10 промежуточных версии этого же участника) | |||
Строка 3: | Строка 3: | ||
__TOC__ | __TOC__ | ||
− | Идентификация абонента в системе '''Oktell''' при входящем звонке | + | Идентификация абонента в системе '''Oktell''' при входящем звонке часто происходит по таким характеристикам, как '''CallerId''' и '''CalledId'''. |
* '''CallerId''' - номер звонящего. | * '''CallerId''' - номер звонящего. | ||
* '''CalledId''' - набранный номер. | * '''CalledId''' - набранный номер. | ||
Строка 16: | Строка 16: | ||
* Зайдите в '''Администрирование''' - '''Параметры аппаратуры'''. | * Зайдите в '''Администрирование''' - '''Параметры аппаратуры'''. | ||
− | * Перейдите настройки шлюза. Измените параметр "'''Источник определения CallerId'''". Параметр влияет на распознавание '''CallerId''' в принятом INVITE-пакете. Выберите одно из трех значений: | + | * Перейдите настройки шлюза. Измените параметр "'''Источник определения CallerId'''". Параметр влияет на распознавание '''CallerId''' в принятом INVITE-пакете. Выберите одно из трех значений (каждое значение - это поле в пакете INVITE): |
− | :* From: Uri | + | :* '''From: Uri''' |
− | :* From: DispayName | + | :* '''From: DispayName''' |
− | :* Contact: Uri | + | :* '''Contact: Uri''' |
Нажмите "'''Сохранить'''". | Нажмите "'''Сохранить'''". | ||
Строка 27: | Строка 27: | ||
В случае, если ни один из этих вариантов не обеспечивает нужного результата, необходимо использовать ''Служебный сценарий преобразования CallerId''. | В случае, если ни один из этих вариантов не обеспечивает нужного результата, необходимо использовать ''Служебный сценарий преобразования CallerId''. | ||
+ | |||
== Сценарий преобразования CallerId == | == Сценарий преобразования CallerId == | ||
Строка 34: | Строка 35: | ||
Определите, что во входящем SIP-пакете вообще присутствует искомый '''CallerId''' или '''CalledId'''. | Определите, что во входящем SIP-пакете вообще присутствует искомый '''CallerId''' или '''CalledId'''. | ||
− | Все поступающие SIP-пакеты записываются в trn-лог. Лог располагается по пути '''server\log\hardware\sip'''. Откройте лог за текущую дату и найдите вид INVITE-пакета. | + | Все поступающие SIP-пакеты записываются в '''trn'''-лог. Лог располагается по пути '''server\log\hardware\sip'''. Откройте лог за текущую дату и найдите вид INVITE-пакета. |
'''Ключевые слова:''' RECV, FROM {Внешний IP-адрес}, INVITE | '''Ключевые слова:''' RECV, FROM {Внешний IP-адрес}, INVITE | ||
Строка 59: | Строка 60: | ||
===Шаг. Создание сценария=== | ===Шаг. Создание сценария=== | ||
− | Перейдите в '''Администрирование''' - '''Сценарии'''. Создайте служебный сценарий "Преобразование CallerId и CalledId". Вид сценария показан ниже: | + | Перейдите в '''Администрирование''' - '''Сценарии'''. Создайте служебный сценарий "'''Преобразование CallerId и CalledId'''". Вид сценария показан ниже: |
Строка 78: | Строка 79: | ||
Как видим, хоть '''CallerID''' изначально правильно определялся в системе, но нам пришлось заново его определять, так как система записала полностью сообщение в эту переменную. Важно, что вначале определяется '''CalledId''', а затем '''CallerId'''. | Как видим, хоть '''CallerID''' изначально правильно определялся в системе, но нам пришлось заново его определять, так как система записала полностью сообщение в эту переменную. Важно, что вначале определяется '''CalledId''', а затем '''CallerId'''. | ||
+ | |||
+ | |||
+ | [[Файл:Сценарий преобразования CallerID-006.png | center]] | ||
+ | |||
'''4.''' Компонент "'''8+Called'''" - фактически, приводит '''CalledId''' к общепринятому 11-значному формату. Добавляет "'''8'''" к началу номера с помощью выражения: | '''4.''' Компонент "'''8+Called'''" - фактически, приводит '''CalledId''' к общепринятому 11-значному формату. Добавляет "'''8'''" к началу номера с помощью выражения: | ||
Строка 96: | Строка 101: | ||
'[CallerID] '+[CallerID] | '[CallerID] '+[CallerID] | ||
− | 8. Перейдите на вкладку '''Сохранение''' и сохраните сценарий с помощью кнопки "'''На сервер'''". | + | '''8.''' Перейдите на вкладку '''Сохранение''' и сохраните сценарий с помощью кнопки "'''На сервер'''". |
− | ===Шаг | + | |
+ | ===Шаг. Установка сценария=== | ||
Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария преобразования CallerID''. Нажмите "'''Сохранить'''". | Перейдите в '''Администрирование''' - '''Общие настройки''' - '''Сценарии АТС''' и укажите созданный сценарий в качестве ''Служебного сценария преобразования CallerID''. Нажмите "'''Сохранить'''". | ||
Строка 105: | Строка 111: | ||
[[Файл:Сценарий преобразования CallerID-005.png |center ]] | [[Файл:Сценарий преобразования 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.
Сценарий преобразования CallerId
Шаг. Разбор SIP-пакета
Определите, что во входящем SIP-пакете вообще присутствует искомый CallerId или CalledId.
Все поступающие SIP-пакеты записываются в trn-лог. Лог располагается по пути server\log\hardware\sip. Откройте лог за текущую дату и найдите вид INVITE-пакета.
Ключевые слова: RECV, FROM {Внешний IP-адрес}, INVITE
По виду INVITE-пакета вы сможете определить:
- приходит ли правильная информация
- в каком поле располагается CallerID и корректно определить его в модуле "Параметры аппаратуры"
- в каком поле располагается CalledID и программно переопределить его.
На рисунке показан пример SIP-пакета, в котором в поле INVITE подставлен некорректный CalledId. Необходимо программно переопределить CalledId.
Шаг. Сохранение SIP-сообщения
В модуле "Параметры аппаратуры" в настройках шлюза (см. выше) установите параметру "Источник определения CallerId" в значение "Сообщение полностью". Нажмите "Сохранить".
Шаг. Создание сценария
Перейдите в Администрирование - Сценарии. Создайте служебный сценарий "Преобразование 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. Перейдите на вкладку Сохранение и сохраните сценарий с помощью кнопки "На сервер".
Шаг. Установка сценария
Перейдите в Администрирование - Общие настройки - Сценарии АТС и укажите созданный сценарий в качестве Служебного сценария преобразования CallerID. Нажмите "Сохранить".
Скачать сценарий: Преобразование CallerId и CalledId.zip
Техническая документация: Служебный сценарий преобразования CallerId
Про компонент Парсер написано в статье: Компонент Парсер