Интеграция teams и telegram
Сколько сервисов и мессенджеров ты используешь в течение рабочего дня? А сколько рабочих чатиков внутри? Трекеры, Kanban-доски? Вот основатели tada.team посчитали и сделали свой мессенджер, который объединил все в одном месте. Рассказываем о еще одном сервисе, который живет в облаке Yandex.Cloud.
Мы поговорили с CTO tada.team Максимом Оранским, CEO Андреем Деминым и СРО Павлом Крещишиным, которые рассказали, как зарождался продукт, как компания приняла участие в программе акселерации Yandex Cloud Boost и как планирует развивать бизнес дальше.
По статистике, корпоративные платформы помогают повысить продуктивность обработки информации на 40%. На столько же — сократить переписку по электронной почте. И на 60% — уменьшить количество встреч. Наше решение позволяет и крупной корпорации, и стартапу централизованно вести коммуникацию, избавиться от бюрократии в принятии решений и обеспечить безопасность данных.
Сервис в текущем формате бизнес-мессенджера мы начали создавать в январе 2019 года, когда Максим, будущий CTO, набрал команду из четырех разработчиков. Однако идея родилась задолго до этого.
«Я давно хотел написать что-то подобное сам, а потом увидел вакансию на Facebook, в которой искали разработчика как раз под такой продукт. Я проработал там несколько лет, но потом мое видение разошлось с видением компании. Они хотели делать мессенджер для госсектора, а я — для бизнеса».
Как только появились инвестиции, мы начали реализовывать новый проект мессенджера — такой, каким сами его видели. Tada.team на 100% принадлежит одному акционеру. Мы не искали инвестора — так получилось, что он всегда был рядом. И как только мы попросили средства под эту идею, он поверил в нас и вложился.
Мы видели, что меняется и формат коммуникации, и формат работы: люди могут работать откуда угодно. Пандемия усилила этот тренд, но он был и раньше. В таких условиях главным рабочим инструментом становится уже не ноутбук, а телефон. Сотрудники хотят как можно больше задач решать в смартфоне, который всегда под рукой. Но не все бизнесы могут позволить себе собственные корпоративные приложения. И даже когда они есть, работать в них неудобно. Трекер задач в одном месте, корпоративный мессенджер — в другом, календарь — в третьем, еще есть обязательная рабочая почта и так далее.
Мы соединили все в одном контуре, объединив базовые рабочие инструменты «в одной кнопке». Пока это мессенджер, таск-менеджер и аудиозвонки. К лету мы добавим видеосвязь, API для интеграции со сторонними приложениями и SDK для разработки любых дополнительных инструментов, нужных клиенту.
«В современном мире коммуникации ускоряются, и формат электронной почты отмирает. Приходит новое поколение, которое не пользуется email. Мой сын учится в университете, и в конце курса деканат отправил их группе расписание сессии на почту. Его никто не прочитал. 20-летним почта нужна, только чтобы зарегистрироваться на Госуслугах».
Прототип мобильного приложения мы создали в специальном сервисе для разработки чатов. Потом хотели использовать протокол Telegram, но он оказался слишком сложным для разработки MVP. Немного поработали на Jabber и поняли, что у него есть сформированный функционал, заточенный под другие задачи. Нам нужно было что-то простое, созданное именно под нас, без лишних инструментов. Так мы пришли к собственному протоколу.
Начали с мобильной версии, так как казалось, что львиная доля трафика сегодня идет со смартфонов, а десктоп и веб-версии уже никому не нужны. Однако встреча с живым рынком скорректировала наши планы. Первый же клиент сказал, что все сотрудники работают на компьютерах, и не хотел ставить рабочий софт на личные мобильные. Тогда мы быстро создали веб-версию, а потом — десктоп.
В мае 2019-го выпустили бету и представили ее на мероприятии. Это был первый анонс, а к ноябрю уже начали широко предлагать сервис. К 2020-му он стал полноценным коммерческим продуктом.
С MVP мы участвовали в Московском акселераторе и стали финалистами. В конце 2019-го — начале 2020-го делали пилот с клиентом. Его признали успешным, но заказчик не стал развивать проект. Из-за коронавируса начался период турбулентности: клиенту приходилось урезать бюджет, менять стратегию.
Мы ориентируемся на enterprise-сегмент, но среди наших облачных клиентов также много предприятий малого и среднего бизнеса. Сферы самый разные: ритейл, строительство, производство, есть даже больница.
Мы никогда не занимались рекламой системно — пока делаем фокус на продукт, а не на рынок. Клиенты появляются через сарафанное радио. В начале 2019 года мы выложили приложение в AppStore и Google Play, и пришли первые небольшие клиенты.
В конце 2020-го у нас появилось два крупных клиента. Один из них использует наше решение по модели white label. Второй — госкорпорация, занимающаяся стратегическим производством. Сейчас ведем переговоры с несколькими крупными производственными предприятиями. Госструктуры тоже интересуются сервисом.
В пандемию стало больше запросов от крупного бизнеса: с переходом на удаленку выросла потребность в контролируемом рабочем пространстве.
На сегодня у нас 10 тысяч пользователей, из которых тысяча — это ежедневная аудитория. Облачным решением пользуются больше ста компаний — в основном команды до тридцати человек, но есть и те, в которых более ста сотрудников.
Мы сразу вели разработку в облаке. Это удобно, потому что мы не ограничены в ресурсах, можем легко масштабировать решения, не надо задумываться о доступности и каналах. Все силы тратим на разработку, не отвлекаясь на выстраивание инфраструктуры. Плюс некоторые провайдеры предоставляют дополнительные возможности для разработчиков.
Мы начинали работать в Selectel, но уже в первый год перешли на Yandex.Cloud. Мы попробовали это решение через программу Yandex Cloud Boost.
В пандемию мы ощутили, что не включить разработку видеоконференцсвязи в первоочередные задачи 2020 года было неправильным решением. Но когда мы ставили цели в конце 2019-го, этого нельзя было предугадать. Пока у нас есть только аудиозвонки, в том числе в режиме конференций. И сейчас мы разрабатываем видеосвязь на собственном движке. Мы видим, что это до сих пор нужно клиентам: кому-то Zoom и Google Meet не подходят по политике безопасности, кого-то не устраивает качество. А в Tada.team качество голосовой связи — одно из лучших на рынке. Многие переключаются с WhatsApp и Telegram на наши аудиозвонки.
В июле мы представим большое обновление, в котором помимо видеоконференций сделаем новый интерфейс, двухфакторную аутентификацию, увеличим пропускную способность и добавим возможность межсерверного общения между филиалами и даже разными компаниями.
Мы даем инструменты и базовые сервисы, а пользователь может собрать из этого собственный суперапп, в котором интегрированы и наши, и сторонние решения. Например, можно добавить ботов для планирования отпуска, командировок, оформления больничного.
«Мы видим наше решение как следующий шаг в развитии такого класса продуктов, как unified communications. Они сочетают корпоративный портал, почту и другие инструменты. Пока нет решения, которое предлагает весь необходимый бизнесу функционал на одной платформе, но крупные мировые вендоры идут в эту сторону. Например, Microsoft развивает похожий продукт Viva. Мы думаем, что наша платформа позволит любому клиенту максимально эффективно выстроить коммуникации, независимо от размера».
Привет, меня зовут Денис Рыжих, я отвечаю за направление Future Workplace (современное рабочее место) в украинском представительстве компании SoftwareONE, где мы помогаем бизнесу повышать эффективность работы сотрудников (занимаемся внедрением, продажей и адаптацией технологий от ведущих производителей).
В своей работе я довольно часто сталкиваюсь с использованием разнообразных инструментов в бизнесе. Украинскому бизнесу свойственно выжимать из бесплатных технологий максимум и пытаться экономить. Иногда это оборачивается кошмаром для реализации задач безопасности или администрирования. Но оставим эти отчасти философское рассуждения для следующих материалов, а сегодня я хочу познакомить с решением, которое позволит подружить две очень популярные платформы из разных миров — мира домашних пользователей с мессенджером Telegram, у которого на момент написания статьи насчитывалось более 500 миллионов ежемесячно активных пользователей, и мира бизнеса и образования — Office 365 с платформой Microsoft Teams, которая насчитывает более чем 145 миллионов ежедневно активных пользователей. (Telegram FAQ, Microsoft Teams usage jumps to 145 million daily active users — The Verge.)
Чтобы продемонстрировать возможности программных интерфейсов двух платформ, в данном примере мы реализуем отправку и получение текста между ними. Сделаем это с помощью коннектора, который реализуем на Power Automate — часть платформы Office 365.
Power Automate — это Low-code/no-code решение, которое позволяет автоматизировать действия пользователя. Может работать в разных режимах и взаимодействовать с интерфейсом или с программными интерфейсами — API.
Для начала давайте определимся с задачей.
- Команда и канал в Teams, где могут присутствовать различные сотрудники и приглашать своих коллег (чат 1).
- В Telegram создан групповой чат, где присутствуют подрядчики и задают вопросы либо могут ответить на вопросы (чат 2).
Архитектура решения
Создание чат-бота для Telegram
Telegram предоставляет простую возможность регистрации бота. Для этого прямо в мессенджере мы должны обратиться к @BotFather — специальному боту для управления ботами.
Ищем его и начинаем диалог:
/start — для того, чтобы увидеть доступные команды:
Нам нужен новый бот:
Давайте назовём его MessageExchangeBot. Для этого дадим ему такие имя и username:
Все команды мы будем отправлять боту через запросы вида:
И получать ответы в виде структурированной информации в формате JSON. Проверьте, проходит ли команда получения последних обновлений:
Ответ должен получиться:
Так как мы ещё никуда не подключали бота, то никаких новостей для нас нет — он просто сообщает о том, что работает.
Проверка и настройка Telegram-бота
Нам необходимо указать имя бота, параметрами которого мы управляем: @MessageExchangeBot, и отметить, что мы хотим изменить настройку на Disable (отключить).
Теперь давайте познакомимся с механизмом получения новостей (обновлений, updates) от бота. Есть два варианта работы:
В некоторых случаях, например, когда мы хотим проверять состояние бота раз в день или раз в час, нам может быть удобен подход PULL, но так как мы хотим построить максимально интерактивную систему, то нам больше подойдёт PUSH с работой через Webhook.
Настройка Webhook на Power Automate
Power Automate работает по принципу потоков (flow), когда серия действий выполняется друг за другом. А начинает свою работу по одному из следующих принципов:
И создаём поток — Create:
Теперь давайте раскроем триггер, нажав на нём:
В поле Content можно выбрать динамический параметр с предыдущего триггера — Body (поступивший запрос состоит из трех элементов: заголовок (Header), тело (Body) и путь (Path)).
Схему запроса можно сгенерировать на основе примера, либо просто можете использовать уже описанную мной структуру:
После чего нажмите Save (сохранить):
Скопируйте и сохраните его, далее в статье я буду называть эту ссылку <WebhookURL>.
Настройка режима работы бота
Переходим на страницу сервиса, вставляем нашу ссылку <WebhookURL> в верхнее окно и нажимаем Encode:
Сохраните преобразованную ссылку. Далее в статье мы будем её называть <EncodedWebhookURL>.
Теперь составьте следующий запрос:
И выполните его в строке веб-браузера:
Теперь, когда у нас получилось установить Webhook, мы создадим групповой чат в Telegram и пригласим в него бота.
Начнём с того, что создадим новый групповой чат — Test message exchange:
Пригласим туда нашего бота:
Существует три вида команд в Teams:
Private — участие должен подтвердить владелец канала.
Public — команда, открытая для всех желающих. Надо быть осторожным с использованием этой команды, так как вся переписка и файлы будут доступны всем сотрудникам организации.
Org-wide — команда, в которую по умолчанию добавляются все сотрудники организации.
Наш выбор — Private-команда, назовём её Telegram exchange.
Мы создали команду, и по умолчанию в ней создан общий канал:
У каналов есть два режима приватности:
В нашем случае будет удобно, чтобы все участники канала смогли просмотреть всю историю переписки, поэтому оставляем стандартную настройку и создаём канал.
Работает он просто, достаточно на вход подать текст в разметке HTML, который будет преобразован в текст:
Добавляем условие (Condition):
И в доступных условиях нужно выбрать «начинается с» (starts with):
В поле URI мы добавим следующую ссылку:
И добавим к ней динамический контент — имя отправителя (Message from user displayName):
И с небольшой задержкой получим его в Telegram:
Для этого откроем наш поток MessageExhcangeBotHook:
И внесём в него правки (Edit):
Добавляем новый шаг (Add new step) и уже знакомый компонент HTML to text:
Переключение веток потока происходит на основании параметра в поле «On» — туда мы подставим chat id из динамического контента, и поток направляется в ветку (case), где значение параметра будет совпадать со значением в поле Equals.
Так как значений «id» в динамическом контенте несколько, убедимся, что вы выбрали правильный. Это можно сделать благодаря всплывающей подсказке, которая появляется, если навести курсор на динамическую переменную:
И тут же получим его в Teams:
Заключение
Вы можете обеспечить более насыщенный пользовательский интерфейс, интегрируя функции существующего веб-приложения в Microsoft Teams платформу. Убедитесь, Teams рекомендации по разработке, чтобы сделать ваше приложение родным для Teams. В этом документе представлен обзор необходимых условий для интеграции веб-приложений с Teams, платформой Power для создания приложений Power, Power Virtual Agents, Виртуальный помощник, шаблонов приложений, соединителей Shift, Moodle LMS, создания кнопки Share-to-Teams для вашего сайта, добавив Microsoft Teams вкладку в SharePoint, создание глубоких ссылок и интеграцию возможностей устройств.
Предварительные требования
Для эффективной интеграции убедитесь в том, что необходимо лучше понимать следующие условия:
- Teams возможностей.
- SharePoint для хранения файлов и данных.
- Требования к API.
- Проверка подлинности.
- Глубокая связь приложения с Teams.
- На карте случаев использования приложения для Teams возможностей платформы.
- Определите точки входа вашего приложения, такие как личное использование, совместная работа или оба.
Платформы с низким кодом
Платформы с низким кодом обеспечивают интуитивно понятный подход к разработке программного обеспечения и практически не требуют кодирования для создания приложений и процессов. Вы можете легко создавать настраиваемые приложения с помощью платформ с низким кодом. Эти платформы состоят из визуального интерфейса, соединителек для служб заднего конца и встроенной системы управления жизненным циклом приложений для создания, отлажки, развертывания и обслуживания приложений. Корпорация Майкрософт предоставляет следующие инновационные шлюзы для быстрого создания Teams приложений с низкими атрибутами кода:
- Платформа Microsoft Power
- Microsoft Teams шаблоны приложений
Платформа Microsoft Power
Платформа Microsoft Power объединяет четыре надежные технологии Майкрософт, такие как Power BI, Power Apps, Power Automate и Power Virtual Agents в одной мощной платформе приложений. Эти технологии позволяют создавать решения, автоматизировать процессы, анализировать данные и создавать виртуальные агенты в единой и интегрированной среде.
Power Apps
С Power Apps вы можете создавать бизнес-приложения, которые подключаются к бизнес-данным и адаптированы к потребностям вашей организации. Power Apps включить широкий спектр сценариев приложений для решения бизнес-задач с помощью приложений холста. После создания приложения можно экспортировать его с портала Power Apps и встраить в Microsoft Teams.
Power Virtual Agents
Power Virtual Agent — это не кодовое, управляемое графическое решение интерфейса. Она построена на платформе Microsoft Power и bot Framework. Это позволяет каждому члену вашей команды создавать и поддерживать богатых чат-ботов, которые легко интегрируются с Teams платформой. Вы можете создавать, разрабатывать и публиковать интеллектуальные виртуальные агенты для Teams без установки среды разработки, создания веб-службы или непосредственной регистрации в Bot Framework.
Создание виртуального помощника
Виртуальный помощник является шаблоном Microsoft с открытым исходным кодом, который позволяет создавать надежное решение для беседы, сохраняя полный контроль над пользовательским опытом, организационным брендингом и необходимыми данными.
Шаблоны приложений
Шаблон приложения можно использовать для создания настраиваемой программы, чтобы удовлетворить ваши организационные потребности. Это готовые к производству приложения для Microsoft Teams, управляемые сообществом, с открытым исходным кодом и доступные на GitHub. Каждый шаблон содержит подробные инструкции по развертыванию и установке приложения для организации. Он предоставляет готовое к использованию приложение, которое можно установить и начать использовать немедленно.
Teams смены соединители управления рабочей силой
Teams Shifts Work Force Management connectors are production-ready, open-source, and community-driven integrations. Они обеспечивают бесперебойную обработку и быстрый процесс цифровой трансформации сотрудников firstline с помощью Teams Shifts.
Установка Moodle LMS
Moodle — это популярная система управления Обучение с открытым исходным кодом (LMS). Теперь он интегрирован с Microsoft Teams. Эта интеграция помогает преподавателям и преподавателям совместно работать на курсах Moodle, задавать вопросы о классах и назначениях и получать уведомления непосредственно в Teams.
Сторонние веб-сайты могут использовать сценарий запуска, чтобы встраить Share в Teams на своих веб-сайтах. При выборе кнопки запускается share to Teams в всплывающее окно. Это позволяет делиться ссылкой непосредственно с любым человеком или Microsoft Teams каналом без переключения контекста.
Добавьте вкладку Microsoft Teams в SharePoint
Вы можете получить богатый опыт интеграции между Microsoft Teams и SharePoint, добавив вкладку Microsoft Teams в SharePoint как SPFx веб-части.
Создание глубокой ссылки
Можно создать глубокие ссылки на сущности в Teams. Вы можете создавать ссылки на сведения и функции в Teams. Эти глубокие ссылки переходят к содержимому и сведениям в вкладке. Вы можете использовать глубокие ссылки, чтобы связать приложение с Teams, так как они связывают несколько частей приложения для более Teams работы.
Интеграция возможностей устройства
Microsoft Teams постоянно совершенствует возможности разработчиков, выровняясь со встроенными возможностями для первой стороны. Расширенная платформа Teams позволяет партнерам получать доступ и интегрировать родной потенциал устройства, например сканер камеры, QR или штрихкода, фотогалерею, микрофон и расположение с помощью выделенных API, доступных Microsoft Teams клиентской SDK JavaScript.
Интеграция средства "Выбор людей"
Вы можете интегрировать управление Teams людей, которое позволяет пользователям искать и выбирать людей в веб-приложении.
Интеграция Teams во внешнем приложении
Вы можете встраить собственные впечатления в Microsoft Teams, Teams приложения. Если вы хотите изменить эту модель и интегрировать Teams или другие возможности связи в собственный внешний опыт приложения, см. в примере Azure Communication Services. Службы связи Azure — это облачные службы с API REST и SDKs клиентской библиотеки, которые помогают интегрировать связь в собственные настраиваемые приложения. С помощью библиотеки пользовательского интерфейса можно в Teams или React веб-компоненты для вызова и чата.
Приложения Azure Communication Services могут использовать функции предварительного просмотра для взаимодействия с Teams и позволяют настраиваемой приложению анонимно присоединяться к собраниям Teams. Например, можно интегрировать видеозвоз в приложение мобильного банкинга и разрешить конечным пользователям практически встречаться с сотрудниками банка с помощью Microsoft Teams.
Вы также можете интегрировать Microsoft 365 для создания внешних приложений, в которые встраивалось видео и PSTN, вызывающего от имени Teams пользователя. Если вы использовали Skype для бизнеса SDKs в прошлом, эти возможности в составе служб связи Azure рекомендуется использовать в качестве замены.
На работе комфорт должен быть во всём: в том числе, в общении. Роль мессенджеров в комфорте рабочих процессов очевидна: именно из-за возможности мгновенно и просто решить возникший вопрос большинство компаний давно уже отказались от приоритета коммуникации в электронной почте и перешли на рабочие чаты.
Мы проанализировали 5 популярнейших в России мессенджеров по критериям, важным для бизнес-задач, и пришли к неочевидным выводам.
Общение сотрудников
Общение на работе гораздо шире, чем только классические «Лена, где отчёт» и «Олег, где макет». Подавляющий объем информации — это неформальная коммуникация. Рабочей команде жизненно необходимо иметь свободное пространство для групповой и личной переписки.
И деловая, и неформальная коммуникации должны проходить в максимально комфортных условиях.
Сразу отбросим VK и Facebook Messenger — это мессенджеры, привязанные к профилям в социальных сетях, а значит, неотделимые от личного пространства. Кому-то удобно общаться прямо в личном профиле, а кто-то предпочитает вообще не делиться личными страницами с коллегами.
Facebook попытался преодолеть этот барьер и представляет возможности корпоративного проекта Facebook Workplace. Но в России это решение не распространено. К тому же, многие компании не хотят внедрять соцсеть. Корпоративный мессенджер воспринимается более близким рабочим задачам.
Поэтому и Facebook мы всё-таки рассматривать не будем.
Microsoft Teams
Пожалуй, это корпоративный мессенджер с самым широким функционалом. Здесь вам и каналы, и чаты, и «личка». Сотрудники могут звонить друг другу по видео- и аудиосвязи. Приватные чаты MT тоже поддерживает.
Telegram
Практически не уступает Microsoft Teams по широте функционала. Есть только одно но: Telegram — как правило, довольно личная история. Многим не понравится идея мешать личные переписки с рабочими чатами. Разработчики мессенджера предложили решение: в Telegram можно переключаться между двумя аккаунтами без дополнительной авторизации. Правда, для дополнительного аккаунта сотруднику потребуется дополнительный номер телефона.
Viber
Viber может подойти коллективу с более старшим средним возрастом. Из минусов: мессенджер не поддерживает закрытые чаты и каналы. К тому же, в нём есть возможность авторизации только с одного аккаунта. Поэтому смешение личного и рабочего также остается проблемой.
Slack и Mattermost
Slack и Mattermost стоят у нас в одном пункте, потому что это очень похожие по функционалу мессенджеры с одной небольшой разницей. Slack — платный корпоративный мессенджер с гибким функционалом. Он уступает Microsoft Teams только тем, что в нём недоступны видеозвонки. Mattermost — open source проект, который можно установить у себя на серверах (в то время как Slack — облачная история). В нём тоже нельзя звонить по видеосвязи.
Точно есть у всех (или хотя бы был). К минусам можно отнести невозможность создать канал и, опять же, невозможность разделить личные и рабочие переписки. Дополнительный минус — новые чаты можно создавать только через добавление участников в контакты. Если коллега не внесен в контакт, найти его по имени попросту невозможно.
Развлекательный функционал
Кастомизированные стикеры, локальные корпоративные мемы, чудные эмодзи и лайки-эмоции добавляют в корпоративное общение ровно ту нотку фана, которая не отвлекает от рабочих процессов. Как могут развеселить сотрудников наши подопытные мессенджеры?
Информацию обо всех грядущих изменениях можно получить из двух основных источников:
Microsoft 365 Roadmap
Microsoft 365 Message Center
Чтобы получить информацию из первого варианта, никаких дополнительных учетных записей не требуется, т.к. инфа в открытом виде и имеется RSS feed, что подтолкнуло к написаю простенького скрипта для мониторинга RSS фида и направления его в Telegram канал. Найти этот канал вы можете по этой ссылке.
Для простоты разработки, был выбран PowerShell, т. к. он нативно поддерживается Azure Automation чуть ли не с самого начала. Чтобы получить доступ к информации внутри тенанта не вводя логин и пароль, нужно зарегистрировать приложение в Azure Active Directory и дать приложению соответствующие права.
1. Заходим на сайт Azure и в строке поиска вводим Active Directory
AAD в Azure
2. В левом боковом меню в разделе Manage выбираем App registrations
3. Здесь нажимаем на кнопку New Registration и попадаем в меню создания нового приложения внутри Azure Active Directory
4. В поле Name необходимо ввести уникальное имя для приложения внутри тенанта, остальные же поля можно оставить как есть.
5. Нажимаем Register и попадаем в созданное приложение. Здесь присутствуют данные, которые понадобятся нам в дальнейшем, а именно:
Их желательно заранее куда ни будь сохранить.
6. Для авторизации посредством приложения, нужно сгенерировать Client Secret, без которого токен не получить. Для этого в левом боковом меню выбираем Certificates & Secrets и нажимаем на New Client Secret. Как понятно из названия здесь так же присутствует возможность авторизации посредством сертификата, но в данном примере будет использоваться именно Client Secret.
7. В появившемся окне нужно добавить Description к создаваемому секрету и указать его срок жизни.
8. Value секрета лучше сохранить сразу, ибо после обновления или закрытия данного окна, значение секрета будет увидеть невозможно и придется создавать новый.
9. Далее необходимо предоставить приложению права читать Message Center. Для этого переходим в меню API Permissions
10. Здесь присутствуют стандартные права в Graph API User.Read, которые отвечают за доступ к информации об аккаунте авторизовавшегося юзера.
Давайте на этом пункте остановится чуточку подробнее.
В M365 есть два основных вида прав, это Delegated Permissions, которые могут быть использованы только при авторизации в приложении пользователем, и Application Permissions которые можно использовать без авторизации человеком. Это очень полезно, когда необходимо что-то автоматизировать, а у вас в тенанте настроен обязательный MFA для всех учетных записей, однако Application Permissions требуют подтверждение Global администратора. User.Read права доступные по умолчанию как раз первого типа, потому их можно сразу же удалить. Щелкаем на права и нажимаем Remove permission.
Теперь же нужно добавить права для чтения Message Center. Нажимаем Add Permission > Скролим вниз и находим Office 365 Management API
11. Выбираем Application Permissions > ServiceHealth.Read и нажимаем Add Permissions
12. Далее если есть роль Global Admin, нажимаем кнопку Grant admin consent, либо просим одобрить права того, у кого эта роль имеется
13. После получения подтверждения, напротив прав должна появится надпись Granted for <tenant name>
На этом история с регистрацией приложения закончена и можно перейти к скрипту.
Первое что необходимо написать, это функцию для авторизации в M365 API, назовем ее Get-APIToken. Функция должна принимать в себя три значения:
Tenant ID (directory ID)
App Secret (Client Secret)
Первые два параметра отображались выше в пункте 5 при создании приложения
Функция представляет собой Rest запрос с определенными параметрами на URL вида:
В итоге функция будет выглядеть следующим образом
Теперь можно получить Token и проверить что все прошлые действия были выполнены правильно.
В результате значение токена должно напоминать следующее содержание:
Начнем с функции Get-ApiRequestResult.
Она будет принимать URL запроса, метод и токен.
Из токена формируется header запроса и все это оформляется в Splat.
Небольшое отступление
Для этого внутри функции создаем два одномерных массива и один двумерный. Таким образом у нас есть три категории тегов:
Простые тэги - имеющие закрывающий тэг и которые как правило не бывают с дополнительными параметрами внутри. С ними можно использовать регулярные выражения
Сложные тэги - не имеющие закрывающий тэг, но которые при этом могут вызвать ошибку форматирования.
Тэги и просто символы - которые нужно заменить на что-то иное.
Далее уже в зависимости от того, из какой категории определенный тэг, его нужно определенным способом обработать. В итоге получается следующая функция:
Что касается такой служебной информации как токены, чат ID, секреты и прочее, то все это можно и нужно хранить в месте специально для этого предназначенном. В Azure Automation это Secure Assets. Более подробную информацию можно получить по ссылке.
Читайте также: