Проектирование по-настоящему мультитенантного приложения MS Teams

Контекст - У нас есть приложение SaaS, которое обслуживает множество клиентов, и для нас изоляция среды клиентов является нашим главным приоритетом (по очевидным причинам безопасности).

Для этого SaaS-приложения в настоящее время мы создаем бота/интеграцию MS Teams. Планируется, что клиенты найдут это приложение на торговой площадке MS Teams, установят его и подключат свои учетные записи к боту для получения оповещений и т. д. на каналах/dms своих команд.

Проблемы -

  1. Для регистрации бота мы должны предоставить URL-адрес, по которому бот Azure будет пересылать события, полученные от команд MS. (пользователь добавляет бота в командную или личную область, пользователь пробует некоторые команды и т. д.)

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

    • Единственный способ добиться этого — использовать лямбда + postgres для отслеживания сопоставления между .

    • Можно ли как-нибудь избавиться от базы данных? возможно, мы сможем сохранить некоторый дополнительный контекст при установке приложения в команде, и каждый запрос может нести эти данные, которые лямбда может использовать для маршрутизации событий.

  2. Являются ли идентификаторы команд MS Team уникальными?

    • Многие API-интерфейсы botframework используют идентификатор команды в своих URL-адресах, и мы не хотим случайно отправлять данные об одном клиенте другому по ошибке только потому, что идентификатор команды не был уникальным.
    • Пытался найти документы в Интернете, но безуспешно :( (извиняюсь, если пропустил)

Спасибо вам, ребята, заранее!

Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
1
0
152
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определенно возможно получить информацию, которую вы ищете, внутри вашего бота. При получении сообщения от пользователя ваше приложение, основанное на SDK Bot Framework, получает объект turnContext, который, в свою очередь, содержит свойство activity. Выключив активность, вы можете найти такие вещи, как уникальный идентификатор пользователя Azure AD, его адрес электронной почты и отображаемое имя. Он также содержит идентификатор арендатора, поэтому его можно использовать для различения сообщений от разных арендаторов. Наконец, он хранит информацию о канале, чтобы вы могли определить, в какой команде и на каком канале в данный момент может использоваться бот (очевидно, это не применимо, если бот используется в групповом чате или разговоре 1-1).

Помимо этого, с помощью SDK также можно запросить дополнительные данные, например список других каналов в команде и т. д. — см. https://learn.microsoft.com/en-us/microsoftteams/ Platform/bots/how-to/get-teams-context?tabs=dotnet для получения дополнительной информации.

Что касается хранения данных в базе данных, это полностью зависит от вас и вашего приложения — вы можете хранить (или не хранить) все, что хотите, в любом бэкэнде, например. хранилище больших двоичных объектов или файлов — нет особых требований к базе данных как таковой.

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

akash khamkar 15.03.2024 16:22
Tenant Id, конечно, уникален для каждого клиента Microsoft 365. Team Id уникален для каждой команды И для каждого отдельного арендатора
Hilton Giesenow 16.03.2024 18:25

Я спрашиваю, уникален ли «идентификатор команды», а не идентификатор арендатора, поскольку у одного арендатора может быть несколько команд, и к любой из них можно добавить бота.

akash khamkar 25.03.2024 17:45

Я понимаю, поэтому пытался это объяснить — да, идентификаторы команд совершенно уникальны.

Hilton Giesenow 25.03.2024 18:39

Другие вопросы по теме