Интеграция 3CX и Openfire XMPP (Jabber) Server

Давайте решим актуальную задачу. Как превратить замечательную VoIP телефонную систему 3CX в полноценную платформу для унифицированных коммуникаций?

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

Неплохо, чтобы создаваемая система соответствовала современным стандартам и была недорогой, а лучше - бесплатной. Для этого воспользуемся популярной открытой платформой совместной работы в реальном времени - Openfire XMPP real-time collaboration server.

Я не буду перечислять все достоинства этой платформы, они хорошо описаны здесь. Займемся непосредственно интеграцией 3CX и Openfire. В результате мы получим все преимущества "внутренней ICQ", если так можно выразиться, корпоративной IP телефонии и интеграции с Windows Active Directory. Еще можно сказать, что мы получим недорогой, но гораздо более простой и открытый аналог очень дорогих фирменных систем Unified Communications.

Итак, скачайте отсюда последние версии сервера Openfire и клиента Spark под Windows.

Внимание! Данная статья написана на базе версий Openfire 3.6.3 и Spark 2.6.0.beta2.

Внимание! С 1.09.2009 г. доступен новый Windows клиент V&V Messenger, наследник Spark.

Настройка сервера

Установите Openfire в соответствии с документацией. Обращаю внимание на то, что есть два режима установки сервера - с использованием собственной базы данных пользователей, и интеграцией с Windows AD. Я рекомендую, по возможности, использовать интеграцию с AD. Это очень упрощает дальнейшее администрирование пользователей. Но в небольших компаниях не всегда установлена AD, поэтому использование встроенной базы Openfire является единственным выбором. В данной статье также используется встроенная база пользователей.

После установки сервера убедитесь, что компьютер, на котором установлен Openfire, подключен к Интернет и откройте консоль администрирования Openfire. Зайдите в раздел Plugins > Available Plugins и добавьте в систему два плагина - Client Control и SIP Phone Plugin. Если необходимо, добавьте другие плагины.

Проверьте, что плагины установлены корректно.

Теперь зайдите в раздел Server > Client Management > Spark Version и загрузите в систему заранее скачанный Spark клиент. Это необходимо для того, чтобы автоматически обновить старую версию Spark, если она установлена у пользователей.

В разделе Server > Client Management > URL Bookmarks установим ссылку на 3CX Myphone Portal. Это нужно для того, чтобы пользователь мог непосредственно из Spark управлять настройками своего Extension (внутреннего номера) в 3CX. Как это выглядит в интерфейсе Spark будет показано чуть позже.

Здесь 192.168.0.10 - адрес моего сервера 3CX, а 5000 - номер порта Myphone Portal при использовании в 3CX встроенного сервера Cassini.

Теперь настроим связывание XMPP аккаунтов Openfire (которые вы должны предварительно создать или загрузить из AD) и SIP аккаунтов 3CX. Это и является основным принципом, на котором строится интеграция Openfire с 3CX. Вначале зададим общие настройки SIP сервера 3CX в разделе Server > Phone > SIP Settings. Не забудем указать номер голосовой почты 3CX - 99.

Свяжем аккаунты в разделе Server > Phone > SIP Phone Mappings

Здесь:

igor - имя аккаунта Openfire, возможно загруженного из AD

11 - SIP номер соответствующего пользователя в 3CX.

То есть, пользователь igor в 3CX имеет номер 11. Конечно, здесь имеет место двойная регистрация пользователей - сначала в 3CX, потом в Openfire. Но очень скоро в 3CX появится импорт пользователей из AD и ручной работы, в основном, можно будет избежать. Однако связывать пользователей по прежнему придется вручную.

Внимание! Сатус пользователя может быть Unregistered. Это не страшно, при вызове он меняется на Registered.

На этом настройка сервера завершена.

Настройка клиента

Установите на клиентский компьютер Spark и подключитесь с серверу Openfire. Зайдите в меню SparkPluginsAvaliable Plugins (Доступные плагины)и добавьте плагин Phone Client.

Перезапустите Spark. В интерфейсе программы появится "телефонный" раздел. Кроме набора номера, тут можно проверить голосовую почту (иконка с конвертом) и увидеть историю звонков (иконка с часами).

Наберите нужный телефонный номер, и 3CX обработает вызов в соответствии с указанными исходящими правилами (Outbound Rules в 3CX).

Чтобы позвонить другому пользователю в вашей компании, в профиле Openfire (или AD) этого пользователя должны быть указаны его контактные телефоны. Внесем контактную информацию для пользователя olesya. Это делается в меню Spark > Edit my Profile...

Внимание! Практика показала, что после внесения изменений в профиль пользователя, эти изменения распространяются другим пользователям довольно медленно. То есть, с момента, когда пользователь olesya добавил номера своих телефонов, до момента появления этих номеров в свойствах профиля olesya у других пользователей проходит до 2 часов. Судя по всему, это связано с кэшированием профилей пользователей Spark'ом. Поэтому, для ускореня процесса я полностью удалил Spark у пользователя igor, включая папку c:\Documents and Settings\%Username%\Spark\ и установил его заново.

Поговорим, а затем позвоним пользователю olesya. Все звонки будут обработаны 3CX и направлены на настольные и мобильные телефоны. И, разумеется, в Spark клиент и в 3CX VoIP Client. Spark клиент корректно меняет статус пользователя на On Phone.

Можно и сразу позвонить, не открывая окна чата. Так быстрее и удобнее.

Помните, я говорил о быстром доступе к 3CX MyPhone Portal? У каждого клиента уже есть на него ссылка в меню Bookmarks!

Итак, в результате ряда несложных действий мы получили полностью интегрированную систему оперативного обмена информацией на предприятии, причем совершенно бесплатно! Она работает с любым VoIP оборудованием, полностью соответствует стандартам SIP и Jabber, и практически бесконечно расширяема!

А теперь сравним наше решение со стоимостью и сложностью, скажем, Microsoft OCS, Avaya Unified Communications и прочими Cisco, и сделаем правильный вывод.

Удачи!

Благодарность

Большое Вам спасибо за столь содержательный мануал. Все получилось с первого раза.