Запись звонков Lync (SFB) через sip транк

Утилита позволяет писать не только звонки между клиентами lync но и звонки через SIP транк !
Free Call Recording for Skype For Business and Lync 2013

Получение формы произвольного вида.

Содержание предыдущих постов

Как уже упоминалось в предыдущих примерах, внешний вид стандартной формы SCSM можно редактировать в Authoring Tool непосредственно в схеме пакета управления в блоке <Customization>, но эти средства являются ограниченными, и иногда не удается достичь внешнего вида формы, который хочет заказчик. С помощью юзерконтрола можно реализовать внешний вид формы абсолютно любого вида. Для этого нужно создать нужный интерфейс контрола с помощью разметки XAML, указать привязку необходимых свойств, реализовать внутреннюю логику работы. Также можно использовать в своих юзерконтролах контролы, которые реализованы в сборках SCSM.

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

qw5

Панель «Вложенные файлы» — это и есть внешний вид нашего юзерконтрола. Для получения внешнего вида используем стандартный контрол RelatedItemsPane из сборки «Microsoft. EnterpriseManagement. ServiceManager. Application. Common. Dll», который помещаем на наш юзерконтрол. RelatedItemsPane является набором из следующих панелей: Затронутые элементы конфигурации, Рабочие элементы, Элементы конфигурации, Статьи базы знаний, Вложенные файлы. Чтобы на контроле отображалась только панель «Вложенные файлы», необходимо отключить видимость всех других панелей. На следующем рисунке показана часть кода, где это реализуется:

qw6

 

Взаимосвязь элементов управления на форме.

Содержание предыдущих постов

С помощью юзерконтрола можно реализовать некоторую взаимосвязь между существующими контролами на форме. Например, при изменении свойств одного элемента, произвести определенные действия с другим элементом или с группой элементов.

В качестве примера рассмотрим связь двух элементов типа список (ListPicker), с помощью которых инициализируются свойства Отдел и Должность. При выборе (или изменении) значения для списка Отдел, для списка Должность доступны не все, а определенные элементы списка.

В качестве значений для свойства Отдел могут быть выбраны значения «Отдел 1», «Отдел 2» и «Отдел 3». При выборе в списке Отдел значения «Отдел 1» в списке Должность доступны значения «Должность 1 1» и «Должность 1 2», при выборе «Отдел 2» — «Должность 2 1» и «Должность 2 2», при выборе «Отдел 3» — «Должность 3 1» и «Должность 3 2», при выборе «Не указано»  отображаются все значения для списка Должность.

Чтобы получить такое соответствие значений двух списков, для элементов списка Должность в свойстве «Описание» указывается соответствующее значение списка Отдел (см. рис.):

qw1

В юзерконтроле этот механизм реализован в обработчике события PropertyChanged для элемента выбора (ListPicker) значения для списка Отдел:

qw2

На следующих рисунках показаны результаты работы контрола при различных значениях списка Отдел:

qw3

qw4

Также при изменении значения списка можно скрывать/отображать другие элементы управления, задавать значения свойствам объекта класса и т.д.

 

Настройка элементов управления на форме в зависимости от принадлежности пользователя к группе AD.

Содержание предыдущих постов

Из первого примера очевидно, что можно полностью управлять элементами управления на форме. Теперь рассмотрим пример, когда будет производиться настройка элементов управления в зависимости от принадлежности пользователя к конкретной группе Active Directory (AD).

C помощью юзерконтрола можно подключиться к текущей AD и определить принадлежит ли пользователь к конкретной группе. На рисунке показан метод определения принадлежности пользователя к группе AD:

5

Для примера определим, входит ли пользователь в группу CSAdministrator, если да, то все поля на форме для него будут недоступны для редактирования, и скрыт журнал действий для созданных экземпляров класса. На следующем рисунке показана форма существующего экземпляра класса для пользователя, который входит в группу CSAdministrator:

6

Таким образом, можно осуществить настройку ролей для пользователей, работающих в SCSM, поместив их в определенную группу AD и, в зависимости от принадлежности к конкретной группе, произвести необходимые настройки с формой.

Скрытие стандартных элементов управления на форме инцидента.

Содержание предыдущих постов

Изменить свойства стандартных элементов управления на форме можно с помощью AuthoringTools или же вручную в пакете управления в блоке для формы. Например, можно скрыть некоторые контролы, изменить размеры, отступы и т.д.

Рассмотрим пример, когда нужно скрыть все стандартные вкладки на форме инцидента при его создании: Общие, Действия, Дочерние инциденты, Связанные элементы, Разрешение, Уровень обслуживания, Журнал. На рисунке показана стандартная форма при создании инцидента и существующие вкладки (выделены красной рамкой):

1.png

Скрыть все вкладки с помощью Authoring Tools или в пакете управления нельзя, т.к. их отображение изменяется программно? после загрузки информации из пакета управления. Решить эту задачу можно, используя юзерконтрол.

С помощью юзерконтрола можно получить доступ ко всем элементам, расположенным на той же форме, что и юзерконтрол. Это осуществляется с помощью методов LogicalTreeHelper.GetParent, LogicalTreeHelper.GetChildren и VisualTreeHelper.GetChild. В итоге, можно управлять любыми элементами управления на форме, изменять их свойства (например, скрывать или делать неактивными), добавлять обработчики событий, и т.д.

Ниже показан метод скрытия всех вкладок на форме инцидента:

4

На следующем рисунке показан результат работы юзерконтрола (форма создания экземпляра класса SCSMUserControl):

2

Также с помощью юзерконтрола можно скрывать составные элементы управления стандартных контролов (что также невозможно сделать стандартными средствами). Например, есть стандартный контрол SCSM для выбора пользователя UserPicker (Затрагиваемый пользователь, Кому назначено), в свою очередь он состоит из набора других контролов. С помощью юзерконтрола можно получить доступ к этим составным элементам и изменить их. Например, скрыть кнопку для отображения окна выбора объектов, что показано на рисунке:

3

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

Решение задач в SCSM (Сервис менеджер) с помощью пользовательского элемента управления UserControl

Содержание будущих постов:

  1. Скрытие стандартных элементов управления на форме инцидента.
  2. Настройка элементов управления на форме в зависимости от принадлежности пользователя к группе AD
  3. Взаимосвязь элементов управления на форме
  4. Получение формы произвольного вида

Для решения некоторых задач в SCSM, которые невозможно решить с помощью стандартных средств, можно использовать пользовательский элемент управления (UserControl, юзерконтрол). Механизм создания и настройки собственного юзерконтрола очень хорошо описан в статье Антона Гриценко: http://blog.scsmsolutions.ru/2011/07/how-to-usercontrol-for-scsm-2010-sp1/

Для того, чтобы понимать, о чем пойдет речь, нужно внимательно изучить эту статью и понять основные принципы работы.

C помощью юзерконтрола можно осуществлять настройку стандартных форм SCSM. Приведем список некоторых возможностей:

  • возможность изменять параметры стандартных элементов управления на форме (например, включать или отключать обязательность полей, делать недоступными для редактирования или невидимыми и т.д.);
  • настройка доступности и отображения элементов на форме в зависимости от принадлежности пользователя к группе AD;
  • настройка свойств в зависимости от изменения значения другого свойства (например, при изменении значения списка изменяется другой список или изменяется внешний вид формы, и т.п.);
  • присвоение значений свойствам (например, при создании можно заполнять обязательные свойства);
  • редактирование стандартной формы для получения формы требуемого вида.

Далее в следующих постах мы  более подробно рассмотрим решение некоторых практических задач.

Для примеров создан отдельный пакет управления SCSMUserControlExample, в котором объявлен новый класс Class_SCSMUserControlExample, наследованный от класса Incident (обратите внимание, не расширенный, а наследованный), в него добавлены новые свойства: Фамилия (тип: строка), Имя (тип: строка), Отчество (тип: строка), Отдел (тип: список) и Должность (список). Для инициализации свойств Отдел и Должность объявлены два списка. Также в пакете упраления объявлены TypeProjection CustomForm_SCSMUserControlExample_TypeProjection (точно такая же, как для формы инцидента, но в качестве типа указан новый класс SCSMUserControlExample) и форма, которой будет являться стандартная форма Инцидента, но для которой в качестве цели указана новая TypeProjection. По сути создается отдельный класс объектов SCSM со своими свойствами, TypeProjection, формой, но в то же время, сохраняется вся логика работы, как со стандартным Инцидентом.

В пакете управления в блоке <Customization> произведены некоторые изменения над стандартной формой. Были скрыты некоторые стандартные элементы управления, а также добавлены элементы управления для отображения новых свойств класса. Также здесь добавляется на форму, собственно, и UserControl.

В консоле SCSM создано представление SCSMUserControlExampleView в разделе Рабочие элементы->Управление инцидентами.

По этой ссылке на OneDrive находятся

SCSMUserControlExample.mpb — пакет управления с UserControl