设计真正的多租户 MS Teams 应用程序

问题描述 投票:0回答:1

背景 - 我们有一个 SaaS 应用程序,托管许多客户,对我们来说,客户环境隔离是我们的首要任务(出于明显的安全原因)。

对于这个 SaaS 应用程序,我们目前正在构建一个 MS 团队机器人/集成。计划是客户将在 ms 团队市场上找到此应用程序,他们将安装它并将其帐户与机器人连接以在其团队渠道/dms 上接收警报等。

问题-

  1. 机器人注册需要我们提供一个 URL,Azure 机器人将在其中转发从 MS 团队收到的事件。 (用户将机器人添加到团队或个人范围,用户尝试一些命令等事件)

    • 因此,我们需要以某种方式跟踪请求来自哪个客户团队实例,以及我们必须将其转发给哪个客户。

    • 我认为实现这一目标的唯一方法是使用 lambda + postgres 来跟踪 to 之间的映射。

    • 我们有办法摆脱数据库吗?也许我们可以在团队中安装应用程序时存储一些额外的上下文,并且每个请求都可以携带该数据,lambda 可以使用这些数据来路由事件。

  2. MS Teams 的团队 ID 是唯一的吗?

    • 许多 botframework api 在其 url 中使用 teamId,我们不想仅仅因为团队 ID 不唯一而意外地将 1 个客户的数据发送给另一个客户
    • 尝试在网上查找有关文档,但没有运气:((如果我错过了,抱歉)

提前谢谢各位!

bots botframework microsoft-teams microsoft-graph-teams teams-toolkit
1个回答
0
投票

绝对有可能在机器人中获取您正在寻找的信息。作为接收用户消息的一部分,基于 Bot Framework SDK 的应用程序会接收一个

turnContext
对象,该对象又包含
activity
属性。在活动之外,您可以找到用户的唯一 Azure AD 用户 ID、电子邮件地址和显示名称等信息。它还包含租户 ID,因此您可以使用它来区分来自不同租户的消息。最后,它存储频道信息,以便您可以确定当时可以在哪个团队和哪个频道中使用机器人(显然,如果机器人在群聊或 1-1 对话中使用,则这不适用)。

除此之外,还可以使用 SDK 请求其他数据,例如团队中其他频道的列表等 - 请参阅 https://learn.microsoft.com/en-us/microsoftteams/ platform/bots/how-to/get-teams-context?tabs=dotnet 了解更多。

关于在数据库中存储数据,这完全取决于您和您的应用程序 - 您可以选择存储(或不存储)您想要的任何内容,无论您想要什么后端,例如blob 或文件存储 - 本身没有特定的要求 拥有数据库。

© www.soinside.com 2019 - 2024. All rights reserved.