Уведомления о входящих заданиях в Microsoft Skype for business

21 5

Применение системы объединенных коммуникаций Microsoft Skype for Business для уведомления пользователей СЭД о событиях системы

Microsoft Skype for Business (далее – SfB, прежнее наименование – Lync) представляет собой систему объединенных коммуникаций, получившую достаточно широкое распространение в корпоративной среде. Быстрое распространение этой системы обуславливается не только ее многочисленными возможностями в поставке «из коробки», но и весьма гибкими возможностями расширения посредством представленных компанией-разработчиком пакетов Unified Communications Managed API (далее - UCMA) и Lync SDK. Использование этих компонентов, помимо прочего, позволяет интегрировать SfB со множеством сторонних программных продуктов, решая различные задачи, стоящие перед пользователями. Возможности расширения SfB могут быть использованы и в системе электронного документооборота Directum (далее – СЭД).

В ряде случаев появляется необходимость автоматического информирования пользователей о событиях в СЭД или управление событиями СЭД через корпоративную систему коммуникаций SfB. К сожалению, существующий модуль интеграции СЭД Directum с Microsoft Lync не имеет функций для каких-либо автоматических действий (http://www.directum.ru/4229435.aspx). Однако, применение комплектов средств разработки для SfB и архитектура СЭД Directum позволяет решить эту задачу, создав приложение, передающее информацию или инициирующее действия в/из СЭД через SfB.

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

Для подготовки приложения потребуются следующие компоненты:

  1. UCMA: (https://www.microsoft.com/en-us/download/details.aspx?id=47345)[1].
  2. Framework, соответствующий версии UCMA (например, для UCMA 5.0 требуется Framework не ниже версии 4.0)
  3. Microsoft Visual Studio (https://www.visualstudio.com/ru-ru/downloads/download-visual-studio-vs.aspx)
  4. System Center Orchestrator  (далее – SCO) (https://www.microsoft.com/ru-ru/evalcenter/evaluate-system-center-2012-r2) или Task Sheduler (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)

При желании, вместо UCMA можно использовать Lync SDK (https://www.microsoft.com/en-US/download/details.aspx?id=36824).

Создание приложения для отправки сообщений через SfB подробно описано в примерах, которые входят в состав установки UCMA и подробно описаны в библиотеке MSDN: https://msdn.microsoft.com/en-us/library/office/dn466129(v=office.16).aspx. Кроме того, можно воспользоваться видеоматериалами, представленными на странице виртуального сообщества разработчиков и инженеров Microsoft – MSDN Channel9: https://channel9.msdn.com/posts/UCMA-Hello-World-Send-an-Instant-Message?ocid=relatedentry.

Созданное приложение должно отправлять заданному набору пользователей SfB определенный текст, индивидуальный для каждого адресата. Для получения сведений об адресатах рассылки и данных для уведомлений можно использовать метод прямого подключения к базе данных СЭД, либо несколько более сложный вариант – использовать объектную модель СЭД.

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

В случае применения метода получения необходимых сведений напрямую из базы данных СЭД можно использовать следующий запрос, позволяющий получить выборку пользователей, подписавшихся в соответствующем справочнике на рассылку непрочитанных входящих заданий:

Листинг 1

WITH t1 (UserLogin)

AS (

       SELECT UserLogin

       FROM SBTaskJob

       INNER JOIN SBTask ON TaskID = SBTask.XRecID

       INNER JOIN MBAnalit ON SBTask.Author = MBAnalit.Analit

       INNER JOIN MBAnalit Executor ON SBTaskJob.Executor = Executor.Analit

       INNER JOIN MBUser ON Executor.NameAn = UserName

       WHERE SBTaskJob.Readed = 'N'

             AND SBTaskJob.Kind = 'J'

              AND SBTaskJob.StartDate >= DATEADD(MINUTE, - ПериодЗапускаПриложения, GETDATE())

       )

SELECT DISTINCT MBUser.UserLogin

FROM MBAnalit

INNER JOIN MBAnalit mbu ON MBAnalit.Polzovatel = mbu.Analit

INNER JOIN MBUser ON mbu.NameAn = MBUser.UserName

INNER JOIN t1 ON MBUser.UserLogin = t1.UserLogin

WHERE MBAnalit.Vid = КодВашегоСправочникаПодписки

       AND MBanalit.YesNo7 = 'Д'

Для составления текста сообщения можно использовать следующий запрос:

Листинг 2

SELECT CONCAT (

             ROW_NUMBER() OVER (

                    ORDER BY SBTaskJob.StartDate

                    )

             ,') Тема: '

             ,SBTaskJob.Subject

             ,' Дата старта: '

             ,SBTaskJob.StartDate

             ,' Инициатор: '

             ,MBAnalit.NameAn

             )

FROM SBTaskJob

INNER JOIN SBTask ON TaskID = SBTask.XRecID

INNER JOIN MBAnalit ON SBTask.Author = MBAnalit.Analit

INNER JOIN MBAnalit Executor ON SBTaskJob.Executor = Executor.Analit

INNER JOIN MBUser ON Executor.NameAn = UserName

WHERE SBTaskJob.Readed = 'N'

       AND SBTaskJob.Kind = 'J'

       AND SBTaskJob.StartDate >= DATEADD(MINUTE, - 20, GETDATE())

       AND UserLogin = 'ЛогинПользователяИзЛистинга1'

Полученное приложение необходимо запускать один раз в заданный в листинге 1 промежуток времени средствами стандартного Task Sheduler в Windows, либо SCO (преимущество в выборе способа запуска будет зависеть от поставленных задач и имеющихся возможностей). В результате, в SfB будет приходить сообщение с перечнем полученных выборкой событий.

Функциональность данной схемы подлежит расширению, ограниченному лишь возможностями СЭД и UCMA, а также возможностями разработчиков и потребностями пользователей систем[2].

 

Подробную информацию о перечисленных компонентах SfB можно найти в библиотеке MSDN:

 

[1] Версия UCMA зависит от используемой в вашей инфраструктуре системы объединенных коммуникаций.

[2] Например, используя объектную модель СЭД, инициировать запуск определенных действий по командам, поданным созданному нами приложению в окно чата SfB.

21
Авторизуйтесь, чтобы оценить материал.
1
Валентина Писанова

Круто yes

Алексей Семакин
При желании, вместо UCMA можно использовать Lync SDK

В чем будет разница? Они полностью взаимозаменяемы или есть несовместимости, ограничения?

В чем будет разница?

UCMA и Lync SDK - пакеты разработки для разных объектов SfB: UCMA - API сервера, Lync SDK - API клиента. Существует и третий вариант - UCWA (web api сервера).

С более подробным описанием пакетов можно ознакомиться в статьях библиотеки MSDN:

1. UCMA: https://msdn.microsoft.com/en-us/library/dn454984(v=office.16).aspx

2. UCWA: https://msdn.microsoft.com/en-us/library/dn324971(v=office.16).aspx

3. Lync SDK: https://msdn.microsoft.com/en-us/library/jj933180.aspx

Примеры можно смотреть здесь: https://msdn.microsoft.com/en-us/office/dn820099.aspx

Игорь Прищепов

Lync есть не везде. В обычный skype можно настроить?
 

Дмитрий Каргапольцев
В обычный skype можно настроить?

Видится так, что описанным способом можно прикрутить уведомления к любому мессенджеру, который имеет API.

Авторизуйтесь, чтобы написать комментарий