Применение системы объединенных коммуникаций 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 можно отнести и отсутствие необходимости использования лицензий подключения, что может быть весьма актуальным при их недостатке.
Для подготовки приложения потребуются следующие компоненты:
При желании, вместо 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:
Круто
В чем будет разница? Они полностью взаимозаменяемы или есть несовместимости, ограничения?
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 можно настроить?
Видится так, что описанным способом можно прикрутить уведомления к любому мессенджеру, который имеет API.
Авторизуйтесь, чтобы написать комментарий