ms-teams-apps ms-teams-apps

构建集成了大型语言模型的 Microsoft Teams AI 应用,包括对话机器人、消息扩展和智能助手。

AI应用 0 次安装 0 次浏览 更新于 3/5/2026

Microsoft Teams 应用技能

加载于:base.md

目的: 为 Microsoft Teams 构建 AI 驱动的代理和应用程序。创建对话机器人、消息扩展和集成了像 OpenAI 和 Claude 这样的大型语言模型的智能助手。


架构概览

┌─────────────────────────────────────────────────────────────────┐
│  TEAMS 应用类型                                                 │
│  ─────────────────────────────────────────────────────────────  │
│                                                                 │
│  1. AI 代理 (机器人)                                            │
│     由 LLMs 驱动的会话应用                                     │
│     处理消息、命令和操作                                      │
│                                                                 │
│  2. 消息扩展                                                │
│     搜索外部系统,将卡片插入消息                                │
│     带模态对话框的动作命令                                       │
│                                                                 │
│  3. 标签页                                                        │
│     Teams 内的嵌入式 Web 应用程序                                 │
│     个人、频道或会议标签页                                       │
│                                                                 │
│  4. WEBHOOKS & 连接器                                          │
│     入站:向频道发布消息                                       │
│     出站:响应 @提及                                           │
├─────────────────────────────────────────────────────────────────┤
│  SDK 格局 (2025)                                           │
│  ─────────────────────────────────────────────────────────────  │
│  Teams SDK v2: 主要 SDK,仅用于 Teams 应用                       │
│  M365 代理 SDK: 多渠道(Teams、Outlook、Copilot)              │
│  Teams 工具包:VS Code 扩展,用于开发                           │
└─────────────────────────────────────────────────────────────────┘

快速开始

安装 Teams CLI

npm install -g @microsoft/teams.cli

创建新项目

# TypeScript(推荐)
npx @microsoft/teams.cli new typescript my-agent --template echo

# Python
npx @microsoft/teams.cli new python my-agent --template echo

# C#
npx @microsoft/teams.cli new csharp my-agent --template echo

项目结构

my-agent/
├── src/
│   ├── index.ts              # 入口点
│   ├── app.ts                # 应用配置
│   └── handlers/
│       ├── message.ts        # 消息处理程序
│       └── commands.ts       # 命令处理程序
├── appPackage/
│   ├── manifest.json         # 应用清单
│   ├── color.png             # 应用图标(192x192)
│   └── outline.png           # 轮廓图标(32x32)
├── .env                      # 环境变量
├── teamsapp.yml              # Teams 工具包配置
└── package.json

应用清单

基本清单结构

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json", ...
}

带消息扩展的清单

{
  "composeExtensions": [
    {
      "botId": "{{BOT_ID}}", ...
    }
  ]
}

AI 代理开发

Teams SDK v2 的基本机器人

// src/app.ts
import { App, HttpPlugin, DevtoolsPlugin } from '@microsoft/teams.ai'; ...

提示配置

# src/prompts/chat/config.json
{
  "schema": 1.1, ...
}
# src/prompts/chat/skprompt.txt
你是 Microsoft Teams 的 AI 助手。你帮助用户解答问题和完成任务。 ...

集成 Claude/Anthropic

Claude 驱动的 Teams 机器人

// src/claude-bot.ts
import { App, HttpPlugin } from '@microsoft/teams.ai'; ...

Claude 与工具/功能调用

// src/claude-agent.ts
import Anthropic from '@anthropic-ai/sdk'; ...

自适应卡片

基本自适应卡片

// src/cards/welcome-card.ts
import { CardFactory } from 'botbuilder'; ...

AI 响应卡片与操作

// src/cards/ai-response-card.ts
export function createAIResponseCard( ...

用户输入表单卡片

// src/cards/task-form-card.ts
export function createTaskFormCard() { ...

Microsoft Graph 集成

设置 Graph 客户端

// src/graph/client.ts
import { Client } from '@microsoft/microsoft-graph-client'; ...

常见 Graph 操作

// src/graph/operations.ts
import { Client } from '@microsoft/microsoft-graph-client'; ...

认证

使用 Teams SDK 进行 SSO

// src/auth.ts
import { App } from '@microsoft/teams.ai'; ...

手动 OAuth 流程

// src/auth/oauth.ts
import { OAuthPrompt, OAuthPromptSettings } from 'botbuilder-dialogs'; ...

RAG(检索增强生成)

Azure AI 搜索中的向量搜索

// src/rag/azure-search.ts
import { SearchClient, AzureKeyCredential } from '@azure/search-documents'; ...

RAG 增强的 Claude 响应

// src/rag/claude-rag.ts
import Anthropic from '@anthropic-ai/sdk'; ...

部署

Azure Bot 服务设置

# 创建资源组
az group create --name rg-teams-bot --location eastus
...

环境变量

# .env
# Azure Bot
BOT_ID=your-bot-id
...

Docker 部署

# Dockerfile
FROM node:18-alpine
...
# docker-compose.yml
version: '3.8'
...

Teams 工具包部署

# 登录到 Azure
npx teamsfx account login azure
...

测试

本地测试与 ngrok

# 启动 ngrok 隧道
ngrok http 3978
...

Teams 工具包本地调试

# 开始本地调试(打开 Teams 并使用你的应用)
npx teamsfx preview --local

单元测试

// tests/bot.test.ts
import { TestAdapter, TurnContext } from 'botbuilder'; ...

最佳实践

对话设计

┌─────────────────────────────────────────────────────────────────┐
│  CONVERSATION UX GUIDELINES                                     │
│  ─────────────────────────────────────────────────────────────  │
│  1. 智能问候                                                 │
│     - 用 onboarding 卡片欢迎新用户                            │
│     - 返回用户快速访问最近的操作                            │
│  ...

安全清单

  • [ ] 验证所有传入消息
  • [ ] 尽可能使用 App-Only 身份验证访问 Graph API
  • [ ] 永不记录敏感用户数据
  • [ ] 实施速率限制
  • [ ] 在 Azure 中使用托管身份
  • [ ] 定期旋转机密
  • [ ] 启用审计日志

性能提示

提示 描述
缓存 Graph 令牌 令牌刷新成本高昂
流式传输长响应 使用输入指示器 + 分块响应
索引知识库 预先嵌入文档以进行 RAG
使用连接池 重用 HTTP 连接
压缩负载 Gzip 大型卡片响应

项目模板

AI 助手模板

// 完整的 AI 助手,使用 Claude
import { App, HttpPlugin } from '@microsoft/teams.ai'; ...

故障排除

问题 原因 修复
机器人无响应 无法访问端点 检查清单中的 ngrok/Azure URL
认证失败 令牌过期/无效 刷新 OAuth 连接
卡片不渲染 无效的架构 adaptivecards.io/designer 中验证
Graph 403 错误 缺少权限 检查应用注册权限
响应慢 API 延迟 添加输入指示器,考虑流式传输

资源