You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Microsoft 365 Agents Toolkit创建Teams/Copilot应用的技术问询

针对Teams和Microsoft 365 Copilot复用Entra External ID认证的问题解答

1. 应用类型选择:自定义引擎还是其他?

  • 若你需要深度集成Copilot语义能力、自定义后端数据交互逻辑,**自定义引擎(Custom Plugin/Engine)**是最优选择,它能直接复用现有Web应用的Entra认证流程,完美适配后端权限规则。
  • 若仅需基础消息交互+权限校验,也可考虑Teams消息扩展或Copilot插件,但自定义引擎的灵活性更高,更贴合你复用现有认证体系的需求。
  • 参考Asana的实现逻辑:它本质是Copilot插件+OAuth授权复用,要对齐这个模式,自定义引擎插件是最匹配的选项。

2. 授权问题排查与解决(Azure Bot OAuth无效的情况)

  • 确认Entra应用注册配置:
    • 确保Entra External ID应用注册中已添加Teams和Microsoft 365 Copilot的平台配置,重定向URI需包含https://token.botframework.com/.auth/web/redirect(Azure Bot的OAuth回调地址)。
    • 检查API权限:需添加User.Read委托权限,并确保已授予管理员同意(针对租户内用户场景)。
  • Azure Bot OAuth设置修正:
    • 在Azure Bot的「身份验证」面板关联Entra应用时,选择「任何组织目录和个人Microsoft账户」(外部用户场景),而非仅租户内账号。
    • 验证连接名称一致性:Bot代码调用OAuth时,必须使用与Azure Bot配置一致的连接名,示例代码:
      await turnContext.Adapter.GetUserTokenAsync(turnContext, "YourEntraConnectionName", null, cancellationToken);
      
  • 权限传递逻辑检查:
    • 确保从Bot获取的token能直接传递给Web应用后端,后端需验证token的签名、受众(aud)和过期时间,避免因token格式不匹配导致授权失败。

3. Copilot发消息时重定向至Teams登录

  • 在自定义引擎代码中,检测到用户未携带有效认证token时,返回ActionTypes.Redirect类型响应,指定重定向URL为Teams OAuth授权入口:
    return new ActionResponse
    {
        Type = ActionTypes.Redirect,
        Value = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=YOUR_ENTRA_CLIENT_ID&response_type=code&redirect_uri=https://your-bot-domain/.auth/web/redirect&scope=User.Read"
    };
    
  • 确保重定向URI已在Entra应用注册中配置,Teams客户端能正确处理跳转,完成授权后将token返回给Bot,再传递给自定义引擎。
  • 若使用Copilot插件框架,可在plugin.json中配置authorization字段,指定OAuth2授权端点,Copilot会自动触发登录流程。

4. 创建类似Asana的弹窗获取用户详情

  • 使用Teams**任务模块(Task Module)**实现弹窗:
    1. 在Bot代码中构造任务模块请求,指定弹窗URL(复用现有Web应用的用户详情页面,已集成Entra认证):
    var taskModuleResponse = new TaskModuleResponse
    {
        Task = new TaskModuleContinueResponse
        {
            Value = new TaskModuleTaskInfo
            {
                Title = "用户详情",
                Url = "https://your-web-app.com/user-profile",
                Height = 500,
                Width = 600
            }
        }
    };
    await turnContext.SendActivityAsync(MessageFactory.Attachment(taskModuleResponse.ToAttachment()), cancellationToken);
    
    1. 确保Web应用页面适配Teams任务模块尺寸,且已集成Entra认证,避免用户重复登录。
  • 若基于Copilot插件,可在插件交互逻辑中调用Teams任务模块API触发弹窗,获取用户输入后将数据传递回Copilot引擎。

内容的提问来源于stack exchange,提问作者Selva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:12:15