技能 Microsoft 365 Agents SDK (.NET)
📦

Microsoft 365 Agents SDK (.NET)

安全

使用 .NET 构建 Microsoft 365 智能体

构建面向 Microsoft 365 的多通道智能体需要了解 Microsoft.Agents SDK 托管模型、身份验证模式和路由架构。本技能提供生产级代码示例,涵盖 ASP.NET Core 托管、MSAL 身份验证和 Copilot Studio 集成。

支持: Claude Codex Code(CC)
🥉 72 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“Microsoft 365 Agents SDK (.NET)”。 Create an AgentApplication subclass with a message handler that echoes user input

预期结果:

Generates a C# class inheriting AgentApplication with constructor registering OnActivity(ActivityTypes.Message, OnMessageAsync), and an OnMessageAsync method that calls turnContext.SendActivityAsync with the echoed text.

正在使用“Microsoft 365 Agents SDK (.NET)”。 Generate appsettings.json with TokenValidation and ServiceConnection configuration

预期结果:

Produces a JSON configuration with TokenValidation section containing Enabled, Audiences array, TenantId, and Connections section with AuthType, ClientId, ClientSecret, AuthorityEndpoint, and Scopes for api.botframework.com.

正在使用“Microsoft 365 Agents SDK (.NET)”。 Show how to add authorization to the /api/messages endpoint in production

预期结果:

Shows wrapping the POST route with if (!app.Environment.IsDevelopment()) { incomingRoute.RequireAuthorization(); } to enforce authentication outside development environment.

安全审计

安全
v1 • 2/25/2026

Documentation-only skill with no executable code. Contains C# code examples and configuration templates for Microsoft 365 Agents SDK. No scripts, network operations, file system access, or external commands detected. Static analysis correctly identified this as a prompt-only skill with zero security risk.

1
已扫描文件
296
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
74
规范符合性

你能构建什么

创建带身份验证的 Teams 机器人

生成一个生产级 ASP.NET Core 机器人,通过 MSAL 验证用户身份,并在 Microsoft Teams 频道中响应消息。

与 Copilot Studio 集成

构建控制台或 Web 应用,使用直连引擎客户端模式和委托令牌连接到 Copilot Studio。

实现智能体错误处理

为 AgentApplication 子类添加全面的错误处理和状态管理,包括正确的清理和对话结束流程。

试试这些提示

创建基础 ASP.NET Core 智能体主机
Generate an ASP.NET Core Minimal API host for a Microsoft.Agents SDK bot. Include AddAgentApplicationOptions, AddAgent for MyAgent class, MemoryStorage, AddAgentAspNetAuthentication, and a POST /api/messages endpoint with IAgentHttpAdapter.
添加带路由的 AgentApplication
Create an AgentApplication subclass called SupportAgent with OnConversationUpdate for welcome messages, OnActivity for ActivityTypes.Message routed to a handler method, and OnTurnError for exception handling with state cleanup.
配置 MSAL 身份验证处理器
Create a DelegatingHandler called AddTokenHandler that acquires tokens using MSAL PublicClientApplication with AcquireTokenSilent fallback to AcquireTokenInteractive. Include Bearer header injection and CopilotClient.ScopeFromSettings usage.
设置 Copilot Studio 控制台客户端
Generate a HostApplicationBuilder console application that registers CopilotClient with AddHttpClient, custom DelegatingHandler for tokens, and uses StartConversationAsync and AskQuestionAsync to interact with Copilot Studio.

最佳实践

  • 使用 AgentApplication 基类将路由逻辑、事件处理器和错误处理集中在一个位置,而不是分散在中间件中。
  • 对于生产部署,将 MemoryStorage 替换为 BlobStorage 或 CosmosDbStorage 等持久化存储,以在服务器重启后保持对话状态。
  • 在 appsettings.json 中启用 TokenValidation,并将 RequireAuthorization 应用于 /api/messages 端点,以防止未经授权访问您的智能体。

避免

  • 将 ClientSecret 或其他凭据直接存储在代码中,而不是使用 Azure Key Vault、环境变量或托管标识等配置提供程序。
  • 为每个请求创建新的 HttpClient 实例,而不是使用 IHttpClientFactory 来高效注册和重用 HTTP 连接。
  • 通过使用 .Result 或 .Wait() 同步阻塞异步调用,而不是正确地 await 异步 SDK 方法并传递 CancellationToken。

常见问题

AddAgentApplicationOptions 和 AddAgent 有什么区别?
AddAgentApplicationOptions 注册核心配置设置,如 StartTypingTimer 和 RemoveRecipientMention。AddAgent 将您的特定 AgentApplication 子类(如 MyAgent)注册到依赖注入容器中。
何时应该使用 MemoryStorage 与持久化存储提供程序?
仅在本地开发和测试时使用 MemoryStorage。对于生产环境,请使用 BlobStorage、CosmosDbStorage 或其他持久化存储提供程序,以在应用重启和横向扩展场景中保持对话状态。
如何获取配置所需的 ClientId 和 ClientSecret?
在 Azure Active Directory 中注册应用。ClientId 来自应用注册概览边栏选项卡。在Certificates & secrets部分创建客户端密码。将目录(租户)ID 用于 TenantId。
Copilot Studio 集成应该使用哪种身份验证流?
对于控制台应用或交互式场景,请使用带有 AcquireTokenInteractive 的 PublicClientApplication。对于服务器到服务器场景(如 Web API),请使用带有客户端凭据流的 ConfidentialClientApplication。
为什么 /api/messages 端点在要求授权之前要检查 app.Environment.IsDevelopment()?
这允许在开发模式下进行本地测试而不需要身份验证,同时在生产环境中强制执行授权。始终在部署前启用身份验证进行测试,以确保您的令牌验证配置正常工作。
我可以与其他 ASP.NET Core 端点一起托管此智能体吗?
是的,Microsoft.Agents SDK 与标准 ASP.NET Core 路由集成。您可以添加其他控制器、最小 API 或中间件,以及 /api/messages 端点,以构建混合应用。

开发者详情

文件结构

📄 SKILL.md