Контекст - У нас есть приложение SaaS, которое обслуживает множество клиентов, и для нас изоляция среды клиентов является нашим главным приоритетом (по очевидным причинам безопасности).
Для этого SaaS-приложения в настоящее время мы создаем бота/интеграцию MS Teams. Планируется, что клиенты найдут это приложение на торговой площадке MS Teams, установят его и подключат свои учетные записи к боту для получения оповещений и т. д. на каналах/dms своих команд.
Проблемы -
Для регистрации бота мы должны предоставить URL-адрес, по которому бот Azure будет пересылать события, полученные от команд MS. (пользователь добавляет бота в командную или личную область, пользователь пробует некоторые команды и т. д.)
поэтому нам нужно будет как-то отслеживать, от какого экземпляра клиентской команды поступают запросы, и какому клиенту мы должны их перенаправить.
Единственный способ добиться этого — использовать лямбда + postgres для отслеживания сопоставления между .
Можно ли как-нибудь избавиться от базы данных? возможно, мы сможем сохранить некоторый дополнительный контекст при установке приложения в команде, и каждый запрос может нести эти данные, которые лямбда может использовать для маршрутизации событий.
Являются ли идентификаторы команд MS Team уникальными?
Спасибо вам, ребята, заранее!
Определенно возможно получить информацию, которую вы ищете, внутри вашего бота. При получении сообщения от пользователя ваше приложение, основанное на 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 для получения дополнительной информации.
Что касается хранения данных в базе данных, это полностью зависит от вас и вашего приложения — вы можете хранить (или не хранить) все, что хотите, в любом бэкэнде, например. хранилище больших двоичных объектов или файлов — нет особых требований к базе данных как таковой.
Tenant Id
, конечно, уникален для каждого клиента Microsoft 365. Team Id
уникален для каждой команды И для каждого отдельного арендатора
Я спрашиваю, уникален ли «идентификатор команды», а не идентификатор арендатора, поскольку у одного арендатора может быть несколько команд, и к любой из них можно добавить бота.
Я понимаю, поэтому пытался это объяснить — да, идентификаторы команд совершенно уникальны.
Спасибо за ответ, я знаю информацию, которую могу получить на мероприятии. Но меня беспокоит то, как направить событие правильному клиенту. если я получу идентификатор команды в мероприятии, достаточно ли этого, чтобы решить, для какого клиента будет проводиться мероприятие? если это правда, это означает, что идентификатор команды уникален для разных организаций.