MS Teams Bot将数据存储到用户Teams实例的可选方案有哪些?
Teams Bot数据存储到用户侧Teams实例的可落地方案
首先明确:Teams本身没有提供原生的通用用户自定义数据存储接口,以下所有方案均基于Microsoft 365生态下绑定用户租户的存储能力实现,数据完全归属用户租户管控,符合客户数据不出租户的要求。
方案1:用户/租户侧SharePoint Online存储
- 适用场景:存储结构化/非结构化数据、文件、大体积业务数据,对权限管控、审计溯源有要求的场景
- 实现逻辑:
- Bot申请
Sites.ReadWrite.All等Graph API权限(根据场景选择应用权限或委派权限),经客户租户管理员同意后生效 - 首次使用时在客户租户的指定SharePoint站点(可直接使用Teams关联的团队站点,也可单独为Bot创建专用站点)创建专属列表/文档库
- 触发数据存储逻辑时,调用Graph API把数据写入对应列表或文档库,支持按用户、会话、团队维度做字段分区隔离
- Bot申请
- 优势:和Teams原生体验打通,用户可直接在Teams内访问对应站点查看数据,权限和租户现有权限体系对齐,自带版本历史、操作审计等原生能力
- 注意点:提前和客户确认权限范围,避免申请不必要的高权限
方案2:Teams对话/应用内置存储
2.1 对话状态存储
- 适用场景:存储和单条对话、单个用户、单个会话绑定的轻量状态数据,比如用户操作上下文、临时配置
- 实现逻辑:
- 直接使用Bot Framework SDK自带的
ConversationState类,也可调用Graph API的PATCH /chats/{chat-id}/teamsAppInstallation/{installation-id}/customProperties接口,把自定义数据存储到Bot在对应对话的安装属性中
- 直接使用Bot Framework SDK自带的
- 优势:无需额外搭建存储服务,数据直接和Teams对话绑定,调用SDK即可完成,开发成本极低
- 注意点:单条自定义属性存储容量限制为1MB,仅适合存储轻量状态类数据,不适合存储大量业务数据
2.2 应用配置存储
- 适用场景:存储和用户个人使用Bot的配置、偏好类数据
- 实现逻辑:
- 为Bot配套开发个人选项卡,调用Microsoft Teams JS SDK的
microsoftTeams.settings.setSettings()接口,把用户自定义配置存储到用户的Teams应用配置中,也可通过Graph API读写用户的应用设置
- 为Bot配套开发个人选项卡,调用Microsoft Teams JS SDK的
- 优势:用户可直接在选项卡内管理自己的配置,不同用户的数据隔离性好
- 注意点:同样有容量限制,仅适合存储用户偏好、配置类的轻量数据
方案3:用户租户OneDrive for Business存储
- 适用场景:存储用户个人产生的非结构化数据、导出文件等
- 实现逻辑:
- Bot申请OneDrive相关的Graph API权限,经用户/管理员同意后,在用户的OneDrive下创建Bot专用文件夹
- 数据生成后直接写入对应用户的OneDrive文件夹,用户可直接在Teams的「文件」Tab里访问这些数据
- 优势:数据完全归属个人用户,和Teams现有文件体验完全打通,支持大文件存储
- 注意点:如果是团队维度的共享数据,优先选择SharePoint而非个人OneDrive
选型参考
- 轻量会话状态、临时上下文:选择对话内置存储
- 用户个人文件、个人偏好配置:选择OneDrive for Business
- 团队级共享数据、结构化业务数据、需要审计追溯的数据:选择SharePoint Online存储
内容的提问来源于stack exchange,提问作者Swapnil Chowkekar
相关产品推荐
相关产品推荐

