четверг, 13 августа 2015 г.

Подключаем Cisco Unified Presence к CUCM

Итак, вводные данные: установленный CUCM, установленный CUPS.
При первом обращении, presence сервер просит ip адрес CUCM'а и логин/пароль, чтобы подключиться к нему через AXL. Тут нужно обратить внимание на то, что логин должен быть application user (а не end user) и у этого пользователя должен быть role - Standard AXL API Access. Завести такого пользователя в CUCM'е можно в "User Management/Application User". В CUPS'е эти параметры можно потом увидеть/поменять в "System/CUCM Publisher".
Ну и конечно в CUCM'е должен быть включен сервис (в интерфейсе Cisco Unified Serviceability: "Tools/Service Activation")  Cisco AXL Web Service.
В результате, подключившись через AXL, presence сервер сможет стянуть себе end user'ов.

Дальше в CUCM'е идем в "User Manager/User Settings/UC Service", жмем Add New:

Next. Указываем ip address сервера с CUPS:

Сохраняемся (Save).
Затем создаем еще один UC Service:

Этот сервис нужен для того, чтобы клиент под windows (CUPC или cisco jabber) мог управлять реальным телефоном (режим deskphone mode) и, если такая задача не стоит и нужно только видеть статус user'ов (или будет использоваться только режим softphone), то этот шаг можно пропустить.
Настраиваем (тут в качестве IP Address нужно указать ip CUCM сервера):
Save.

Созданные UC service'ы нужно объединить в один Service profile, для этого идем в "User Management/User Settings/Service Profile", жмем Add New и настраиваем:


Подключим профиль к end user'ам. Для этого идем в "User Management/End User", редактируем пользователя:
Попутно не забываем выставить Primary Extension.
Можно также пользователю добавить группу Standard CCM End Users, чтобы он мог заходить на страничку User Options presence сервера.

Сохраняемся и повторяем для других end user'ов.

Теперь идем в CUPS и проверим - загрузились ли в него пользователи ("User Management/End User"):
Если нет "птичек" в поле "Licensed IM and Presense" - значит стоит проверить привязку профиля (UC Service Profile) к пользователю.

Дальше, настройки CUPS: идем в "Presence/Gateways", жмем Add New:
Здесь указываем в качестве Presence Gateway адрес сервера CUCM.
Сохраняемся (Save).

Следующий шаг нужен для того, чтобы клиент под windows мог нормально отработать в режиме softphone (когда RTP ходит непосредственно до PC и CUPC сам терминирует звонок). Если такой задачи нет, можно его пропустить. 
Идем в "Application/Legacy Clients/Settings":
В качестве TFTP сервера указываем CUCM - с него CUPC будет скачивать конфигурационный файл устройства softphone.
Save.

Дальше настраиваем CCMCIP. Этот шаг обязателен, цитата: "The Cisco Unified Communications Manager IP Phone (CCMCIP) service runs on Cisco Unified Communications Manager and retrieves a list of devices associated with each user". Идем в "Application/Legacy Clients/CCMCIP Profile":
Указываем ip адрес CUCM сервера. Также, не забываем добавить в этот профиль end user'ов (кнопка Add Users to Profile). Есть интересный нюанс - опция "Make this the default CCMCIP Profile for the system" отрабатывает только если она была поставлена ДО того как пользователи перенеслись из CUCM в CUPS.

Все :) можно ставить CUPC (ну или Cisco Jabber).
Как уже стало ясно, есть два режима работы:
1) deskphone mode, когда CUPC управляет реальным телефоном и
2) softphone mode, когда CUPC сам может принимать и совершать звонки.

Начнем с deskphone mode:
Прежде всего нужно убедиться, что на CUCM запущен сервис Cisco CTIManager (Cisco Unified Serviceability: "Tools/Service Activation").
Также, DN контролируемого телефона должен быть ассоциирован с end user'ом, а в настройках end user'а, телефона и DN должны быть включены опции Allow Control of Device from CTI.
У end user'а должна быть добавлена role: Standard CTI Enabled.
Запускаем CUPC, вводим имя пользователя, пароль, ip сервера CUPS и:
В данном случае, я добавил пользователя ("dasha") в список контактов и теперь могу отслеживать его состояние, писать сообщения (для этого в его контакте должен быть указан "Адрес IM" в виде имя_пользователя@домен). Звонить можно по любому номеру, но звонок будет совершаться с реального телефонного аппарата.

Теперь - softphone mode:
Для этого в CUCM нужно добавить устройство softphone. Идем в "Device/Phone", жмем Add New:
Для CUPC версий меньше 8.0 - нужно выбирать тип устройства Cisco Unified Personal Communicator.
Настраиваем:
Обязательно указываем Owner User ID - это должен быть end user, под которым логинимся в CUPC.
Для устройств типа Cisco Unified Cliend Services Framework название (Device Name) может быть произвольным, но для Cisco Unified Personal Communicator нужно соблюдать формат UPC<USERNAME>, где <USERNAME> это имя end user'а.
Далее, нужно в созданное устройство добавить DN (логичнее использовать тот же номер, что и на реальном телефонном аппарате) и ассоциировать этот DN с end-user'ом:
Теперь идем в настройки end user'а - User Management/End User, жмем на нашего пользователя и добавляем только что созданное устройство в список контролируемых:
Далее нужно убедиться, что на CUCM сервере запущен TFTP (в интерфейсе Cisco Unified Serviceability).
Запускаем CUPC, логинимся и:
Опция "Использовать Cisco *** для аудио" внизу коммуникатора предоставляет возможность переключаться между режимами deskphone и softphone.

Если softphone mode не хочет работать, нужно проверить доступность TFTP сервиса. Для этого любым tftp клиентом нужно запросить с CUCM сервера файл <DEVICENAME>.cnf.xml, где <DEVICENAME> имя созданного softphone устройства.
Если файл скачивается, то его следует открыть текстовым редактором и найти параметр:
<processNodeName>cucm</processNodeName>
то, что будет между тегами (в данном случае - cucm) должно резолвиться с данного PC в ip CUCM сервера.

Почти всё... Можно писать сообщения, выставлять себе разные статусы, звонить непосредственно с компьютера или управлять с него телефонным аппаратом. Но кое-чего не хватает - собственно говоря, самого presence'а -  текущее состояние DN'ов никак не отображается в CUPC (только статусы других CUPC клиентов).
Для того чтобы это исправить нужно на CUCM настроить SIP trunk в сторону CUPS, и указать CUCM'у что он должен его использовать для PUBLISH сообщений о статусе линий.

Открываем CUCM, идем в "System/Security/SIP Trunk Security Profile". Жмем Add New и выставляем четыре "птички":
Теперь можно создавать trunk. Идем в "Device/Trunk", жмем Add New:
Next:
Указываем ip адрес CUPS сервера, раннее созданный security profile и сохраняемся. Не забываем также сделать reset.

Теперь - "System/Service Parameters", выбираем сервер и сервис (Cisco CallManager). В списке параметров находим IM and Presence Publish Trunk и в выпадающем списке выбираем созданный SIP trunk в сторону CUPS:
Save.

Попутно проверяем "System/Application Server":
Если он не завелся при интеграции, можно завести вручную. И лучше использовать ip адрес вместо доменного имени.

Дальше идем на CUPS. Тут нужно проверить Incoming ACL и Outgoing ACL для CUCM сервера. При интеграции эти правила автоматически создаются, но, возможно, также стоит сменить доменное имя на ip адрес. Эти правила нужны для того, чтобы разрешить коммуникации между CUCM и CUPS без аутентификации.
"System/Security/Incoming ACL":
И "System/Security/Outgoing ACL":

Теперь можно наблюдать состояние линий end user'ов:

Разумеется нужно не забыть проверить привязку всех DN к соответствующим end user'ам.

Ссылки:
-Пошаговая инструкция интеграции Cisco IM and Presence 9 (CUPS) с CUCM 9
-Cisco Jabber 9 для Windows. Пошаговая инструкция интеграции и настройки
-CUPC and Jabber for Windows Softphone Troubleshoot