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

Mobile Connect и Mobile Voice Access в CUCM

Что же это такое?
1) Mobile Connect позволяет привязать к DN и end-user'у несколько внешних (доступных через route pattern) номеров (Remote Destination). При входящем звонке, если DN не поднимает трубку, звонок уходит на Remote Destination. Таким образом, не сообщая никому свой мобильный номер, можно покинуть рабочее место и остаться доступным для звонка. При этом линия на рабочем номере показывается поднятой - что-то вроде shared line.
Если ответить на Remote Destination номер и, разговаривая, вернуться к рабочему телефону, то можно дать отбой (попросив абонента повисеть на линии) на мобильном - тогда через несколько секунд звонок вернется на основной DN и, нажав на рабочем телефоне softkey - Resume, можно   продолжить разговор.
Да, можно еще сначала ответить на звонок на рабочем телефоне, а потом нажать softkey - Mobility и звонок уйдет на Remote Destination. Так, не прерывая разговора, можно отойти от своего стола.
2) Mobile Voice Access. MVA требует настроенного Mobile Connect, с Remote Destination'ами. К имеющемуся функционалу добавляет следующее - находясь на Remote Destination номере, абонент может позвонить на внешний офисный номер, набрать свой PIN и совершать звонки (как наружу так и на внутренние номера) от имени своего рабочего DN. Если же приходится звонить с другого номера (не с Remote Destination), то IVR попросит его ввести (а затем PIN), что дает возможность попадать внутрь корпоративной телефонии из любой точки.
Для MVA потребуется роутер с выходом во внешнюю телефонную сеть,  настроенный и подключенный к CUCM как gateway.

Итак, настроим Mobile Voice Access.

Шаг 1. Открываем CUCM, идем в меню "Device/Device Settings/Softkey Template". Делаем копию одного из шаблонов, переименовываем и настраиваем:
Нажав Configure Softkey Layout, добавим Mobility для состояний On Hook и Connected:


Шаг 2. Подключим этот softkey template к рабочему телефону ("Device/Phone/", жмем на нужный телефон):
Не забыв указать end-user'а.

Шаг 3. Настройка Remote Destination Profile - идем в "Device/Device Settings/Remote Destination Profile", жмем Add New:
Здесь нужно указать end-user'а и подключить DN.

Шаг 4. Теперь сами Remote Destination'ы - идем в "Device/Remote Destination", жмем Add New:
Не забываем поставить "птичку" в Line Association.
В секции "Ring Schedule" можно указать время/дни когда разрешается переводить звонки на этот номер. Cекция "When receiving a call during the above ring schedule" позволяет отфильтровать звонящих по Access List'у (его нужно предварительно создать в "Call Routing/Class of Control/Access List").

Шаг 5. Настройка End-User'а - открываем "User Management/End User", жмем на нужного пользователя:

Remote Destination Profile будет уже указан. Нужно настроить "Maximum Wait Time for Desk Pickup" в миллисекундах, после которых звонок уйдет на Remote Destination. Не забываем выставить птичку Enable Mobility.

Все, можно тестировать! Звоним на номер 1001, поднимаем трубку, затем нажимаем softkey - Mobility и перебрасываем звонок на Remote Destination. Поднимаем трубку на мобильном, убеждаемся что на телефоне с номером 1001 линия показывается как занятая, даем отбой на мобильном и через несколько секунд видим вернувшийся звонок на рабочий телефон, нажимаем softkey - Resume и проверяем связь.

Кстати, если CSS (и правила компании) не позволяют так запросто выйти на Remote Destination, нужно указать разрешающий CSS в параметре Rerouting Calling Search Space у Remote Destination Profile'а.


Если все ok - пришла пора Mobile Voice Access.

Шаг 1. Прежде всего нужно включить сервис - открываем Cisco Unified Serviceability интерфейс, идем в меню "Tools/Service Activation" и включаем "Cisco Unified Mobile Voice Access Service":
Save.

Шаг 2. Возвращаемся в Cisco Unified CM Administration, идем в меню - "Media Resources/Mobile Voice Access":
В качестве Mobile Voice Access Directory Number нужно указать любой свободный DN.

Шаг 3. Меню "System/Service Parameters", выбираем сервер, сервис (Cisco CallManager).
Переходим в секцию "Clusterwide Parameters (System - Mobility)":
Также стоит обратить внимание на параметр "Inbound Calling Search Space for Remote Destination": In the Inbound Calling Search Space for Remote Destination field, choose either Trunk or Gateway Inbound Calling Search Space (the default, which uses the CSS of the trunk or gateway that is routing the inbound call from the Remote Destination) or Remote Destination Profile + Line Calling Search Space (which uses the combined line and Remote Destination Profile CSS).

Секция "Clusterwide Parameters (Feature - Reroute Remote Destination Calls to Enterprise Number)" - интересный параметр "Reroute Remote Destination Calls to Enterprise Number":  if I call your mobile number from another phone in the network it will be matched to your SNR profile and anchored as an SNR style call.

Шаг 4. Включаем MVA у end-user'ов: переходим в меню - "User Management/End User", жмем на нужного пользователя:

Шаг 5. Настройка шлюза ("XXX.XXX.8.138" - ip адрес CUCM):

voice service voip 
 allow-connections h323 to h323

application

  service mva http://XXX.XXX.8.138:8080/ccmivr/pages/IVRMainpage.vxml

voice-port 0/1/3

 supervisory disconnect dualtone mid-call
 supervisory custom-cptone MyTELCO
 cptone RU
 timeouts call-disconnect 1
 description PSTN
 caller-id enable

dial-peer voice 1 pots

 service mva
 direct-inward-dial
 port 0/1/3

dial-peer voice 2 voip

 destination-pattern 3001
 voice-class codec 1
 session target ipv4:XXX.XXX.8.138

interface Vlan100

 description LAN
 ip address 10.20.1.249 255.255.255.248
 h323-gateway voip interface
 h323-gateway voip bind srcaddr 10.20.1.249

Шлюз принимает входящие звонки на порт voice-port 0/1/3. Первый call leg - входящий dial-peer 1, который match'ится по "port 0/1/3".  На этом порту включен MVA (direct-inward-dial) и подключен сервис под именем "mva" (название может быть любое). В разделе application сервис описан как url на CUCM сервере. Шлюз скачивает vxml файл, узнает, что нужно направить звонок на номер 3001 (и другие настройки). Второй call-leg - исходящий dial-peer 2, который match'ится по "desination-pattern 3001". И звонок уходит на CUCM на IVR.
Маленькая ремарка: приведенный выше конфиг взят из моей реальной лабы, он точно работает, но... я не нашел в vxml файле указания на номер 3001 (может плохо искал?), в конфиге роутера я его не указывал... direct-inward-dial на входящем dial-peer'е должен был переключить роутер в one-stage dial и искать исходящий dial-peer по DNIS, но... во первых DNIS пустой, так как звонок приходит на аналоговый FXO порт, а во вторых в номере, который я набираю чтобы попасть на этот порт, нет цифры 3001... хм, значит роутер все же узнает этот номер у CUCM'а.
Полезная команда: sh call application voice mva

Ну и конечно же шлюз 10.20.1.249 должен быть заведен на CUCM (меню "Device/Gateway"):

Все, можно проверять :) Звоним на шлюз с Remote Destination номера - если CUCM по caller-id его узнает, то он спросит сразу же PIN, затем предложит нажать 1 и набрать номер для звонка. Можно набрать внутренний номер и убедиться, что звонок приходит как-будто с рабочего телефона (а там DN показывается как занятый). Даем отбой на мобильном номере (Remote Destination) и видим, что звонок перебросился на рабочий DN, нажимаем softkey - Resume и проверяем есть ли связь.
Пробуем позвонить с другого номера (которого нет в Remote Destination'ах) - CUCM должен попросить ввести Remote Destination с помощью dtmf, затем PIN и все то же самое.