Teams для администратора: чаты есть, но их как бы нет
Или как обычный тикет привёл к тулзе поверх Microsoft Graph
Иногда в helpdesk прилетают тикеты, которые выглядят максимально безобидно.
«Добавьте меня в групповой чат #N»
Без срочности, без подробностей.
Из полезного - только название чата. По нему можно понять департамент и примерно представить, у кого из сотрудников этот чат вообще существует.
На этом хорошие новости заканчиваются.
«Сейчас сделаем» (нет)
Первое, что делает любой администратор M365 - идёт в админку.
И довольно быстро становится понятно, что:
групповых чатов там нет
искать их нельзя
управлять ими тоже нельзя
Пользователь чат видит, общается в нём каждый день, а администратор - как будто живёт в параллельной реальности, где этого чата не существует.
На этом этапе я полез гуглить - вдруг я что-то упускаю.
Но довольно быстро стало ясно: через стандартный UI это не решается вообще.
Окей, значит только API
Дальше я сделал то, что сейчас делают многие - пошёл спрашивать у ИИ, какие вообще есть варианты.
Ответ оказался ожидаемым:
если админка не умеет - остаётся Microsoft Graph API.
Полез в документацию, и тут возникло двойственное ощущение.
С одной стороны, через Graph можно сделать вообще всё:
получить список чатов
найти нужный
chatIdдобавить пользователя
проверить участников
С другой - всё это:
только через API
только через приложение в Azure
с правильными permissions
с токенами
и желательно не перепутать delegated и application доступ
Технически решение есть.
Практически - каждый такой тикет превращается в небольшой квест.
Где начинает реально бесить
Один раз сделать это руками - не проблема.
Но когда подобные запросы прилетают регулярно, начинается одно и то же:
снова идти в Azure
снова проверять права у приложения
снова руками собирать запросы
снова надеяться, что в этот раз ничего не сломается
В какой-то момент стало очевидно: если я каждый раз делаю одно и то же, значит проблема не в Graph, а в отсутствии нормального инструмента поверх него.
Так и появилась идея SwissKnife - небольшой софтины поверх Microsoft Graph, которую я в итоге выложил на гитхаб:
https://github.com/Nemu-x/SwissKnife-for-MS-Graph
Что в итоге получилось
Идея оказалась максимально простой.
Всё, что нужно сделать - один раз:
создать приложение в Azure
выдать ему необходимые доступы (они описаны в репозитории)
сохранить
tenant id,app idиsecret
На этом вся возня с Azure заканчивается.
Дальше ты просто заходишь в приложение и работаешь уже не с API и токенами, а с понятными сущностями:
учётными записями
чатами
группами
данными OneDrive
Без постоянных походов в портал и без ручной сборки Graph-запросов каждый раз заново.
Про OneDrive - коротко
Отдельная боль - копирование данных OneDrive между пользователями.
Миграции, увольнения, временные замены - сценариев хватает.
Технически это тоже решается через Graph, но на практике каждый раз упирается в:
права
идентификаторы
проверки доступа
В SwissKnife это сведено к одной понятной операции, без необходимости каждый раз вспоминать нужные эндпоинты.
Честно про ограничения
Интерфейс у SwissKnife, прямо скажем, немного топорный.
Это не продукт с дизайнером, а рабочая утилита под конкретные задачи.
Кроме этого:
функционал Intune реализован, но не протестирован - просто не было нужных лицензий
логов и админской аналитики пока немного
доступные действия напрямую зависят от того, что вообще видно в конкретном tenant
Это не коробочное решение и не попытка заменить админку.
Почему я решил выложить проект на гитхаб
SwissKnife появился не потому, что хотелось написать инструмент.
Он появился потому, что одна и та же боль повторялась снова и снова.
В какой-то момент стало понятно, что с этим сталкиваюсь не только я - просто каждый администратор решает проблему по-своему и каждый раз вручную.
Проект выложен на гитхаб в надежде, что:
эта боль знакома не только мне
инструмент сможет сэкономить кому-то время
а если найдутся люди, готовые потестировать или подсказать, куда его можно развивать дальше - будет только лучше
Вместо вывода
Если вы администрируете M365 и регулярно сталкиваетесь с ситуациями, когда:
пользователи что-то видят
а админка - нет
- скорее всего, вы уже знакомы с Microsoft Graph чуть ближе, чем хотелось бы.
SwissKnife не решает всех проблем, но в некоторых из них позволяет перестать каждый раз изобретать велосипед.