CommuniGate Pro
Версия 5.1
Сигналы
 
 
 
Обзор

Сигналы в Реальном Времени

Одной из основных функций Сервера CommuniGate Pro является поддержка коммуникаций в реальном времени. Играя роль Сервера Сигналов, Сервер получает Сигналы реального времени (Запросы) из различных источников (SIP модуль, внутренние сессии, "плечи звонков", внутренние компоненты ядра и т.д.). Сервер либо обрабатывает (терминирует) эти Запросы самостоятельно, либо доставляет их удалённым сторонам (через SIP протокол), либо направляет их во внутренние сессии и в "плечи звонков".

Для каждого Запроса, модуль Signal дополнительно может генерировать промежуточные Отклики (такие как "Trying" или "Ringing") и один завершающий Отклик.

Адреса Записей (AOR)

Пользователи могут настроить свои устройства (IP телефоны, средства для организации аудио/видео конференций, программы для передачи мгновенных сообщений) на подключение к выбранному SIP Серверу автоматически при наличии соединения с Интернет. Сервер регистрирует пользователей, запоминая их "SIP идентификаторы" и используемые ими сетевые (IP) адреса.

Каждый пользователь имеет уникальный "SIP идентификатор", называемый также AOR (Address of Record, Адрес Записи).

Каждый пользователь может иметь несколько активных регистраций если он имеет несколько коммуникационных устройств, находящихся в режиме онлайн (офисный IP телефон, рабочая станция, программы для обмена мгновенными сообщениями на ноутбуке и т.д.).

Регистрации позволяют SIP пользователям взаимодействовать друг с другом не зная сетевых адресов, используя только "SIP идентификаторы" (AORы).

AORы имеют тот же вид, что и адреса электронной почты: username@domainName. AORом пользователя CommuniGate Pro является его полное имя Пользователя, и таким образом, SIP AOR в точности совпадает с адресом электронной почты.

CommuniGate Pro использует компонент Маршрутизатор для всех операций реального времени, так что Псевдонимы, Переадресаторы и других механизмы Маршрутизации также будут работать и для Коммуникаций Реального Времени.


Сигналы

Сигнал является базовой Задачей Реального времени. Одна из участников коммуникаций Реального Времени отправляет Сигналы другому участнику для начала, изменения или прекращения коммуникационного диалога, изменения статуса и т.п.

Отправляющая сторона формирует объект с Запросом и посылает его в модуль Signal сервера CommuniGate Pro. Модуль Signal обрабатывает Запрос, отправляет, если требуется, Запросы другим участникам и возвращает объект с Откликом отправляющей стороне.

Многие модули и компоненты CommuniGate Pro могут использовать Сигналы:


Обработка Запросов

Когда модуль Signal получает Запрос, он вычисляет для него требуемый единообразный идентификатор ресурса URI. Он берет URI Запроса (или первый имеющийся Route URI из набора Route Запроса) и использует компонент Маршрутизатор для определения назначения Запроса. Далее существует несколько вариантов развития событий:

Следующая диаграмма иллюстрирует направление Сигналов в Сервере CommuniGate Pro:

Схема Сигналов

Автоматические Обработка (Правила)

После того, как адрес был обработан при помощи Маршрутизатора, но до того, как он был ретранслирован локальному или удалённому участнику, применяются Общие для Сервера и Общие для Кластера Правила Автоматической Обработки Сигналов.

Правила управляют ходом обработки запроса: они могут перенаправить его на другой адрес или отвергнуть Запрос.

С помощью Автоматических Правил обрабатываются только Запросы, инициирующие Диалог.


Подключение

Модуль Signal обслуживает наборы AOR (Адресов Записи) и Contact для каждого обрабатываемого Запроса. Модуль начинает процесс Подключения, обрабатывая адреса из набора AOR.

При получении во время обработки любого AOR отклика типа 2xx, обработка останавливается. Если Запрос имел тип INIVTE, то все невыполненные Запросы, ретранслированные на другие AOR, отменяются.

После обработки всех AOR, модуль возвращает "лучший" результат обработки источнику Запроса.

Если AOR, подлежащий обработке, Направляется на не локальный адрес, то этот адрес помещается в набор Contact.

Если AOR, подлежащий обработке, Направляется на локальную Группу, то все участники группы добавляются в набор AOR.

Если AOR, подлежащий обработке, Направляется на локального Пользователя, то все активные Регистрации Пользователя (зарегистрированные адреса устройств Пользователя) добавляются в набор Contact.

Если AOR уже существует в наборе AOR, то он не добавляется к набору AOR.

Если адрес уже существует в наборе Contact, то он не добавляется к набору Contact.

Модуль Signal проверяет каждый адрес и добавляет его к набору Contact.
Если новый адрес Contact является адресом Локального Узла, то Запрос передается на обработку в этот Узел.
Если новый адрес Contact является внешним адресом, то Запрос передается в SIP Модуль для релеинга.

Когда локальный или внешний участник возвращает Отклик типа Redirect, то модуль проверяет начальный AOR (URI Запроса).

Конфигурирование Компонента Signal

Для того, что бы настроить параметры модуля Signal, используйте Веб Интерфейс Администратора. Откройте в области Установки страницу Real-Time, затем откройте страницу Сигналы:

Обработка
Уровень Журнала: Процессоры: Ограничение:
Уровень Журнала
Используйте эту настройку для того, что бы указать, какую информацию компонент Signal должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты о ходе обработки Сигналов) или уровень Проблемы (сбои, отчёты о ходе обработки Сигналов и не фатальные ошибки). В случае, если в работе компонента Signal возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Системный Журнал будет записываться более подробная информация о внутренней работе компонента. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.
Записи, помещённые компонентом Signal в Журнал работы Сервера, имеют пометку SIGNAL.
Ограничение
Эта настройка определяет, какое количество "Задач" компонент Signal может обрабатывать одновременно. При превышении этого ограничения новые Сигналы отвергаются и отправителям Сигналов направляется Отклик с ошибкой.
Процессоры
Компонент Signal использует несколько одновременных процессоров (нитей) для обработки "задач" Сигналов. Один процессор может обрабатывать несколько задач Сигналов. Если вы используете большое количество Автоматических Правил, выполнение которых занимает относительно много времени, то вы должны разрешить компоненту использовать большее количество процессоров для обработки сигналов.

Отправка Сигналов от Пользователей

Сервер CommuniGate Pro для определённых Запросов требует авторизации пользователя.

Когда запросы отправляются удалённо через SIP, аутентификация выполняет в SIP Модуле.
Модули XIMSS и XMPP отправляют все Сигналы от имени зарегистрированного Пользователя, предварительно проведя аутентификацию.
Приложения Реального Времени отправляют Сигналы аутентифицировавшись от имени текущего Пользователя (если только Приложение не представляется как "никто").

Обработка
  Аутентифицировать все исходящие  
Аутентифицировать все исходящие
Если указана эта опция, то компонент Signal пытается проводить Маршрутизацию для всех адресов в полях From в запросах типа Call. Если адрес From является локальным адресом Пользователя и запрос не аутентифицирован, то компонент Signal отвергает его с кодом ошибки "authentication required".

Когда Сигнал типа call (начальный запрос INVITE с аудио/видео дескриптором сессии) аутентифицирован, Модуль Signal проводит дополнительную обработку аутентифицированного Пользователя.

Компонент Signal может ограничить число "звонков", которое Пользователь может совершать в течении указанного периода времени.

Ограничение Потока
Отвергать исходящие если сделано более за
Отвергать Исходящие звонки
Используйте эту опцию для того, что бы указать ограничения на максимальное число звонков за период времени, которое может совершать Пользователь. При попытке совершения большего количества звонков, они будут отвергаться без обработки.

Отправка Сигналов Пользователям

Если первый AOR в наборе (AOR, указанный в URI Запроса) является локальным адресом Пользователя, а Запрос имеет тип INVITE, то запрашивается регистрация устройства Пользователя и значения некоторых опций из Установок и Настроек Пользователя.

Пользователь может иметь Автоматические Правила по Обработке Сигналов, которые запрашиваются одновременно с регистрациями устройств Пользователя. Эти Правила, наряду с Правилами, Общими для Домена пользователя, применяются ко всем запросам, отправляемым Пользователю.

Компонент Signal управляет количеством "звонков" (начальных INVITE запросов с аудио/видео Дескрипторами Сессии), которые Пользователь может принимать в течении заданного интервала времени.

Ограничение Потока
Отвергать исходящие если сделано более за
Отвергать Входящие звонки
Используйте эту опцию для того, что бы указать ограничения на максимальное число звонков за период времени, которое может получать Пользователь. При получении большего количества Сигналов, они будут отвергаться без обработки.

Сервисные Звонки

Если запрос направлен на имя *nnnn в любой из локальных Доменов (где nnnn это любая последовательность, начинающаяся с десятичной цифры), то Запрос перенаправляется инициатору (на адрес Запроса From:).

Это возможность позволяет пользователю набирать *nnnn номера для получения от Сервера специальных услуг. Запрос направляется на Пользователя, у которого запускается приложение Авто-Ответа. Приложение обеспечивает требуемый сервис, получая значение набранной "опцию сервиса" из адреса To: Запроса.


Услуги Регистрации

Коммуникационные устройства, используемые пользователями CommuniGate Pro, должны зарегистрировать себя до того, как они смогут получать запросы от других участников.

Запросы на Регистрацию требуют проведения Аутентификации Пользователя.

При изменения регистраций Пользователя могут использоваться Полномочия другого Пользователя, если аутентифицированный Пользователь имеет право доступа Может выступать от имени других для соответствующего Домена.

Для того, что бы настроить Услуги Регистрации, откройте в области Установки страницу Real-Time и перейдите по ссылке Сигналы.

Услуги
Время Регистрации: Минимальное: По умолчанию: Максимальное:
MS RTC: Интегрировать с Ростером
Регистрация: Минимальное
Используйте эту опцию для задания минимального периода времени срока действия Регистрации.
Если Запрос на Регистрацию имеет более короткий период действия, то Запрос отвергается и отправляется Отклик со значением минимально допустимого периода времени. Участник (обычно - SIP устройство) может переслать Запрос на Регистрацию с исправленным сроком действия.
Регистрация: По умолчанию
Значение этой опции используется если в Запросе на Регистрацию не указан срок действия Регистрации.
Регистрация: Максимальное
Используйте эту опцию для задания максимального периода времени срока действия Регистрации.
Если Запрос на Регистрацию имеет более длительный срок годности, то срок укорачивается до указанного здесь значения.

Наборы Событий

Модуль Signal поддерживает несколько Наборов Событий. При получении Запроса SUBSCRIBE, предназначенного для локального Пользователя, модуль может обработать Запрос самостоятельно, не пересылая его зарегистрированным устройствам Пользователя.

Модуль Signal обслуживает "кортежи" состояний для каждого Пользователя и для каждого поддерживаемого Набора Событий. Модуль позволяет одному или нескольким устройствам обновлять "кортежи" и агрегирует их в единую для всего Набора "информацию о состоянии" Пользователя. Когда агрегированная "информация о состоянии" изменяется, модуль отправляет всем подписанным участникам запросы NOTIFY, содержащие обновлённое состояние.

Модуль Signal позволяет внешним участникам изменять "кортежи" используя запросы PUBLISH.

Модуль Signal позволяет внешним участникам изменять "кортежи" для определённых Наборов используя нестандартные запросы SERVICE.

Статус Присутствия

В Модуле Signal реализован Сервер Статуса Присутствия. Модуль поддерживает следующие форматы информации о Статусе Присутствия: PIDF, CPIM-PIDF и XPIDF.

Модуль Signal обеспечивает специальную обработку для запросов REGISTER. Если внешний участник (SIP устройство) указывает поддержку метода SUBSCRIBE, то модуль устанавливает с этим участником диалог подписки на статус присутствия.
Затем модуль обрабатывает все запросы NOTIFY, отправляемые этим участником для обслуживания "кортежа" или "сегмента" его Статуса Присутствия.

Значение сегмента статуса присутствия является одной из текстовых строк из фиксированного набора, перечисленных в порядке возрастания приоритета:

Агрегированное значение события - это значение сегмента с самым высоким приоритетом или значение Вне сети, если сегменты отсутствуют.

При формировании запроса NOTIFY агрегированное значение преобразовывается в документ статуса присутствия в одном из поддерживаемых форматов.

Сводка о Сообщениях

В Модуле Signal реализован сервис MWI (Индикация Ожидающих Сообщений). Модуль поддерживает формат представления Информации simple-message-summary.

Сервер самостоятельно обслуживает кортеж/сегмент "INBOX" для этого набора Событий. Значение сегмента являются
массивом:

Агрегированное значение события - это массив, содержащий поэлементную сумму всех значений массивов сегментов.

Когда формирует запрос NOTIFY, использующий информацию в формате simple-message-summary, то значение первого элемента агрегированного массива используется как число новых голосовых сообщений, а разница между значением второго и первого элементов используется как число старых голосовых сообщений.
Если значение первого элемента не равно нулю, то элемент Messages-Waiting устанавливается в значение yes; в противном случае оно сбрасывается в no.

Подписка на набор Сводка о Сообщениях возможна только для самого Пользователя и для Пользователей, обладающих Правами Доступа "Может выступать от имени других".

Регистрация

В Модуле Signal реализована Услуга Мониторинга за Регистрацией. Модуль поддерживает формат представления Информации reginfo+xml и может информировать участников, находящихся в сети (таких, как SIP клиенты) обо всех других устройствах, зарегистрированных за Пользователем.

Подписка на набор Регистрация возможна только для самого Пользователя и для Пользователей, обладающих Правами Доступа "Может выступать от имени других".


Локальные Узлы

Сервер CommuniGate Pro динамически создаёт, запускает и удаляет Узлы Реального Времени.

Узел - это внутренний объект Сервера CommuniGate Pro, который может получать Запросы Сигналов и давать Отклики на эти Запросы. Узел также может отправлять Запросы и обрабатывать Отклики.

Различные компоненты и модули CommuniGate Pro используют Узлы для работы с Сигналами:

Для того, что бы настроить параметры компонента Узлы, используйте Веб Интерфейс Администратора. Откройте в области Установки страницу Real-Time, затем откройте страницу Узлы:

Обработка
Уровень Журнала: Процессоры: Ограничение:
Уровень Журнала
Используйте эту настройку для того, что бы указать, какую информацию компонент Локальные Узлы должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (сбои и основные события) или уровень Проблемы (сбои, основные события и не фатальные ошибки). В случае, если в работе компонента Локальные Узлы возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Системный Журнал будет записываться более подробная информация о внутренней работе компонента. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.
Записи, помещённые ядром в журнал работы Сервера, имеют пометку SIGNODE.
Ограничение
Эта настройка определяет, какое количество Узлов компонент может обрабатывать одновременно. Если это число превышено, то попытки создать новый Узел приведут к ошибке.
Процессоры
Компонент Локальные Узлы использует несколько одновременных процессоров (нитей) для обработки "задач" Сигналов. Один процессор может обрабатывать несколько задач Узлов.
Если вы используете большое количество Узлов, операции которых занимают относительно много времени (Приложения Реального Времени и т.п.), то вы должны разрешить компоненту использовать большее количество процессоров.

Плечи Звонка

Сервер создаёт специальные Локальные Узлы, называемые Плечи Звонка. Каждое Плечо Звонка терминирует сигналы для одного телефонного звонка. Каждая Задачи PBX является Плечом Звонка и каждая XIMSS сессия может создавать одно или более Плечо Звонка для обслуживания телефонных звонков, инициированных или принятых в XIMSS сессии пользователя.

Настройки на панели Плечи Звонков применяются для всех типов Плечей Звонков:

Плечи Звонков
Тайм-аут: Минимальное: По умолчанию:
Ограничение Релеинга:
Объявлять UPDATE:
Тайм-аут
Используйте эту настройку для указания частоты обмена сторонами запросами INVITE (или OPTION) для проверки того, что звонок не разъединился.
Ограничение Релеинга
Используйте эту настройку для задания значения поля Max-Forwards для запросов, отправляемых в Плечах Звонка.

Детализированная Информация о Звонках (CDR)

Модуль Signal может генерировать Детализированную Информацию о Звонках об обработанных им транзакциях INVITE и BYE.

CDR может генерироваться и храниться в файлах Журнала CDR.
Файлы Журнала CDR создаются в поддиректории CDR внутри поддиректории SystemLogs директории данных Сервера.
Файлы Журнала CDR являются текстовыми файлами, каждая запись находится на отдельной строке. Каждая строка имеет следующий формат:
hh:mm:ss.ddd cdr_data
где hh - это час, mm - минута, ss - секунда, а ddd - миллисекунда того момента, когда была создана запись CDR; cdr_data - это данные CDR.
Наблюдение
Записывать CDR
Записывать CDR
Выберите эту опцию для того, что бы включить созданий файлов Журнала CDR.

Когда включена программа Помощник Внешний Обработчик CDR, то модуль Signal генерирует CDR и отправляет его в эту программу.

CDR данные имеют следующий формат:
01 NNN-method <callID><fromTag><toTag> <from><to> [reqIP][respIP] flags
где:
01
версия используемого формата CDR
NNN
код выполнения транзакции (цифровой)
Method
операция/метод транзакции (INVITE, BYE).
callID, fromTag, toTag
Идентификатор диалога (поле Call-ID, поле From параметр tag, поле To параметр tag).
Обратите внимание: Если вызов прерван вызываемым абонентом, то fromTag транзакции BYE совпадает с toTag транзакции INVITE и наоборот.
from, to
URI поле From и To транзакции.
reqIP
сетевой (IP) адрес, с которого получен был получен запрос на транзакцию.
respIP
сетевой (IP) адрес, с которого получен отклик.
flags
дополнительные элементы, разделённые символом пробел:
[auth:accountName]
этот элемент добавляется если запрос на транзакцию был аутентифицирован. accountName это имя аутентифицированного Пользователя CommuniGate Pro.
[redir:accountName]
этот элемент добавляется если запрос на транзакцию был перенаправлен с локального Пользователя. accountName это имя этого Пользователя CommuniGate Pro.
[billing:billingData]
этот элемент добавляется если запрос на транзакцию имеет поле P-Billing-Id. billingData - содержание поля.

Руководство CommuniGate® Pro. Copyright © 1998-2007, Stalker Software, Inc.