Архив

Archive for Сентябрь 2017

Skype For Business 2015 интеграция с бесплатной PBX

В рамках одного проекта на тестовом стенде был сделан транк между Skype For Business 2015 (далее по тексту Skype) и бесплатной версии АТС (бесплатная лицензия на 1 год) Vodia PBX, ниже описание настроек. Задача — выполнения звонков Skype<—>Vodia, телефонные номера в Skype — 55xx, в Vodia PBX — 57xx.

Настройки Vodia PBX

Для настройки Vodia PBX необходимо:

  • Скачать пакет с сервером Vodia  можно с сайта — http://vodia.com/onefree;
  • Далее необходимо установить пакет Vodia PBX. Я установил на Windows 10.
  • На сайте vodia.com получить тестовую лицензию на 1 год и указать ее в разделе License. Если этого не сделать сервисы Vodia корректно работать не будут.

v1

  • В разделе Security->General указать логин и пароль для администратора. При необходимости можно создать  дополнительный аккаунт.
  • В разделе SIP проверить номера портов, которые используются для SIP протокола.

v2

  • В разделе Domains необходимо создать домен (я создал домен соответсвующий SIP домену в Skype).v4
  • После создания домена, необходимо зайти в его настройки, нажав на его название.

v3

  • В настройках домена WCFC.demo в разделе Trunks создать новый транк, нажав на кнопку Add. Предполагается, что транк будет использовать транспортный протокол TCP, адрес Mediation сервера uc01.wcfc.local, порт TCP: 5068.

Настройки транка указаны ниже:

v7

В настройках транка в разделе SIP Caller-ID Presentation (см выше) указаны следующие значения полей, по умолчанию прямые значения которых не отображаются, поэтому чтобы узнать их настоящие значения в Value нужно указать Other.

v10

  • В настройках домена WCFC.demo в разделе Feauters->Dial Plan нужно будет создать новый Dial Plan, указав его название(например uc.demo). В рамках стенда все звонки должы отправляться по одному транку, я не стал указывать конкретные диапазоны и оставил символ *, что означает направлять все исходяшие звонки в транк «SIP Gateway».

v8

  • В настройках домена WCFC.demo в разделе Extensions создать аккаунт с номером телефона из диапазона 57xx. v5
  • После создания аккаунта, зайти в его настройки и указать необходимый dial plan — в моем случае, это uc.demo.

v6

  • Настройки в домене WCFC.demo раздела Advanced->General Settings

v9

В качестве клиента использовался бесплатный SIP клиент PhonerLite

v11

Настройка Skype

Для настройки голосовой интеграции между Skype и PBX или прокси необходимо:

  1. Установить Mediation Server;
  2. Создать в топологии PSTN Gate и Trunks;
  3. Создать Dial Plan;
  4. Создать голосовую политику (Voice Policy);
  5. Настроить конфигурацию транка;
  6. Настроить пользователей Skype;
  7. Иметь в наличие специализированные лицензии.

1 Установка Mediation Server

Mediation Server — это роль которая отвечает за трансляцию сигнала из формата RTA или SILK в формат понятный ТСОП — G711.

Для того, чтобы проверить или установить Mediation Server, необходимо открыть соответсвующий раздел в Topology Builder.

v20

2 Создание PSTN Gate

На каритнке ниже создано два шлюза — шлюз PSTN.WCFC.LOCAL — это Vodia, порт 5060, шлюз PBX.WCFC.LOCAL это другая IP-АТС. (После создания шлюзов не забываем опубликовать обновленную топологию).

В качестве имени шлюза необходимо указывать FQDN, который корректно разрешается в DNS Mediation севером. Trunks создаются автоматически, после создания PSTN Gate.

v13v14

3 Создание Dial Plan

Dial Plan это правила нормализации, которые преобразуют телефонные номера в единый стандарт (E. 164). Это относится как к входящим так и к исходящим номерам.

В реальной жизни форматов номеров конечно же больше, чем в приведенным ниже примере.

Предоставленное на изображении ниже правило отслеживает любые четырехзначные номера и прибавляет к ним знак «+».

v12

4 Голосовая политика маршрутизации

Голосовая политика маршрутизации или Voice Routing — определяет для пользователей Skype кто из пользователей и куда может выполнять звонки.

На тестовом стенде все упрощается, поэтому не принципиально какая область действия будет у правила маршрутизации. Я создал для пользователей и назвал «Внутренние звонки».

Настройки политики:

v16.png

  • После того, как голосовая политика создана, необходимо создать PSTN Usage к которым потом привязать конкретные маршруты. Изначально я создаю пустые PSTN Usage. В этом примере создано два PSTN Usage. (На изображении PSTN Usage уже прикреплены маршруты, изначально это поле будет пустым).
  • После создания PSTN Usage, необходимо создать маршрут.
  • Маршрут создается исходя из того, какие номера нужно отследить и в какой шлюз PSTN направить. В моем случае необходимо отследить вызываемые абонентами Skype номера +57xx (уже нормализованные после Dial Plan) и направить их в шлюз pstn.wcfc.local. Кнопка Select позволяет прикрепить маршрут к созанному на предыдущем шаге PSTN Usage.

v17

В результате на стенде было создано два маршрута, один отслеживал звонки +57xx и отправлял на Vodia, второй маршрут отправлял звонки +56xx на MX-One PBX.

v15

5 Настройка транка 

Настройки транка:

v18.png

В разделе Associated translation rule можно создать правила изменения исходящих и вызываемых номеров на выходе из Skype транка. Например можно указать правило по отношению к исходящим номерам, смысл которого удаление знака «+» у номеров. На самом деле в этом нет необходимости — Vodia примет звонки с номеров +55xx.

6 Настройка пользователей в Skype

Для пользователей необходимо включить функцию Enterprise Voice, назначить голосовую политику, так как она создана на пользователей и назначить номер телефона.

v19

 

После того, как все настройки на Vodia и Skype будут выполнены, между пользователями двух систем можно выполнять аудио звонки. Единственный нюанс заключается в том, что Vodia в бесплатном режиме может осуществлять не более двух одновременных вызовов.

Рубрики:Skype For Business Метки: , , ,

Exchange 2016 | Как я ставил обновления

Недавно столкнулся с проблемами обновления (СU5) сервера Exchange 2016 RTM + Windows 2016 (не R2!). Напоминаю, чтобы посмотреть текущую версию Exchange можно выполнив команду (Get-ExchangeServer | Format-List Name, Edition, AdminDisplayVersion). До того, как я начал разбираться в чем проблема обновление было запущено несколько раз, ошибки записаны не были, однако все логи в разделе «C:\ExchangeSetupLogs» были сохранены :).

Первые  два запуска закончились с ошибкой:

[ERROR] There isn’t enough disk space on the system drive to copy the Exchange Server setup files.

После того, как было добавлено доп. место на диске последовал третий запуск обновления, который так же завершился ошибкой:

[08.18.2017 13:06:05.0155] [1] [ERROR] Service ‘Microsoft Exchange Service Host (MSExchangeServiceHost)’ cannot be started due to the following error: Cannot start service MSExchangeServiceHost on computer ‘.’.
[08.18.2017 13:06:05.0155] [1] [ERROR] Cannot start service MSExchangeServiceHost on computer ‘.’.
[08.18.2017 13:06:05.0155] [1] [ERROR] The service cannot be started, either because it is disabled or because it has no enabled devices associated with it
[08.18.2017 13:06:05.0158] [1] [ERROR-REFERENCE] Id=BridgeheadRoleSetterComponent___115c1108e99e4560bd2c03c0fec99908 Component=EXCHANGE14:\Current\Release\Shared\Datacenter\Setup
[08.18.2017 13:06:05.0191] [1] Setup is stopping now because of one or more critical errors.
[08.18.2017 13:06:05.0191] [1] Finished executing component tasks.

Далее, когда я начал изучение проблемы — следующий запуск завершился той же ошибкой, смысл которой в том, что после установки обновлений система не может запустить сервис «Microsoft Exchange Service Host (MSExchangeServiceHost)« в оснастке сервисов  -все сервисы Exchange были переведены в состояние Disabled. После перевода сервисов в автоматический запуск (Automatic) и повторного запуска обновлений стало ясно, что мастер обновления Exchange практически сразу после старта переводит все сервисы в состояние (Disabled), но в процессе обновления не может их запустить.

Из логов обновлений видно что скрипт выполняет следующие команды:

Executing:
if (get-service MSExchangeServiceHost* | where {$_.name -eq «MSExchangeServiceHost»})
{
restart-service MSExchangeServiceHost
}

Я не знаю, что это — ошибка разработчиков или другая ошибка, но команды перевода сервиса из Disabled в Automatic в скрипте нет, поэтому происходит остановка обновлений. Если посмотреть, на лог можно увидеть, что запуск некоторых сервисов осуществлялся по другому сценарию:

[08.18.2017 08:31:52.0477] [1] Executing:
if (Get-Service WinMgmt* | ?{$_.Name -eq ‘WinMgmt’})
{
Set-Service WinMgmt -StartupType Automatic
Start-SetupService -ServiceName WinMgmt
}

Чтобы решить эту проблему, я сделал задачу в Task Sheduler, которая каждую минуту запускает скрипт Poweshell:

Get-Service | where{$_.Name -Like ‘MSExchange*’} | set-Service -StartupType ‘automatic’

После этого шаг на котором останавливалось обновление был пройден, далее обновление остановилось со следующей ошибкой:

[08.22.2017 12:30:04.0164] [1] [ERROR] Couldn’t open package ‘F:\en\UMLanguagePack.en-US.msi’. This installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package. Error code is 1619.
[08.22.2017 12:30:04.0164] [1] [ERROR] This installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package
[08.22.2017 12:30:04.0165] [1] [ERROR-REFERENCE] Id=UmLanguagePackComponent___98c7f337c1334ef59c2ac59e52813c12 Component=EXCHANGE14:\Current\Release\Client Access\Unified Messaging

Я всегда запускаю обновления с локальных дисков, диска F:/ у меня не было ни локального, ни виртуального привода CD. Пришлось одному из дисков присвоить букву F:/.  Я думаю эта ошибка произошла из-за того, что мой коллега изначально запускал обновление с виртуального диска, а так как на сервере были диски C, D, E — этому диску присвоилось имя F:/. Возможно, что эту проблему решить можно было по другому..если кто-то будет читать и знает как — напишите пожалуйста в комментариях.

После этого была еще одна ошибка, которая остановила обновление:

[08.22.2017 15:52:06.0111] [1] [ERROR] Cannot find path ‘C:\Program Files\Microsoft\Exchange Server\V15\UnifiedMessaging\grammars’ because it does not exist.
[08.22.2017 15:52:06.0111] [1] [ERROR-REFERENCE] Id=UnifiedMessagingComponent___99d8be02cb8d413eafc6ff15e437e13d Component=EXCHANGE14:\Current\Release\Shared\Datacenter\Setup
[08.22.2017 15:52:06.0111] [1] Setup is stopping now because of one or more critical errors.

Решением этой проблемы было ручное создание папки grammars в папке «C:\Program Files\Microsoft\Exchange Server\V15\UnifiedMessaging».

Так же при поиске решений проблемы было найдено несколько заметок, в котороых сообщалось о несовместимости CU 5 с NET.Framework 4.7:

После всей этой истории я еще раз сделал выводы:

  1. Все перед обновлением выполнять резервирование;
  2. Потратить время на изучение проблем, которые могут воникнуть в результате обновления CU.
  3. Запускать обновления с локальных дисков на сервере.
  4. Создание тестового стенда макимально приближенного к промышленной среде и тестирование обновлений на нем.
Рубрики:Exchange