Производители

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

Расскажем, как мы интегрировали мессенджер 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. Автор статьи — Фёдор Анисимов. Источник - vc.ru