Как интегрировать MS Teams и экономить 3,3 млн рублей в год на лицензиях Microsoft

Мы делаем проект корпоративного портала на базе Creatio для нашего клиента. Про него мы ранее писали в другой статье. В этот раз расскажем, как мы интегрировали мессенджер MS Teams в корпоративный портал и что из этого вышло.

Бизнес задача — интегрировать мессенджер в портал

Схема работы портала. Корп. мессенджер — это и есть наш MS Teams

Основная задача — интегрировать мессенджер в одно окно с остальными сервисами, то есть сделать мессенджер частью корпоративного портала.

Зачем это нужно? В чем ценность мессенджера внутри портала?

Во-первых — это возможность связывать сущности. Можно создавать задачи из сообщений и привязывать сделки к конкретным перепискам.

Во-вторых – это единая экосистема для конкретного бизнеса, так как больше не нужно использовать 15 программ одновременно.

Как работает мессенджер

В любом мессенджере есть чаты и пользователи. Вот как происходят процессы в нашем случае:

  1. MS Teams клиент запускается
  2. MS Teams «достает» все чаты для текущего пользователя
  3. Пользователь заходит в нужный ему чат
  4. MS Teams загружает с серверов Майкрософта последние N сообщений и отображает их
  5. Далее мессенджер периодически проверяет — «не появилось ли новых сообщений?». Если появились — отображает в текущем чате
  6. Когда пользователь переходит в другой чат, пункты 4 и 5 повторяются, но уже для нового чата
  7. Когда пользователь выходит из чата — сохраняем новые сообщения и отображаем их непрочитанными

Как мы интегрировали мессенджер в портал

Логика работы внутри корпоративного портала

Чтобы внутри портала было отдельное приложение с мессенджером — его нужно каким-то образом туда «вставить»

Изначально хотели «интегрировать» кнопку мессенджера в боковую панель и отображать MS Teams через iframe. Но это не получилось из-за того, что Microsoft блокирует запросы между доменами в iframe. Поэтому мы решили собирать свой интерфейс внутри системы.

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

Как происходит авторизация

Авторизация и в мессенджере и в портале происходит последовательно, через Microsoft Active Directory (по технологии SSO).

Самое сложное — получение сообщений

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

Но «подписаться на все чаты сразу» на дешевом тарифе Е3 нельзя. Чтобы обойти эту сложность и не покупать дорогой тариф нужно делать скрипт. Он автоматически подпишет пользователя на его чаты, пока пользователь онлайн.

Как реализовали способ получения сообщений

Мы сделали скрипт, который подписывает каждого пользователя на отдельный чат и мониторит новые сообщения. У каждого пользователя по 200-250 таких чатов.

150 пользователей * 250 чатов = 37 500 запросов в час. И все это ради того, чтобы просто работали сообщения. Слишком сложно.

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

Сообщения — самое важное, что есть в мессенджере. Если они долго грузятся, не приходят или не сохраняются, то мы просто не получаем информацию вовремя. Некоторые мессенджеры даже берут деньги за хранение истории переписки.

Экономия на тарифах

Наш клиент, как и многие другие, использует базовые лицензии MS Office, которые стоят по 300 рублей в месяц. Для того, чтобы интегрировать MS Teams бесшовно — нужны расширенные тарифы Microsoft 365 E5. Это по 2 000 рублей за месяц → 3,8 млн в год при 150 пользователях (очень дорого).

Майкрософт, внося свои изменения, вынуждает нас собирать такие решения. Это риск, возникший посреди проекта, который никто не мог предугадать

Проблемы с API Майкрософт

Пока мы собирали наш скрипт столкнулись с еще одной проблемой — это API Майкрософта. Microsoft Graph — это единая системы для работы со всеми сервисами Microsoft по API. Но работает она откровенно плохо.

Некоторые методы передачи данных до сих пор находятся в бета-версии. Особенно методы по работе MS Teams. Примерно 20-30% от всех методов — в бета тестировании.

Например, есть «отправка сообщения в личный чат», а «отправка в групповой чат» — это уже бета.

Не хватает метода сделать сообщение «прочитанным». Например, достаем по API все сообщения в выбранном чате. А они не помечаются как прочитанные. Поэтому если зайти в Teams-клиент — они так и останутся непрочитанными.

Все эти недостатки напрямую влияют на бизнес-процессы. Из-за сложностей с уведомлениями сотрудники не получают информацию вовремя и делают работу не так хорошо, как могли бы.

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

Резюме и развитие

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

Если вы по каким то причинам тоже приверженец Майкрософт — теперь вы знаете, что можно сделать, чтобы сэкономить на тарифах.

Интегратор — LAND PRO. Автор статьи — Фёдор Анисимов.

0
30 комментариев
Написать комментарий...
Панда Ву

Выглядит как попытка натянуть сову на глобус. Во первых внутри тимс можно наваять связи с сущностями из внешней корпоративной системы и шарить внутри чатов бесшовно и красиво. Бизнес кейс «только вкладка браузера с единым порталом» вместо «вкладка браузера + приложение МС тимс» не звучит крепким обоснованием ваших мук интеграции и будущих мук клиента сидящего на самопильном UI с бета эндпоинтами. ИМХО. Припихивание слона в игольное ушко всегда дорого, сложно, больно и по как правило на практике никто не оценит. Откроют 100500 вкладок браузера и будут говорить что тимс отдельно работает стабильнее, верните тимс. Но как инженеры - вы молодцы.

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Так мы тимс не убирали, по сути это просто альтернативный клиент, которым можно пользоваться внутри браузера в одном окне. Ну и плюс он может взаимодействовать с bpm движком самой системы, то есть в итоге мне кажется что он будет более функционален, чем сущности в тимс🤷🏽‍♂️

А так есть доля истины, но наша задача теперь выкрутить из этого более масштабное решение)

Ответить
Развернуть ветку
Andrey Tyutchev

неплохая экономия👍🏼

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну да, правда там запросов жесть... почти highload сделали из 100 пользователей)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

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

Как я люблю говорить, многие люди в рф, очень будут есть г***о - главное что бы не дорого, а лучше бесплатно😂 Такова суть)

Ответить
Развернуть ветку
Костя Волков

Нормально вы одним комментом всех обосрали.

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну не всех... но я думаю многие замечали данный тренд на рынке)

Ответить
Развернуть ветку
Leonid Evtushenko

Отличная статья. Спасибо, будем думать для своего проекта

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Велком, обращайтесь)

Ответить
Развернуть ветку
Тип Кипяток

ну с текущим курсом даже дороже выйдет так то

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну подсчеты были на момент написания, сейчас у майков уже почти 2 200 висит на сайте)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну давайте разбираться:
1. У каждого сотрудника есть чат с коллегами, личка. Соответственно вот у вас уже 100-150 чатов.
2. Плюс есть каналы и чатики дополнительно созданные и на аккаунте админа, цифры были около 100.

Вот вам и математика, а вообще обычно любое внедрение нужно руководству. Вопрос только в том как это будет подано сотрудникам🤷🏽‍♂️

Ответить
Развернуть ветку
Vitaly

MS Teams бесплатную версию имеет 

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Вроде никто обратного и не говорил)

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну да, есть такое)

Ответить
Развернуть ветку
Oleg Pushko

Почему не использовали внутренние возможности bpm?! Все, что Вы описали возможно исполнить там.

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Ну надо понимать, что функциональность bpm несколько шире чем то что описано в статье, и я как раз об этом и говорю, что пока это просто вьюха, которую далее надо будет развивать, вот в принципе и все)

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Я не эксперт который знает тимс вдоль и поперек, но даже от его интеграции с jira которую я видел возникают вопросы) не говоря уже о реализации адекватного участия его в бизнес процессах)

Ответить
Развернуть ветку
Mike Kosulin
Изначально хотели «интегрировать» кнопку мессенджера в боковую панель и отображать MS Teams через iframe. Но это не получилось из-за того, что Microsoft блокирует запросы между доменами в iframe. Поэтому мы решили собирать свой интерфейс внутри системы.

еще можно попробовать BrowserView или WebView(не помню точно) использовать в Electron, не самое лучшее решение, но альтернативное.

p.s. а у тимс нет SSO разве? в таблице почему-то минус

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Кстати можно было попробовать) спасибо за рекомендацию)

А вот что касается sso, то он на бесплатном тарифе не предоставляется, а вообще сама табличка сравнивает именно бесплатные версии. Но я проверю на всякий случай)

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

немного не понял, если честно

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Спасибо, приятно слышать такие отзывы)

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Изучу, должно быть интересно, спасибо)

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Аркадий Кашковский
Автор

Битрикс они пробовали им не пошел, в вот про OpenMCU-ru не слышал. Можете дать какой-то фидбек по нему, имеет ли смысл изучать и углубляться?

Ответить
Развернуть ветку
27 комментариев
Раскрывать всегда