Звонок клиенту сценарий


Тема непростая, но обязательная для изучения всеми, кто хочет «собрать» из Lync телефонную станцию. При чтении желательно иметь перед глазами интерфейс администрирования Lync Server под странным названием: «Communications Server Control Panel» (CSCP). В противном случае, многие места понять будет довольно сложно.

Итак, CSCP открыт… Кружка пива (чашка кофе) на столе под рукой… Мозг расслаблен… Приступаем.

Форматы номеров в Lync.

Существует три идеологически верных 🙂 формата телефонных номеров в Lync:

  • Е.164: +<код страны><код региона/ оператора><номер>, например +74951234567
  • E.164 c доб. номером: +<код страны><код региона/оператора><номер>;ext=<доб. номер>, например +74951234567;ext=1234

Первый вариант подходит для прямых номеров, второй для случаев, когда имеется один прямой номер на организацию/филиал организации. Номер без «ext=XXXX» в этом случае хитрым правилом должен ссылаться на автосекретарь.

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

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

Недостатков тоже вагон и маленькая тележка, но об этом позже. А пока скажу, что намного чаще приходится давать пользователям стандартные  номера форматов XXX, XXXX или XXXYYYY.

Нормализация

Как Lync проверяет, что номер в формате Е.164? Очень просто. Смотрит на «+» в начале номера. То есть «прокатит» даже +123. Если же идет звонок на номер без «+», такой номер нужно нормализовать, то есть, в идеале, преобразовать к формату E164.

Правило нормализации можно условнео разделить на три категории (моё личное разделение, в документации этого нет):

  • Преобразующие номер к E.164
  • Преобразующие номер к другому формату нежели у.164
  • Закрепляющие правила

Как происходит нормализация. В Lync существуют наборы правил преобразования номеров (normalization rules), называемые планами нумерации (Dial Plan). Dial Plan может назначаться на пользователя, применяться ко всем вызовам пула Lync или сайта Lync. Кроме того, всегда существует Dial Plan с именем Global, применяемый ко всей организации Lync. К каждому объекту может быть применен только один Dial plan. При наличии нескольких Dial Plan, применимых к объекту на разных уровнях, выбирается Dial Plan с наименьшей зоной действия. В порядке уменьшения приоритета User, Pool, Site, Global.

Правила внутри Dial Plan применяются в порядке, выставленном администратором до первого соответствия. Если правило не приводит номер к формату E.164, то ищется закрепляющее правило. Если номер не подпадает под какое-либо правило, либо отсутствует закрепляющее праило, происходит сбой вызова.

В докуменации ничего не говорится про закрепляющие правила, но схема работы проверена на нескольких инсталяциях с декабрьскими обновлениями (CU4) . Возможно требование к «закреплению» правил это Баг и исправят позднее. Закрепляющие правила могут не изменять номер, но дают Lync Server понять, что вы уверены в том, что хотите использовать номер не в E.164 формате. Просто измененный одним правилом номер должен подпадать под регулярное выражение другого правила.

Примеры:

Имеем Dial Plan из  6-и правил:

  • Правило 1: ^(\d{4})$ -> 111
  • Правило 2: ^(\d{5})$ -> 111
  • Правило 3: ^(\d{7})$ ->       (Закрепляющее правило для правила 1)
  • Правило 4: ^9(\d{7})$ -> +7495
  • Правило 5: ^98(\d{10})$ -> +7
  • Правило 6: ^(\d{3})$ -> +74951234567;ext=

И имеем 6 вызовов, попавших на этот Dial Plan, на следующие номера:

  • 12
  • 12345
  • 1234
  • +74951234567
  • 91234567
  • +1234
  • 123

Попробуйте сами определить, какие вызовы «пройдут» и что произойдёт с номерами, а потом проверьте себя ниже по тексту.

Вызов 1. Звонок на номер 12. Номер не в формате E.164 и не подходит ни под одно правило. Значит, вызов будет отбит без дополнительных проверок. 

Вызов 2. Звонок на номер 12345. Согласно правилу 2 вызов преобразуется к 11112345. Но это еще не всё. Правил для номера 11112345 нет, вызов не «закреплен» и также будет отбракован.

Вызов 3. Звонок на номер 1234. Согласно правилу 1 вызов преобразуется к 1111234, а согласно правилу 3 происходит «закрепление». Проверка нормализацией пройдена.

Вызов 4. Звонок на номер +74951234567. Номер уже в формате E.164 и в нормализации не нуждается. Проверка пройдена.

Вызов 5. Звонок на номер 91234567. Согласно правилу 4 номер преобразуется  к +74951234567. Номер +74951234567 в формате E.164. Больше преобразования не требуются. Проверка пройдена.

Вызов 6. Звонок на номер +1234. «+» перед номером есть, значит, считаем, что номер в порядке J. Преобразований не требуется. Проверка пройдена.

Вызов 7. Звонок на номер 123. Согласно правилу 6 номер преобразуется  к +74951234567;ext=123. Больше преобразования не требуются. Проверка пройдена. Собственно, это пример правила, преобразующего номер к формату, рекомендованному MS для организаций, в которых имеется один прямой номер.

Принцип понятен? Тогда еще нюансы:

  • При исходящих вызовах проверяется и меняется только номер вызываемого абонента (Calling ID).
  • При входящем вызове меняется и номер вызывающего (Caller ID) и номер вызываемого (Calling ID), но проверяется только (Caller ID). То есть, если Caller ID  не подпадает ни под одно правило – вызов всё равно пройдет.
  • Для входящих вызовов можно использовать планы только план нумерации уровня пула, (где пул – это голосовой шлюз) либо global.
  • Вызовы, пришедшие от автосекретаря Exchange UM, если уж они пришли, подпадают только под план нумерации global.       

Сколько следует создавать планов нумерации? 

Обычно – столько, сколько у вас филиалов с выходом в город. Посмотрите на правило номер 4 из приведенного выше примера. В каждом городе люди захотят звонить в родной город по короткому номеру. Если сможете приучить пользователей звонить в ближайший город, используя E.164 или формат из правила 5 того же примера, сможете обходиться одним Dial Plan на организацию.

Кроме того, если одна/две/три первых цифры номера отвечают за номер филиала, пользователи могут захотеть звонить внутри филиала по коротким номерам, без этого префикса. Это обеспечивается выделенным планом (правило 1 из примера) и тоже требует привязки планов нумерации к филиалам.

Транзитные АТС

Существует такое понятие, как транзитная АТС (автоматическая телефонная станция). Это означает, что АТС выступает как шлюз между двумя другими телефонными станциями. То есть с одного не привязанного к АТС телефонного номера можно позвонить через АТС на другой номер, также не привязанный к АТС.

<Телефон 1> — <АТС 1> — <АТС 2> — <АТС 3> — <Телефон 2>

Так вот, ни OCS, ни Lync в текущей версии, транзитной АТС не является. То есть, для всех телефонных вызовов, номер вызывающего или вызываемого должен быть в базе OCS/Lync.

Единственный способ обойти правило – создать в конфигурации Lync аналоговое устройство. Например, мы говорим, что у нас есть аналоговый телефон с номером 1234 и находится он за шлюзом АТС 3. Теперь с любого номера через АТС 1 можно позвонить на номер 1234 за АТС 3. С обратным сценарием сложнее, но об этом в другой раз.

Обработка входящих вызовов

Теперь у нас достаточно информации для разбора процесса обработки входящих вызовов. Итак:

  1. На первом этапе к номерам  Caller ID и Called ID применятся Dial Plan.
  2. Полученный после обработки номер  Called ID проверяется на соответствие телефонным номерам объектов Lync: клиентов, почтовых контактов, аналоговых аппаратов, служб конференций и групп дозвона (Response Group).
  3. Если соответствие найдено – вызов пересылается на нужный объект: клиенту, на сервер Exchange с ролью Unified Messaging либо на шлюз, за которым находится аналоговый телефон.

Отображение имени звонящего

Кстати, если телефонный номер вызывающего абонента по итогам нормализации пришел клиенту Lync в формате E.164, клиентское ПО Lync попытается распознать вызывающего, сопоставив номер с имеющимся списком контактов. Если же номер пришел без «+» в начале, единственный способ увидеть имя звонящего – передать Caller Name через шлюз.  

Обработка исходящих вызовов

В этом сценарии действий чуть больше.

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

Политики Вызовов

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

В проверке участвуют три компонента: Voice Policy, PSTN Usage и Route.

Voice Policy (голосовая политика) применяется по той же схеме, что и Dial Plan. Помимо доступных функций телефонии, Voice Policy определяет перечень так называемых PSTN Usage (приблизительно можно перевести как тип вызовов), включая приоритет использования.

Маршрут (Route) включает в себя регулярное выражение и ссылку на голосовые шлюзы, через которые можно отправить вызов, подпадающий под это регулярное выражение. Route также связывается с PSTN Usage.

Таким образом, при осуществлении вызова, Lync Server берет вызываемый нормализованный номер и первый тип вызовов из голосовой политики, и начинает прогонять номер через регулярные маршруты данного типа вызовов. Не найдя соответствия – переходит к следующему типу вызовов.

Пример использования такой схемы не самый эффективный, но сойдет для понимания концепции:

  • Голосовая политика MSK_BUH – включает в себя два типа вызовов: BRANCHES_LOCAL и MSK_RU.
  • Голосовая политика SBP_ BUH включает в себя два типа вызовов: BRANCHES_LOCAL и SPB_RU.
  • Голосовая политика MSK_VIP – включает в себя три типа вызовов: BRANCHES_LOCAL, MSK_ALL и SPB_ALL
  • Голосовая политика SPB_VIP – включает в себя три типа вызовов: BRANCHES_LOCAL, SPB_ALL и SPB_ALL
  • И т. д.

Соответственно, BRANCHES_LOCAL входит в кучу маршрутов формата +7<код города филиала> -> шлюз в филиале.

C остальным всё просто. При вызовах в город, где у нас есть филиал, вначале пробуем позвонить через этот филиал. Если не вышло или нет маршрута до этого города, звоним через местный шлюз.

VIP пользователи не только могут звонить по всему миру, но, кроме того, при отказе своего шлюза могут звонить через другой крупный филиал.

Нормализация на выходе

Моя «любимая» тема 🙂

Теперь, когда мы почти уже выполнили вызов, осталась самая малость… Привести номера в соответствие требованиям оператора телефонии.  Хотелки у операторов бывают разные. 84951234567, 4951234567, 74951234567.Некоторые хотят получить номер 1234567, для локальных вызовов и 74951234567 для вызовов по стране.

А что мы можем?

В настройках взаимодействия со шлюзом (Trunk settings) можно указать регулярные выражения для манипуляций Called ID, что не может не радовать…. Но вот номер звонящего (Calling ID) можно поменять только в свойствах маршрута, причем не регулярным выражением, а исключительно на другой номер (один на маршрут).  В Trunk settings мы можем дополнительно только срезать с Calling ID пресловутый «+».

Выходит, что для каждого VIP с прямым номером, мы должны делать отдельные Voice Policy, PSTN Usage и Route. Это если у нас нет шлюза, и мы не договорились с оператором. 🙂

Ждем Lync 15.

Обработка исходящих вызовов

Теперь коротко весь процесс для исходящих вызовов:

  1. На первом этапе, еще на клиенте Lync, к номеру Called ID применятся Dial Plan.
  2. Полученный после обработки номер Called ID прогоняется через связку Voice Policy, PSTN Usage, Route
  3. Если соответствие найдено – идет попытка вызова на маршрут. При этом номера Called ID и Calling ID меняются в соответствии с настройками Trunk settings и Route.
  4. Если шлюз не доступен – проверяется следующий шлюз маршрута
  5. Если все шлюзы маршрута недоступны – ищется следующий подходящий маршрут.

И напоследок. Обычно, получая номера формате +74951234567;ext=1234 шлюз отбрасывает ;ext=1234, что нам и требуется.

И напоследок, снова про форматы номеров

Предположим, у нас есть 10 филиалов, в каждом из которых есть по 10 VIP пользователей с прямыми номерами. Остальным можно дозвониться через локальный номер автосекретаря.

Как я уже говорил, обычно для каждого филиала создается свой Dial Plan.

Теперь считаем.

В каждом Dial Plan для каждого филиала нужно создать правило: <внутренние номера диапазона филиала> -> <номер автосекретаря>;ext=<внутренние номера диапазона филиала>.

Итого 1010 = 100 правил

VIP наверняка получат красивые внутренние номера (а значит записанные вразнобой) и для них нужно написать отдельные правила формата <внутренний номер VIP пользователя> -> <городской номер VIP пользователя>;ext=<внутренний номер VIP пользователя>.

Итого 10010 = 1000 Правил.

1100 правил. При этом любое изменение нужно отразить в 10 местах. Вот почему я так «люблю» формат +74951234567;ext=1234 🙂

Есть кстати еще одна причина. Если у вас имеется сопряжение с другими АТС и номер от другой АТС пришел к вам после преобразований формате +74951234567;ext=1234, в клиенте вы увидите только +74951234567.  Причем, с номерами, начинающимися на «+1» такой проблемы нет. Может на тот момент когда вы читаете эту статью, проблема уже исправлена, но я застал её и в OCS и Lync Server. 

P.S.

Давно не писал статьи, так что считайте эту своего рода извинением перед читателями. Уверен, что читать её было сложно, но до сих пор столько фактов по обработке вызовов в Lync Server в одном месте я не встречал.

Реклама
Источник: https://adonin.wordpress.com/2012/02/12/lync-call-processing/



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Обработка телефонных вызовов в Lync Server 2010 Всё о День российской почты поздравление от губернатора


Звонок клиенту сценарий Скрипты продаж по телефону: правила и примеры
Звонок клиенту сценарий Сценарий 23 февраля для настоящих мужчин - 23
Звонок клиенту сценарий Отзывы о теплоходах в Москве АРГО Трэвел
Звонок клиенту сценарий Кейтеринг Kalitniki - ресторан выездного
Звонок клиенту сценарий Этапы переговоров по телефону
Звонок клиенту сценарий Сценарий холодного звонка
Звонок клиенту сценарий Comedy Club - День рождения Павла Воли Смотреть видео бесплатно
Анализ стихотворения Майкова Ласточки сочинения и текст Вот какое замечательное стихотворение я нашла! знаешь, мама, я в него Джордж Оруэлл. 1984 Как сложить салфетки? Как украсить стол салфетками? Красивые поздравления с днем рождения в стихах для женщины Лев и заяц. 35 вариантов - Софт портал игр Хаки Необычный сценарий ко Дню матери