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

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

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

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

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

Для несессионных протоколов, таких, как SIP, сервер регистрирует пользователей, запоминая их «SIP-идентификаторы» и используемые ими сетевые (IP) адреса.

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

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

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

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

Сигналы

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

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

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

  • Компонент сервера “модуль SIP” получает запросы от внешних участников коммуникаций реального времени (SIP-клиенты, другие SIP-сервера), используя SIP-протокол. Когда модуль Signal генерирует объект с ответом, SIP-модуль отправляет ответ обратно внешнему участнику.

  • Модуль XMPP и модуль XIMSS отправляют и получают сигнальные запросы и ответы, а также передают их между клиентскими приложениями и сервером CommuniGate Pro.

  • Внутренние узлы реального времени, такие как программы реального времени (приложения PBX) могут отправлять различные сигнальные запросы.

  • Правила автоматической обработки могут использовать сигналы (отправлять мгновенные сообщения как уведомления).

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

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

  • Маршрутизатор вернул код ошибки (например, URI запроса адресуется несуществующему локальному пользователю). Этот код ошибки возвращается источнику сигнала, и обработка останавливается.

  • Маршрутизатор вернул нелокальный адрес (адрес не из локального домена). Запрос передаётся в модуль SIP для релеинга. Ответ от модуля SIP передаётся источнику сигнала.

  • Маршрутизатор вернул адрес локального внутреннего узла реального времени. Запрос передаётся на обработку в этот узел. Ответ узла передаётся источнику сигнала.

  • Маршрутизатор вернул локальный адрес пользователя, и запрос может быть обработан модулем Signal самостоятельно. Запрос обрабатывается, и ответ возвращается источнику сигнала. Эти случаи включает в себя также запросы типа REGISTER и другие запросы, URI которых указывают на локальные домены.

  • Маршрутизатор вернул локальный адрес, и запрос не может быть обработан модулем Signal самостоятельно. Начинается процесс ответвления, URI запроса используется в качестве начального набора AOR.

  • Маршрутизатор вернул фиктивный адрес null. Положительный ответ (код OK) возвращается источнику сигнала, и обработка останавливается.

Следующая диаграмма иллюстрирует схему обработки сигналов в сервере 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 запроса).

  • Если начальный AOR был направлен на локального пользователя или группу, то адреса, указанные в ответе типа Redirect, добавляются в набор “AOR” и процесс подключения продолжается.

  • Если начальный AOR был направлен на удалённый адрес, то ответ типа “Redirect” возвращается источнику запроса.

Настройка модуля Signal

Чтобы настроить параметры модуля Signal, используйте веб-интерфейс администратора. Откройте в области “установки” страницу “Real-Time”, затем откройте страницу “сигналы”:

Уровень журнала

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

 

Процессоры

Компонент Signal использует несколько одновременных процессоров (нитей) для обработки "задач" сигналов. Один процессор может обрабатывать несколько задач сигналов. Если вы используете большое количество автоматических правил, выполнение которых занимает относительно много времени, то вы должны разрешить компоненту использовать большее количество процессоров для обработки сигналов.

 

Ограничение на объекты

Эта настройка определяет, какое количество "задач" компонент Signal может обрабатывать одновременно.
При превышении этого ограничения новые сигналы отвергаются и отправителям сигналов направляется ответ с кодом ошибки.

 

Ограничение на события

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

Используйте панель установок обработки, чтобы указать параметры обработки сигнальных задач.

Ограничение числа AOR

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

 

Ограничение числа разветвлений

Эта установка ограничивает количество ответвлений для одной операции.

 

Ограничение по времени

Эта настройка задаёт ограничение по времени для обработки запроса.

 

Аутентифицировать все исходящие

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

  • когда запросы отправляются удалённо через SIP, аутентификация выполняется в модуле SIP;

  • модули XIMSS и XMPP отправляют все сигналы от имени зарегистрированного пользователя, предварительно проведя аутентификацию;

  • Приложения реального времени отправляют сигналы от имени текущего сля (если только приложение не представляется как "никто").

 

Эта опция требует аутентификации всех звонков (начальных запросов INVITE), начатых от имени пользователей этого сервера.

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

Компонент Signal может ограничить число «звонков», которое пользователь может совершать в течение указанного периода времени. При попытке совершения большего количества звонков, они будут отвергаться без обработки.
Это ограничение может быть установлено индивидуально для каждого пользователя, или же могут использоваться общесерверные, общекластерные или доменные установки по умолчанию для аккаунтов. Дополнительную информацию смотрите в разделе “пользователи”.

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

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

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

Компонент Signal управляет количеством «звонков» (начальных INVITE запросов с дескрипторами аудио- / видеосессий), которые пользователь может принимать в течение заданного интервала времени. При получении большего количества запросов, они будут отвергаться без обработки.
Это ограничение может быть установлено индивидуально для каждого пользователя, или же могут использоваться общесерверные, общекластерные или доменные установки по умолчанию для аккаунтов. Дополнительную информацию смотрите в разделе “пользователи”.

Отправка сигналов в удаленные системы

Если сигнал должен быть ретранслирован в удалённую систему, то компонент Signal направляет его в какой-либо сигнальный модуль.

Адрес-получатель сигнала может явно направляться в какой-либо модуль. Например, все домены с суффиксом ._xmpp направляются в модуль XMPP.

Если адрес-получатель сигнала явно не направляется в какой-либо модуль, то компонент Signal проверяет имя домена, в котором находится адрес-получатель

  • Если имя домена является адресом IP, то сигнал направляется в модуль SIP.

  • Если имя домена имеет в DNS-записи SIP SRV, то сигнал направляется в модуль SIP.

  • Если имя домена имеет в DNS-записи XMPP SRV, то сигнал направляется в модуль XMPP.

  • Во всех других случаях сигнал направляется в модуль SIP.

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

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

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

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

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

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

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

Чтобы настроить услуги регистрации, откройте в области “установки” страницу “Real-Time” и перейдите по ссылке “сигналы”.

Регистрация: минимальное

Используйте эту опцию для задания минимального периода времени срока действия регистрации.
Если запрос на регистрацию имеет более короткий период действия, то запрос отвергается и отправляется ответ со значением минимально допустимого периода времени. Участник (обычно — SIP-устройство) может переслать запрос на регистрацию с исправленным сроком действия.

 

Регистрация: по умолчанию

Значение этой опции используется, если в запросе на регистрацию не указан срок действия регистрации.

 

Регистрация: максимальное

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

 

Регистрация: случайная поправка

Если это опция установлена в ненулевое значение X, то запрошенное время срока действия регистрации уменьшается на случайное значение от 0 до X.
Крупные сайты могут использовать эту возможность для смягчения «регистрационной бури», когда большое количество устройств начинает регистрироваться одновременно (после сбоя сети или остановки системы на обслуживание).
Запрошенное время срока действия уменьшается, только если оно больше чем 2*X и больше чем минимальное+X.

 

Обратите внимание: компонент регистрации поддерживает расширения SIP gruu (Globally Routable User Agent (UA) URIs — глобально маршрутизируемые адреса пользовательских устройств).

Обратите внимание: клиенты, использующие для регистрации имена доменов, начинающиеся с префиксов srtp. или dtls., помечаются как требующие шифрования медиа потока. Аналогично, если на сервере разрешены 'детализированные' адреса, и во время регистрации имя аутентификации в качестве детализации содержало строку srtp или dtls, то во входящих звонках этому клиенту тоже будет предлагаться шифрование медиа потока.

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

Модуль Signal поддерживает несколько наборов событий. При получении запроса SUBSCRIBE, предназначенного для локального пользователя, модуль может обработать запрос самостоятельно, не пересылая его зарегистрированным устройствам пользователя.
Обратите внимание: как обходное решение для большого количества некорректно работающих клиентов, модуль принимает запросы SUBSCRIBE, отправленные в локальные домены (вместо локальных пользователей). В таких запросах, для замены адреса типа домен в адресе URI-запроса используется адрес в поле To.

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

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

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

Модуль Signal обеспечивает работу «наблюдателей» для всех наборов событий. Они обеспечивают информацию о подписчиках на «основные» наборов событий. Также реализованы наборы «наблюдателей за наблюдателями».

Если явно не указано иначе, подписка на “наборы событий пользователя” возможна только для самого пользователя и для пользователей, обладающих правами доступа “может выступать от имени других” в домене пользователя, а также пользователям с правом “Delegate” к этому пользователю.
Такие же ограничения действуют на подписки к наборам «наблюдателей».

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

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

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

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

  • offline — вне сети

  • away — нет на месте

  • out-lunch — на перерыве

  • in-meeting — на совещании

  • be-back — скоро вернусь

  • online — в сети

  • on-phone — на телефоне

  • busy — занят

Агрегированное значение события — это значение сегмента с самым высоким приоритетом или значение offline ("вне сети"), если сегменты отсутствуют.

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

Подписка на этот набор событий доступна всем согласно стандартной схеме подтверждения.

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

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

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

  • первый элемент — это число сообщений в INBOX, имеющих флаг $Media и не имеющих флага Seen (число непрочитанных медиа сообщений);

  • второй элемент — это общее число сообщений в INBOX, имеющих флаг $Media (общее число медиа сообщений);

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

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

Регистрация

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

Диалог

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

Подписка на набор “диалог” возможна только для самого пользователя, других пользователей с правом администратора домена CanControlCalls (полный доступ ко всем звонкам), а также для тех пользователей, которым пользователь предоставил право доступа “CallControl”.

Звонки

Сервер CommuniGate Pro может создавать объекты диалог при обработке определённых запросов INVITE. Объекты диалог содержат информацию о звонке / сессии / диалоге, созданными этими запросами.
Объекты типа “диалог” уничтожаются по завершению звонков.

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

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

Если аутентифицированный участник (вызывающий или вызываемый) ставится на удержание, то используется его настройка пользователя «музыка при ожидании».
Если она не установлена в “выключено”, то указанный звуковой файл читается из хранилища файлов пользователя. Если имя файла задано как «*» или если указанный файл не найден, то читается файл HoldMusic из среды для приложений реального времени домена пользователя.
Когда звуковой файл прочитан, создаётся медиа канал и он получает задание на воспроизведение этого файла другому участнику.

Чтобы настроить компонент “менеджер диалога”, используйте веб-интерфейс администратора. Откройте в разделе “установки” страницу “Real-Time”, затем откройте страницу “сигналы”:

Уровень журнала

Используйте эту настройку, чтобы указать, какую информацию компонент менеджер диалога должен сохранять в журнале работы сервера. Обычно используется уровень “сбои” (только неразрешимые проблемы), уровень “основное” (сбои и основные события) или уровень “проблемы” (сбои, основные события и не фатальные ошибки).
Записи, помещённые компонентом менеджер диалога в журнал работы сервера, имеют пометку DIALOG.

 

Ограничение по времени

Эта настройка задаёт ограничение по времени для диалогов звонка. При превышении этого лимита, объект диалог удаляется. Устанавливайте значение для этого ограничения достаточно большим, чтобы избежать прерывания звонков.

 

Тайм-аут по неактивности, тайм-аут по медиа

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

Журналы звонков пользователя

Журналы звонков пользователя сохраняются в виде текстовых файлов в файловом хранилище пользователя.

Записи в этих файлах имеют следующий формат:

2_dd-mmm hh:mm:ss_direction_peer_callId_callTime_alertTime_errorCode[_programName]

где:

_

символ табуляции (символ с кодом 0x09)

 

2

версия формата записи

 

dd

2-значный номер дня месяца

 

mmm

3-х символьное имя месяца

 

hh, mm, ss

2-значные цифры с часом (00..23), минутой (00..59) и секундой (00..59) окончания звонка

 

direction

1 символ направления звонка: I — входящий, O — исходящий

 

peer

адрес электронной почты участника звонка, в формате
  <username@domainName>
или
  «real name» <username@domainName>

 

callId

строка с Call-ID.

 

callTime

продолжительность звонка (в секундах). Время между моментом соединения и моментом рассоединения. Если звонок не был выполнен успешно, то это поле будет пустым.

 

alertTime

продолжительность вызова (в секундах). Время между началом звонка и моментом соединения или (если звонок не был выполнен успешно) время между началом звонка и моментом неуспешного завершения звонка.

 

errorCode

строка с кодом ошибки для неудачного звонка или причина рассоединения звонка. Если звонок был завершён успешно, то это поля является пустым.

 

programName

это необязательное поле содержит имя приложения реального времени, которое обрабатывало этот звонок.

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

Модуль Signal может генерировать детализированную информацию о звонках для обрабатываемых им транзакциях INVITE и BYE. Он может также генерировать детализированную информацию о звонках для выполненных звонков, используя информацию из объектов диалог.

CDR может генерироваться и храниться в дополнительном журнале CDR.

Записывать CDR для звонков

Выберите эту опцию, чтобы включить создание файлов журнала CDR для звонков (объектов зиалога).

 

Записывать Invite/BYE CDR

Выберите эту опцию, чтобы включить созданий файлов журнала CDR для запросов INVITE и BYE.

 

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

Текстовые данные CDR для запросов INVITE/BYE имеют следующий формат (для разделения полей используется символ табуляции):

01 NNN**-**method dialog-identifier parties network-addresses flags

где:

01

версия используемого формата CDR

 

NNN

код выполнения транзакции (цифровой)

 

Method

операция/метод транзакции (INVITE, BYE).

 

dialog-identifier

идентификатор диалога — поле Call-ID, параметр tag поля From, параметр tag поля To), заключённые в угловые скобки < и >.
Обратите внимание: если вызов прерван вызываемым абонентом, то fromTag транзакции BYE совпадает с toTag транзакции INVITE и наоборот.

 

parties

адреса URI из полей From и To транзакции, заключённые в угловые скобки < и >.

 

network-addresses

сетевой адрес (IP), с которого получен был получен запрос на транзакцию, в квадратных скобках [ и ].

 

flags

необязательные поля, разделённые символом табуляции:

[auth:accountName]

элемент добавляется, если запрос в транзакции был аутентифицирован. Имя аутентифицированного пользователя CommuniGate Pro — accountName.

[redir:accountName]

этот элемент добавляется, если запрос в транзакции был перенаправлен с локального пользователя. Имя пользователя CommuniGate Pro, перенаправившего запрос, — accountName.

[billing:billingData]

этот элемент добавляется, если запрос в транзакции имеет поле P-Billing-Id. Строка billingData является содержимым поля.

[referred:referredby]

этот элемент добавляется если запрос в транзакции имеет поле Referred-By. Строка referredby является содержимым поля.

 

Текстовые данные CDR для запросов INVITE/BYE имеют следующий формат (для разделения полей используется символ табуляции):

02 callType accountName alertTime connectTime reason dialog-identifier [«fromName»] <from> [«toName»] <to>[[toProgramName]] flags

где:

02

версия используемого формата CDR

 

callType

тип вызова (INP, OUT).

 

accountName

полное имя пользователя (accountName@domainName).

 

alertTime

интервал времени (в секундах) между временем, когда звонок был инициирован и временем, когда звонок был принят или отвергнут.

 

connectTime

интервал времени (в секундах) между временем, когда звонок был принят и временем, когда звонок был завершён. Если звонок не был принят, то в этом поле содержится символ - (минус).

 

reason

причина, по которой звонок был отвергнут или завершён.

 

dialog-identifier

идентификатор диалога — поле Call-ID, параметр tag поля From, параметр tag поля To), заключённые в угловые скобки < и >.

 

from**, to**

адреса URI полей From и To транзакции.

 

fromName**, toName**

значение «настоящее имя» полей From и To транзакции. Все другие поля являются необязательными. Если они заданы, то заключены в двойные кавычки (").

 

toProgramName

необязательно — имя PBX приложения, принявшего звонок.

 

flags

аналогично используемым с записями версии 01.

Узлы обработки сигналов

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

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

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

  • Компонент приложения реального времени создаёт узел для каждого «плеча звонка».

  • Сессии XIMSS создают узел для каждого «плеча звонка» XIMSS.

  • Субкомпонент статус присутствия создаёт узел и использует его для обслуживания подписок на события статуса присутствия для устройств, которые не могут обновлять своё состояние присутствия.

Чтобы настроить параметры компонента узлы, используйте веб-интерфейс администратора. Откройте в разделе “установки” страницу “Real-Time”, затем откройте страницу “узлы”:

Уровень журнала

Используйте эту настройку, чтобы указать, какую информацию компонент “узлы” должен сохранять в журнале работы сервера. Обычно используется уровень “сбои” (только неразрешимые проблемы), уровень “основное” (сбои и основные события) или уровень “проблемы” (сбои, основные события и не фатальные ошибки). В случае, если в работе компонента узлы возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня “подробности” или “всё”: в этом случае в системный журнал будет записываться более подробная информация о внутренней работе компонента. Когда проблема решена, верните настройку “уровень журнал” в её обычное значение, так как иначе системный журнал будет очень быстро увеличивать свой размер.
Записи, помещённые компонентом узлы в журнал работы сервера, имеют пометку “NODE”.

 

Процессоры

Компонент “узлы” использует несколько одновременных процессоров (нитей) для обработки «задач» сигналов. Один процессор может обрабатывать несколько задач узлов.
Если вы используете большое количество узлов, операции которых занимают относительно много времени (приложения реального времени и т.п.), то вы должны разрешить компоненту использовать большее количество процессоров.

 

Ограничение на объекты

Эта настройка определяет, какое количество узлов компонент может обрабатывать одновременно. Если это число превышено, то попытки создать новый узел приведут к ошибке.

 

Ограничение на события

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

Плечи звонка

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

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

Тайм-аут

Используйте эту настройку для указания частоты обмена сторонами запросами INVITE (или OPTION) для проверки того, что звонок не разъединился.

 

Ограничение релеинга

Используйте эту настройку для задания значения поля Max-Forwards для запросов, отправляемых в плечах звонка.

Интерфейс к сигналам (API)

Задачи сигналов могут получать «события» от других компонентов CommuniGate Pro, таких, как задачи CG/PL и клиентские сессии XIMSS. Чтобы отправить событие, отправитель должен получить описатель сигнала.

 

Задача сигналов принимает следующие события:

decline

Это события заставляет задачу сигналов прекратить обработку сигнального запроса и отвергнуть его с кодом ошибки 603 отвергнуто.

fork

Данные этого события должны быть строкой или массивом строк. сигнальный запрос ответвляется на URI, задаваемые этими строками.

redirect

Аналогично fork, но все текущие «ответвлённые» запросы прекращаются.