Взаимосвязанная работа серверов Oktell
В настоящее время идет развитие и разработка направления связи между несколькими серверами. Настоящая статья призвана отражать реальные возможности по объединению нескольких серверов в группу.
Oktell позволяет производить объединение нескольких серверов в группу (Доступно начиная с релиза 12.12.2012.)
Серверы при этом не являются и не становятся взаимозаменяемыми, однако это помогает расширить охват распределенной телефонной сети.
Предполагается, что серверы в группе отвечают за обслуживание различных подразделений, контакты между абонентами которых существенно реже по сравнению с контактами внутри подразделений. В некоторых случаях в отдельные серверы могут быть выделены задачи предоставления доступа к одним и тем же внешним ресурсам, например к одному провайдеру телефонной связи.
SIP-транки
Для связи между серверами Oktell существует специальный тип SIP-каналов, принадлежащих шлюзу с типом «Взаимодействие между серверами». Через один и тот же набор межсерверных линий звонки осуществляются на любое количество входящих в группу серверов, поскольку они не привязываются к шлюзу/серверу с определенным адресом. Требуемое их количество можно оценить по максимально ожидаемому количеству одновременных соединений с другими серверами.
Для нормального осуществления звонков внутри группы во всех направлениях, при настройке соответствующих шлюзов на всех серверах должна быть указана одна и та же кодовая строка.
Звонки через такие линии могут осуществляться как автоматически, так и в сценариях. При этом требуется указание полного URI (sip:username@address).
Все объединяемые в группу серверы могут быть подключены к службе обмена сообщениями. В этом случае серверы доступны друг для друга не только по SIP протоколу для звонков, организованных в сценариях IVR, а также для автоматизированного решения других общих задач.
Номерной план
Все серверы, подключенные к одной службе обмена сообщениями, производят обмен номерным планом между собой. Так, каждому серверу становятся доступны стандартные внутренние номера других серверов.
В случае, если на серверах множества номеров пересекаются (имеются одинаковые), приоритет отдается собственному номеру сервера, затем в порядке подключения серверов к группе. Объединяются также и отделы.
При выходе сервера из группы или потере связи с ним, его номера удаляются с других серверов и становятся недоступны. В свою очередь на отключившемся сервере становятся недоступны номера всех остальных серверов.
Вызов внутреннего номера другого сервера осуществляется автоматически с использованием каналов межсерверного шлюза. При этом серверы обмениваются информацией о звонке. В итоге после коммутации каждый из серверов имеет точную информацию об абоненте, находящемся за другим сервером. Всякий раз при постановке на удержание, при переводе звонка абонент удаленного сервера получает информацию о новом абоненте.
Записи разговоров удаленного сервера при этом также разделяются на блоки, синхронно соответствующие отдельным коммутациям.
При поступлении входящего вызова на сервер, его обработка производится в сценарии IVR межсерверного взаимодействия. Если таковой не задан, то в главном сценарии IVR входящей маршрутизации. При этом в качестве вызываемого номера CalledId определяется вызываемый извне внутренний номер сервера.
Если звонок был организован в сценарии IVR вручную, то CallerId и CalledId определяются настройками компонента-инициатора.
Служба обмена сообщениями
Серверы используют единую службу для обмена служебными сообщениями между собой. Эта служба может быть инсталлирована и запущена на отдельном компьютере, или на одном из серверов АТС в зависимости от масштабов взаимодействия. Для службы требуется набор библиотек из каталога службы Oktell, а запуск производится исполнимым файлом oktell.ConnectorService.exe, используемым совместно с конфигурационный файлом oktell.ConnectorService.exe.config. Установка службы производится стандартно утилитой installutil, входящей в комплект .NET Framework.
Адрес, порт, логин и пароль для подключения к службе определяются параметрами серверного конфигурационного файла: SrvConnectorDomain, SrvConnectorPort, SrvConnectorLogin, SrvConnectorPass.
Разрыв петель
При множественных переключениях между абонентами разных серверов возможны ситуации, когда один и тот же звонок существует как несколько петлевых SIP-соединений между серверами. В этом случае группа серверов, производит по возможности наиболее оптимальное замыкание.
Ограничения
Каждый из серверов обслуживает отдельную часть телефонной инфраструктуры: имеет собственные настройки, а также
- набор учетных записей пользователей,
- набор подключаемых клиентских мест,
- набор учетных записей телефонов всех видов,
- сценарии маршрутизации,
- статистику соединений,
- права доступа и контроля.
Каждый сервер вполне может работать независимо от группы, и это является одним из преимуществ подобной схемы организации по сравнению с единым сервером. Исключение могут составить случаи доступа к общим ресурсам ТФОП, обслуживаемым на обособленных серверах-маршрутизаторах Oktell.
Подобная архитектура объединения налагает некоторые ограничения на функционал системы, реализуемый между различными серверами. Так, это делает невозможным определение прав контроля между пользователями разных серверов с вытекающими последствиями, например невозможно просматривать экраны, статистику разговоров.
При необходимости некоторых пользователей осуществлять деятельность в разных группах с применением полного функционала, необходимо заводить для него учетные записи на разных серверах, а клиентское приложение настраивать на возможность выбора сервера, к которому осуществлять подключение. При этом для общей рациональности SIP-телефон оставлять зарегистрированным на сервере с базовой учетной записью, а при использовании VoIP-гарнитур и USB телефонов создавать специальные номера, осуществляющие вызов других серверов через сценарии.
Постепенно с развитием этого направления связи будут решаться вопросы участия в единой конференции, доступа к единому хранилищу с записями разговоров, а также в целом ведение общей статистики.