Microsoft Copilot Studio 企业AI开发教程
适用人群:企业IT开发者、AI工程师、Power Platform管理员、希望构建企业级对话式AI的技术人员 前置要求:基本的Web开发概念、了解Microsoft 365生态(非必须) 预计学习时间:15-20小时
目录
- 第一章:Microsoft Copilot Studio 概述与架构
- 第二章:环境准备与第一个 Copilot
- 第三章:Topic 与对话流设计
- 第四章:GPT 模型与生成式 AI 配置
- 第五章:企业知识库集成
- 第六章:Power Platform 集成
- 第七章:Copilot 连接器与外部系统集成
- 第八章:Teams 部署与企业分发
- 第九章:Copilot API 与高级扩展
- 第十章:与 Azure AI Foundry 集成
- 第十一章:实战项目一 — 企业智能 HR 助手
- 第十二章:实战项目二 — IT 运维 Copilot
- 第十三章:监控、分析与持续优化
- 第十四章:常见问题与故障排除
第一章:Microsoft Copilot Studio 概述与架构
1.1 什么是 Copilot Studio
Microsoft Copilot Studio(前身是 Power Virtual Agents)是微软推出的企业级对话式AI构建平台。它允许开发者和业务用户通过低代码/无代码的方式创建智能对话代理(Copilot),这些代理可以理解自然语言、调用外部服务、集成企业数据,并部署到多个渠道。
Copilot Studio 的核心价值主张:
- 低代码开发:可视化画布拖拽构建对话逻辑,无需深厚的AI背景
- 企业级集成:原生连接 Microsoft 365、Dynamics 365、Azure 服务
- 生成式 AI 驱动:内置 GPT 能力,支持基于企业知识的智能问答
- 多渠道部署:Teams、Web、Facebook、自定义渠道一键发布
- 安全与合规:继承 Microsoft Azure 的企业级安全体系
1.2 核心架构与组件
Copilot Studio 的架构由以下核心层次组成:
┌─────────────────────────────────────────────────┐
│ 用户交互层 │
│ Teams │ Web Chat │ Facebook │ 自定义渠道 │
├─────────────────────────────────────────────────┤
│ Copilot 运行时引擎 │
│ NLU 意图识别 │ 对话管理 │ 生成式 AI │ 会话状态 │
├─────────────────────────────────────────────────┤
│ Topic 处理层 │
│ 系统 Topic │ 自定义 Topic │ 回退 Topic │ 事件 Topic │
├─────────────────────────────────────────────────┤
│ 动作与连接层 │
│ Power Automate │ 自定义连接器 │ 插件 │ API 扩展 │
├─────────────────────────────────────────────────┤
│ 知识与数据层 │
│ SharePoint │ Dataverse │ 网站 │ 文档 │ Azure AI │
└─────────────────────────────────────────────────┘
关键组件说明:
| 组件 | 功能描述 |
|---|---|
| Topic(主题) | 对话流的基本单元,定义特定意图的对话逻辑 |
| Entity(实体) | 从用户输入中提取的结构化信息(如日期、地点) |
| Action(动作) | 调用外部服务或执行操作的连接点 |
| Knowledge(知识源) | Copilot 用于生成回答的信息来源 |
| Channel(频道) | Copilot 对外发布的通信渠道 |
| Environment(环境) | Power Platform 环境,隔离开发/测试/生产 |
1.3 与传统聊天机器人平台的对比
| 特性 | Copilot Studio | 传统 Bot Framework | 第三方平台 |
|---|---|---|---|
| 开发方式 | 低代码 + 专业代码 | 纯代码 | 混合 |
| AI 能力 | 内置 GPT + NLU | 需自行集成 | 依赖平台 |
| 企业集成 | 原生 M365/Azure | 需手动开发 | 有限 |
| 部署渠道 | 多渠道内置 | 需逐一配置 | 平台依赖 |
| 学习曲线 | 低-中 | 高 | 中 |
| 许可证成本 | 按消息计费 | 免费(Azure 费用) | 因平台而异 |
1.4 许可证与定价模型
Copilot Studio 采用基于消息(Message)的计费模型:
- Microsoft 365 Copilot 许可证:包含基础 Copilot Studio 功能,每个租户有消息配额
- Copilot Studio 独立许可证:按消息包购买,适合大规模部署
- 消息类型分类:
- 经典消息(Classic):传统对话交互
- 生成式 AI 消息(Generative):使用 GPT 生成回复,消耗更多配额
- 受管消息(Managed):企业自定义的受控回复
成本优化建议:合理使用缓存、限制生成式 AI 调用频率、对高频问题使用预设回复。
第二章:环境准备与第一个 Copilot
2.1 环境配置
前提条件:
- 拥有 Microsoft 365 租户(企业版或教育版)
- 具备 Power Platform 环境管理员权限
- 已启用 Copilot Studio 许可证
操作步骤:
步骤 1:访问 Copilot Studio
打开浏览器,导航至 https://copilotstudio.microsoft.com,使用企业账号登录。
步骤 2:选择或创建 Power Platform 环境
在 Copilot Studio 首页右上角,点击环境选择器:
开发环境(推荐):Copilot-Dev
测试环境:Copilot-Test
生产环境:Copilot-Prod
步骤 3:确认 Copilot Studio 功能已启用
进入 Power Platform 管理中心(https://admin.powerplatform.microsoft.com),导航至:
设置 → Copilot Studio → 确认功能状态为"已启用"
步骤 4:配置数据策略
在 Power Platform 管理中心创建数据丢失防护(DLP)策略,确保 Copilot 使用的连接器在允许的策略组中。
2.2 创建第一个自定义 Copilot
步骤 1:新建 Copilot
在 Copilot Studio 首页,点击 "Create" → "New copilot"。
填写基本信息:
名称:Company FAQ Bot
描述:公司常见问题解答助手
语言:中文(简体)
步骤 2:配置基础设置
进入 Copilot 后,导航至 "Settings" → "General":
- 显示名称:公司FAQ助手
- 欢迎消息:您好!我是公司FAQ助手,有什么可以帮您?
- 无法回答时的回复:抱歉,我暂时无法回答这个问题,让我为您转接人工客服。
步骤 3:添加第一个 Topic
在左侧导航栏点击 "Topics" → "+ New topic":
Topic 名称:查询公司地址
触发短语:
- 公司地址在哪里
- 你们公司在哪
- 公司怎么走
- 办公地点
步骤 4:设计对话流
在 Topic 编辑画布中,添加消息节点:
节点 1(消息):我们公司的地址信息如下:
节点 2(消息):
📍 总部地址:北京市海淀区中关村科技园区
🏢 邮编:100080
📞 电话:010-12345678
节点 3(问句):还有什么其他问题吗?
步骤 5:测试
点击右侧面板的 "Test" 按钮,在测试窗口中输入:
用户输入:公司地址在哪里
预期回复:我们公司的地址信息如下...
2.3 Copilot Studio 界面导览
Copilot Studio 的主要界面区域:
┌──────────────────────────────────────────┐
│ 顶部导航栏:Copilot名称 | 环境 | 设置 │
├──────┬───────────────────────────────────┤
│ │ │
│ 左侧 │ 主编辑区域 │
│ 导航 │ (Topic画布 / 知识源 / 设置) │
│ │ │
│ Topics│ │
│ Knowledge│ │
│ Actions│ │
│ Analytics│ │
│ Channels│ │
│ │ │
├──────┴───────────────────────────────────┤
│ 右侧面板:测试 / 属性编辑 / 预览 │
└──────────────────────────────────────────┘
核心导航项说明:
- Topics:管理所有对话主题,是 Copilot 的"大脑"
- Knowledge:配置知识源,让 Copilot 能够回答基于文档的问题
- Actions:连接外部服务和 Power Automate 流程
- Analytics:查看使用数据、会话分析和性能指标
- Channels:管理 Copilot 的发布渠道
2.4 测试与调试基础
内置测试面板:
测试面板支持以下功能:
- 实时对话测试
- 变量值检查
- Topic 匹配追踪
- 会话重置
调试技巧:
- 查看 Topic 匹配日志:当 Copilot 回复不符合预期时,检查是哪个 Topic 被触发
- 使用追踪模式:在测试面板中开启追踪,查看完整的对话处理流程
- 检查变量值:在调试过程中监控变量的赋值和变化
- 测试边界情况:输入模糊、拼写错误或完全无关的内容
第三章:Topic 与对话流设计
3.1 Topic 概念与分类
Topic 是 Copilot Studio 的核心构建单元。每个 Topic 代表一个特定的对话场景或用户意图。
Topic 的组成部分:
Topic = 触发条件(Trigger Phrases) + 对话流(Conversation Flow)
Topic 分类:
| 类型 | 说明 | 示例 |
|---|---|---|
| 自定义 Topic | 开发者创建的业务对话 | 查询订单、请假申请 |
| 系统 Topic | 平台预置的通用对话 | 开始对话、无法识别意图 |
| 回退 Topic | 无法匹配时的兜底处理 | 转人工、推荐话题 |
| 事件 Topic | 由系统事件触发 | 会话开始、会话结束 |
3.2 系统 Topic 与自定义 Topic
系统 Topic 详解:
- Conversation Start(对话开始):用户首次与 Copilot 交互时触发,用于设置欢迎消息和初始变量
- Fallback(回退):当用户输入无法匹配任何 Topic 时触发
- Goodbye(告别):用户表达结束对话意图时触发
- Start Over(重新开始):用户要求重置对话时触发
- Escalation(转人工):将对话转接给人工客服
自定义 Topic 设计原则:
- 单一职责:每个 Topic 只处理一个明确的用户意图
- 命名规范:使用动词+名词结构,如"查询余额"、"提交工单"
- 触发短语多样性:每个 Topic 至少准备 5-10 个触发短语变体
- 避免冲突:确保不同 Topic 的触发短语不会过度重叠
3.3 触发器与意图识别
触发短语最佳实践:
Topic 名称:查询休假余额
触发短语(推荐写法):
- 我还有多少天年假
- 查看我的休假余额
- 剩余假期天数
- 我能休几天假
- 年假还剩多少
- 假期余额查询
- 请假天数查询
触发短语(避免的写法):
- 假期(太宽泛)
- 我想请假(这是另一个Topic)
- 你好(与欢迎Topic冲突)
触发优先级机制:
当多个 Topic 的触发条件匹配时,Copilot Studio 按以下优先级选择:
- 精确匹配(完全一致的短语)
- 置信度最高的 Topic
- 最近编辑的 Topic(同等置信度下)
3.4 对话节点与分支逻辑
Copilot Studio 的对话流由不同类型的节点组成:
节点类型:
消息节点(Message Node)
├── 纯文本消息
├── 富文本消息(支持格式化)
├── 图片/视频/附件
└── 卡片消息(自适应卡片)
问句节点(Question Node)
├── 文本输入
├── 选项选择(单选/多选)
├── 日期选择
├── 数字输入
└── 文件上传
动作节点(Action Node)
├── 调用 Power Automate 流
├── 调用自定义连接器
├── 调用插件
└── 发送 HTTP 请求
逻辑节点(Logic Node)
├── 条件分支(If/Then/Else)
├── 变量操作(Set/Increment)
├── 循环(Loop)
└── 转接到其他 Topic
条件分支示例:
场景:根据用户身份提供不同服务
节点1(问句):请选择您的身份
选项:[正式员工] [实习生] [外包人员]
节点2(条件分支):
如果 Topic.identity == "正式员工":
→ 显示正式员工服务菜单
否则如果 Topic.identity == "实习生":
→ 显示实习生服务菜单
否则:
→ 显示外包人员服务菜单
3.5 变量与上下文管理
变量作用域:
| 作用域 | 生命周期 | 使用场景 |
|---|---|---|
| Topic 变量 | 单个 Topic 内 | 收集用户输入、临时计算 |
| 全局变量 | 整个会话 | 用户信息、会话状态 |
| 系统变量 | 平台管理 | 用户ID、时间戳、渠道信息 |
变量操作:
设置变量:
Action: Set variable
变量名: Topic.userName
值: "张三"
条件检查:
条件: Topic.orderAmount > 1000
Then: 提供VIP服务
Else: 提供标准服务
变量拼接:
消息: "您好,{{Topic.userName}},您的订单金额为 {{Topic.orderAmount}} 元"
系统变量使用:
Global.Session.UserDisplayName → 用户显示名称
Global.Session.UserID → 用户ID
Global.Session.Channel → 当前渠道
Global.Session.StartTime → 会话开始时间
3.6 实体与槽位填充
实体(Entity)是从用户输入中提取的结构化信息。槽位填充(Slot Filling)是确保对话流获得所需信息的机制。
内置实体类型:
DateTime:日期时间识别("明天下午3点")Number:数字识别("5天"、"3个")Money:金额识别("500元")Email:邮箱地址识别Phone:电话号码识别URL:网址识别PersonName:人名识别
自定义实体:
实体名称:Department(部门)
类型:列表(List)
值列表:
- 信息技术部(别名:IT、技术部、信息部)
- 人力资源部(别名:HR、人事部)
- 财务部(别名:Finance、会计部)
- 市场部(别名:Marketing、营销部)
槽位填充示例:
Topic:提交IT工单
问句节点(带槽位填充):
问题:"请描述您遇到的IT问题"
实体:无特定实体
变量:Topic.issueDescription
问句节点(带槽位填充):
问题:"请选择问题的紧急程度"
实体:自定义实体 "UrgencyLevel"
变量:Topic.urgencyLevel
- 如果用户未选择 → 再次询问
- 最大重试次数:2
- 超过重试 → 使用默认值"中等"
3.7 多轮对话与会话管理
多轮对话设计模式:
模式一:漏斗式引导
广泛意图 → 逐步聚焦 → 具体操作
模式二:信息收集
多个问句节点依次收集 → 汇总处理 → 执行操作
模式三:确认-执行
收集信息 → 展示摘要 → 用户确认 → 执行操作
模式四:异常处理
正常流程 → 检测异常 → 引导修正 → 恢复流程
会话状态管理:
场景:用户中途离开又回来
系统变量:
Global.Session.IsReturningUser → 是否为回访用户
Global.Session.LastActivityTime → 上次活动时间
逻辑:
如果 IsReturningUser == true:
如果 LastActivityTime < 当前时间 - 30分钟:
→ "欢迎回来,您之前正在处理XX,是否继续?"
否则:
→ 直接继续之前的对话流
第四章:GPT 模型与生成式 AI 配置
4.1 Copilot Studio 中的 AI 能力概览
Copilot Studio 提供两种 AI 模式:
- 经典模式(Classic):基于规则的意图匹配,使用触发短语和关键词
- 生成式 AI 模式(Generative):使用 GPT 模型理解意图、生成回复
生成式 AI 的应用场景:
- 自动生成 Topic 的触发条件
- 基于知识源生成自然语言回答
- 增强意图识别的准确性
- 智能摘要和信息提取
4.2 启用生成式 AI 回复
操作步骤:
- 进入 Copilot 设置 → "Generative AI"
- 开启 "Generative AI responses" 开关
- 配置以下参数:
回复风格:
[ ] 简洁(适合快速问答)
[x] 平衡(推荐)
[ ] 详细(适合复杂问题)
知识源优先级:
[x] 优先使用知识源
[ ] 优先使用 Topic
安全设置:
[x] 启用内容过滤
[x] 阻止敏感话题
[x] 引用来源显示
4.3 知识源配置
在 "Knowledge" 标签页中添加知识源:
支持的知识源类型:
1. SharePoint 站点/文档库
URL: https://company.sharepoint.com/sites/HRDocs
2. 公共网站
URL: https://company.com/faq
3. 上传文档
支持格式:PDF、Word、Excel、TXT、CSV
4. Dataverse 表格
表格名:EmployeeInfo
5. 自定义数据源(通过连接器)
知识源配置示例:
知识源名称:公司制度文档库
类型:SharePoint
URL:https://contoso.sharepoint.com/sites/CompanyPolicies
范围:整个站点
更新频率:每天自动同步
语言:中文
4.4 GPT 模型选择与调优
Copilot Studio 底层使用 Azure OpenAI Service,支持以下配置:
模型参数调优:
Temperature(创造性):
- 0.0-0.3:精确、一致,适合事实性问答
- 0.4-0.7:平衡,推荐大多数场景
- 0.8-1.0:创造性强,适合创意类任务
Top P(核采样):
- 建议保持默认值 1.0
- 需要精确输出时可降低到 0.5
Max Tokens(最大生成长度):
- 简短回答:256-512
- 标准回答:1024
- 详细回答:2048
Prompt 模板自定义:
在高级设置中,可以自定义系统提示词(System Prompt):
你是 Contoso 公司的AI助手,专门回答员工关于公司政策、制度和流程的问题。
回答规则:
1. 只基于提供的知识源内容回答,不编造信息
2. 如果知识源中没有相关信息,明确告知用户
3. 回答使用中文,语气专业但友好
4. 涉及具体政策条款时,引用文档来源
5. 敏感话题(薪资、裁员等)建议联系HR部门
输出格式:
- 先给出直接回答
- 如有必要,补充相关信息
- 最后提供相关文档链接或联系方式
4.5 AI 安全与内容过滤
内容过滤层级:
层级1:Microsoft 内置过滤
- 暴力内容
- 仇恨言论
- 性相关内容
- 自残相关内容
层级2:组织自定义过滤
- 禁止讨论的话题列表
- 必须拒绝的问题模式
- 敏感关键词屏蔽
层级3:Copilot 特定限制
- 不回答非业务相关问题
- 不泄露内部系统信息
- 不提供法律/医疗建议
配置内容过滤:
Settings → Safety → Content filtering
阻止的话题示例:
- 竞争对手信息
- 未公开的财务数据
- 员工个人隐私
- 政治敏感话题
第五章:企业知识库集成
5.1 SharePoint 知识源
SharePoint 是企业最常用的知识源,适合存储政策文档、操作手册、FAQ等。
配置步骤:
- 在 Knowledge 页面点击 "+ Add knowledge"
- 选择 "SharePoint"
- 输入 SharePoint 站点或文档库 URL
- 选择同步范围(整个站点或特定文件夹)
- 设置同步频率
支持的 SharePoint 内容类型:
✅ 文档库(Document Libraries)
✅ 站点页面(Site Pages)
✅ 列表数据(Lists)
✅ Wiki 页面
❌ 不支持:
- 权限受限的内容(用户无权访问的文件)
- 音视频文件
- 超过大小限制的文件(单文件通常限制 20-50MB)
SharePoint 权限要求:
Copilot 访问 SharePoint 所需的最低权限:
- 站点读取权限
- 文档库读取权限
- 如果使用应用身份:SharePoint Sites.Read.All
5.2 公共网站与文档知识源
网站知识源配置:
类型:Website
URL:https://company.com/help
爬取深度:3 层
排除模式:
- */login/*
- */admin/*
- *.pdf(如不需要PDF内容)
更新频率:每周
文档上传:
支持的文件格式:
- PDF(.pdf)
- Word(.docx, .doc)
- Excel(.xlsx, .xls)
- PowerPoint(.pptx, .ppt)
- 纯文本(.txt)
- CSV(.csv)
- Markdown(.md)
单文件大小限制:通常 20-50MB
文件数量限制:因许可证而异
5.3 Dataverse 表格数据
Dataverse 是 Power Platform 的数据存储层,适合结构化数据查询。
配置示例:
数据源:Dataverse
表格名:Employee(员工表)
选择列:
- EmployeeName(员工姓名)
- Department(部门)
- Position(职位)
- OfficeLocation(办公地点)
- Email(邮箱)
允许 Copilot 查询此表格的数据
查询优化:
1. 限制返回列数:只选择用户可能查询的列
2. 设置筛选条件:只同步活跃记录
3. 建立索引:在常用查询列上建立索引
4. 数据量控制:避免同步过多记录(建议 < 10,000 行)
5.4 自定义知识源与 API
当内置知识源无法满足需求时,可以通过自定义连接器接入外部知识库。
场景示例:接入企业 Wiki 系统
// 自定义连接器配置
{
"name": "EnterpriseWiki",
"host": "wiki.company.com",
"basePath": "/api/v2",
"authentication": "OAuth2",
"operations": [
{
"name": "SearchArticles",
"method": "GET",
"path": "/articles/search",
"parameters": [
{
"name": "query",
"type": "string",
"required": true
},
{
"name": "limit",
"type": "integer",
"default": 5
}
]
}
]
}
5.5 知识检索优化策略
提高检索准确性的方法:
1. 文档预处理
- 清理格式混乱的文档
- 添加清晰的标题和小标题
- 将长文档拆分为多个短文档
- 添加关键词和摘要
2. 知识源组织
- 按主题分类创建不同的知识源
- 为每个知识源设置清晰的描述
- 避免重复和过时的内容
3. 检索调优
- 测试不同类型的查询
- 根据测试结果调整文档内容
- 使用"验证答案"功能检查准确性
4. 持续维护
- 定期更新知识源内容
- 删除过时的文档
- 根据用户反馈优化文档
第六章:Power Platform 集成
6.1 Power Automate 流程集成
Power Automate 是 Copilot Studio 执行后台操作的核心工具。
典型集成场景:
场景1:发送邮件通知
Copilot 收集信息 → Power Automate → 发送 Outlook 邮件
场景2:创建审批流程
Copilot 提交申请 → Power Automate → 创建审批 → 通知审批人
场景3:查询外部系统
用户提问 → Copilot → Power Automate → 查询 SAP/ERP → 返回结果
场景4:数据录入
Copilot 收集表单 → Power Automate → 写入 SharePoint/Dataverse
创建 Power Automate 流程:
步骤 1:在 Copilot Studio 的 Actions 页面,点击 "+ Add an action"
步骤 2:选择 "New Power Automate flow"
步骤 3:设计流程:
触发器:Copilot Studio(V2)
- 输入参数:userName (string), requestType (string), description (string)
动作1:创建 SharePoint 列表项
- 站点:https://company.sharepoint.com/sites/ITRequests
- 列表:ITRequests
- 字段映射:
Title = 触发器.userName
RequestType = 触发器.requestType
Description = 触发器.description
Status = "新建"
CreatedDate = utcNow()
动作2:发送邮件通知
- 收件人:it-support@company.com
- 主题:新IT请求 - {{触发器.userName}}
- 内容:{{触发器.userName}} 提交了 {{触发器.requestType}} 请求
响应:返回结果给 Copilot Studio
- ticketNumber = 动作1.Id
- status = "已创建"
步骤 4:在 Copilot 中调用流程:
在 Topic 对话流中:
动作节点 → 选择刚创建的流程
映射变量:
userName = Topic.userName
requestType = Topic.requestType
description = Topic.description
输出变量:
Flow.ticketNumber → Topic.ticketNumber
Flow.status → Topic.status
6.2 Power Apps 连接
将 Copilot 嵌入 Power Apps 应用:
方法1:使用 Copilot 控件
1. 在 Power Apps 编辑器中插入 "Copilot" 控件
2. 选择要使用的 Copilot
3. 配置控件位置和大小
4. 发布应用
方法2:使用组件库
1. 导入 Copilot Studio 组件库
2. 在应用中拖放组件
3. 配置数据绑定
6.3 Dataverse 数据操作
常见 Dataverse 操作:
查询操作:
表格:Account(客户)
筛选:AccountType eq 'Enterprise'
排序:CreatedOn desc
返回前 10 条记录
创建操作:
表格:Case(工单)
字段:
Title = "用户报告的问题"
CustomerId = 当前客户
Priority = "High"
StatusReason = "新建"
更新操作:
表格:Case
记录ID:指定工单ID
更新字段:
StatusReason = "已解决"
Resolution = "已远程修复"
6.4 自定义连接器
当需要连接非标准外部系统时,使用自定义连接器。
创建自定义连接器:
步骤1:定义 API 规范
- 获取 API 的 OpenAPI/Swagger 规范文件
- 或手动定义 API 端点和参数
步骤2:配置连接器
名称:CustomERPConnector
主机:erp.company.com
基础路径:/api/v1
认证方式:API Key / OAuth2 / Basic Auth
步骤3:定义操作
操作1:GetEmployeeInfo
方法:GET
路径:/employees/{employeeId}
参数:employeeId (path, string)
操作2:SubmitLeaveRequest
方法:POST
路径:/leaves
Body:
{
"employeeId": "string",
"startDate": "string",
"endDate": "string",
"leaveType": "string",
"reason": "string"
}
步骤4:测试连接器
在 Power Platform 中测试每个操作
确保认证和数据返回正确
步骤5:在 Copilot Studio 中使用
在 Actions 中添加此连接器
在 Topic 对话流中调用操作
第七章:Copilot 连接器与外部系统集成
7.1 Copilot 连接器概述
Copilot 连接器(Copilot Connectors)用于将外部数据源连接到 Microsoft 365 生态系统,使 Copilot 能够检索和使用这些数据。
连接器类型:
数据连接器(Data Connectors):
- 为 Copilot 提供外部数据的访问能力
- 支持索引和搜索
- 示例:ServiceNow、Salesforce、Confluence
操作连接器(Action Connectors):
- 允许 Copilot 在外部系统中执行操作
- 支持读写操作
- 示例:创建工单、更新记录、发送通知
7.2 配置标准连接器
常用标准连接器:
| 连接器 | 用途 | 认证方式 |
|---|---|---|
| Office 365 Outlook | 邮件操作 | OAuth2 |
| SharePoint | 文档和列表操作 | OAuth2 |
| Microsoft Teams | 消息和团队操作 | OAuth2 |
| Dataverse | 数据操作 | OAuth2 |
| HTTP | 通用HTTP请求 | 多种 |
| SQL Server | 数据库查询 | SQL认证 |
| Azure AD | 用户管理 | OAuth2 |
配置示例 - Office 365 Outlook:
连接器:Office 365 Outlook
操作:Send an email (V2)
参数配置:
To: Topic.userEmail
Subject: "您的请求已处理 - " + Topic.ticketNumber
Body:
"<h2>请求处理通知</h2>
<p>尊敬的 {{Topic.userName}},</p>
<p>您的请求(工单号:{{Topic.ticketNumber}})已处理完成。</p>
<p>处理结果:{{Topic.resolution}}</p>"
Importance: Normal
7.3 构建自定义连接器
完整示例 - ITSM 系统连接器:
{
"swagger": "2.0",
"info": {
"title": "ITSM Connector",
"description": "连接企业IT服务管理系统",
"version": "1.0"
},
"host": "itsm.company.com",
"basePath": "/api/v2",
"schemes": ["https"],
"securityDefinitions": {
"api_key": {
"type": "apiKey",
"in": "header",
"name": "Authorization"
}
},
"paths": {
"/incidents": {
"post": {
"summary": "创建事件工单",
"operationId": "CreateIncident",
"parameters": [
{
"name": "body",
"in": "body",
"schema": {
"type": "object",
"properties": {
"short_description": { "type": "string" },
"description": { "type": "string" },
"urgency": { "type": "string", "enum": ["1", "2", "3"] },
"category": { "type": "string" },
"caller_id": { "type": "string" }
},
"required": ["short_description", "urgency"]
}
}
],
"responses": {
"201": {
"description": "工单创建成功",
"schema": {
"type": "object",
"properties": {
"incident_id": { "type": "string" },
"status": { "type": "string" },
"created_at": { "type": "string" }
}
}
}
}
}
},
"/incidents/{incident_id}": {
"get": {
"summary": "查询工单状态",
"operationId": "GetIncident",
"parameters": [
{
"name": "incident_id",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "工单详情",
"schema": {
"type": "object",
"properties": {
"incident_id": { "type": "string" },
"short_description": { "type": "string" },
"status": { "type": "string" },
"assigned_to": { "type": "string" },
"updated_at": { "type": "string" }
}
}
}
}
}
}
}
}
7.4 插件与扩展机制
Copilot Studio 插件架构:
插件类型:
1. Power Platform 组件插件
- Power Automate 流作为插件
- Power Fx 公式插件
2. API 插件
- REST API 调用
- GraphQL 查询
3. AI 插件
- Azure AI 服务调用
- 自定义模型推理
插件注册流程:
1. 在 Copilot Studio 中选择 "Actions" → "New action"
2. 选择插件类型
3. 配置连接参数
4. 定义输入输出
5. 测试插件
6. 在 Topic 中调用
第八章:Teams 部署与企业分发
8.1 Teams 频道配置
配置步骤:
- 在 Copilot Studio 中,进入 "Channels" 页面
- 选择 "Microsoft Teams"
- 点击 "Turn on Teams"
- 配置 Teams 特定设置:
Teams 配置项:
显示名称:企业AI助手
图标:上传自定义图标(192x192 PNG)
描述:您的智能工作助手,随时解答问题
颜色主题:#0078D4(品牌色)
高级设置:
[x] 允许个人聊天
[x] 允许团队聊天
[x] 允许频道帖子
[ ] 允许会议集成(如需要)
8.2 Teams 应用包发布
通过 Teams 管理中心发布:
步骤 1:导出应用包
在 Copilot Studio → Channels → Teams
点击 "Submit for admin approval"
系统生成 .zip 应用包
步骤 2:上传到 Teams 管理中心
登录 Teams 管理中心(https://admin.teams.microsoft.com)
导航至 Teams apps → Manage apps
点击 "Upload" 上传应用包
配置应用可用性策略
步骤 3:配置应用权限策略
应用权限策略设置:
允许的应用:企业AI助手
应用可用性:
- 整个组织(推荐逐步推出)
- 或特定安全组
步骤 4:配置应用设置策略
Teams 应用设置策略:
名称:Copilot 应用策略
固定应用:是 → 将企业AI助手固定到 Teams 左侧栏
安装应用:允许用户自行安装
8.3 企业级部署策略
分阶段部署计划:
阶段1:试点测试(2周)
- 范围:IT部门 + 2个业务部门
- 用户数:50-100人
- 目标:验证功能、收集反馈
阶段2:扩展测试(2周)
- 范围:3-5个业务部门
- 用户数:200-500人
- 目标:性能测试、场景扩展
阶段3:全量部署(1周)
- 范围:整个组织
- 用户数:全体员工
- 目标:全面推广、持续优化
每个阶段的关键活动:
- 部署前:培训材料准备、管理员培训
- 部署中:监控系统性能、处理用户反馈
- 部署后:数据分析、优化迭代
8.4 权限与安全控制
Teams 中的安全配置:
1. 数据丢失防护(DLP)策略
- 配置 Copilot 可以使用的数据分类
- 限制敏感信息的显示
2. 条件访问策略
- 限制 Copilot 的访问位置
- 要求多因素认证
3. 应用权限控制
- 限制 Copilot 可以访问的 Teams 资源
- 配置消息权限范围
4. 审计日志
- 启用 Copilot 交互日志
- 配置合规性保留策略
Copilot 级别的安全设置:
Settings → Security
身份验证:
- 无需认证(匿名访问)
- Microsoft Entra ID(推荐)
- 自定义OAuth
数据保护:
- 会话数据加密
- PII脱敏处理
- 数据驻留区域选择
访问控制:
- IP白名单
- 时间段限制
- 并发会话限制
第九章:Copilot API 与高级扩展
9.1 Copilot Studio API 概述
Copilot Studio 提供 REST API 用于高级集成场景。
主要 API 端点:
基础URL:https://{environment}.api.crm.dynamics.com/api/copilot/v1
会话管理:
POST /conversations - 创建新会话
DELETE /conversations/{conversationId} - 结束会话
消息交互:
POST /conversations/{conversationId}/activities - 发送消息
GET /conversations/{conversationId}/activities - 获取消息历史
Copilot 管理:
GET /copilots - 获取 Copilot 列表
GET /copilots/{copilotId} - 获取 Copilot 详情
POST /copilots/{copilotId}/publish - 发布 Copilot
9.2 直接线路集成
直接线路(Direct Line)允许通过自定义客户端与 Copilot 交互。
JavaScript 集成示例:
// 初始化直接线路连接
class CopilotClient {
constructor(copilotId, directLineSecret) {
this.copilotId = copilotId;
this.directLineSecret = directLineSecret;
this.conversationId = null;
this.token = null;
}
// 创建会话
async createConversation() {
const response = await fetch(
'https://directline.botframework.com/v3.0/directline/conversations',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${this.directLineSecret}`,
'Content-Type': 'application/json'
}
}
);
const data = await response.json();
this.conversationId = data.conversationId;
this.token = data.token;
return data;
}
// 发送消息
async sendMessage(text, userId, userName) {
const response = await fetch(
`https://directline.botframework.com/v3.0/directline/conversations/${this.conversationId}/activities`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${this.token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
type: 'message',
from: { id: userId, name: userName },
text: text,
textFormat: 'plain'
})
}
);
return await response.json();
}
// 获取回复
async getResponses(watermark = '') {
const response = await fetch(
`https://directline.botframework.com/v3.0/directline/conversations/${this.conversationId}/activities?watermark=${watermark}`,
{
headers: {
'Authorization': `Bearer ${this.token}`
}
}
);
return await response.json();
}
}
// 使用示例
const client = new CopilotClient('your-copilot-id', 'your-direct-line-secret');
await client.createConversation();
await client.sendMessage('查询我的休假余额', 'user123', '张三');
const responses = await client.getResponses();
9.3 自定义客户端开发
Web 嵌入示例:
<!DOCTYPE html>
<html>
<head>
<title>企业AI助手</title>
<style>
.copilot-container {
width: 400px;
height: 600px;
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.copilot-header {
background: #0078D4;
color: white;
padding: 12px 16px;
font-size: 16px;
font-weight: 600;
}
.copilot-iframe {
width: 100%;
height: calc(100% - 48px);
border: none;
}
</style>
</head>
<body>
<div class="copilot-container">
<div class="copilot-header">企业AI助手</div>
<iframe
class="copilot-iframe"
src="https://copilotstudio.microsoft.com/environments/{environment-id}/bots/{copilot-id}/webchat"
sandbox="allow-scripts allow-same-origin allow-forms"
></iframe>
</div>
</body>
</html>
9.4 Webhook 与事件处理
配置 Copilot Studio Webhook:
Webhook 配置:
事件类型:
- ConversationStarted(会话开始)
- ConversationEnded(会话结束)
- MessageReceived(收到消息)
- EscalationTriggered(触发转人工)
- ErrorOccurred(发生错误)
Webhook URL:https://your-api.com/copilot-events
认证方式:Bearer Token
重试策略:3次,间隔递增
Webhook 处理示例(Node.js):
const express = require('express');
const app = express();
app.post('/copilot-events', (req, res) => {
const { eventType, conversationId, userId, timestamp, data } = req.body;
switch (eventType) {
case 'ConversationStarted':
console.log(`会话开始: ${conversationId}, 用户: ${userId}`);
// 记录会话指标
logSessionMetric(conversationId, 'started', timestamp);
break;
case 'EscalationTriggered':
console.log(`转人工请求: ${conversationId}`);
// 创建人工客服工单
createSupportTicket(conversationId, data.reason);
// 通知客服团队
notifySupportTeam(conversationId, userId);
break;
case 'ErrorOccurred':
console.error(`错误: ${conversationId}, ${data.error}`);
// 记录错误并告警
logError(conversationId, data.error);
break;
}
res.status(200).json({ received: true });
});
app.listen(3000, () => console.log('Webhook 服务已启动'));
第十章:与 Azure AI Foundry 集成
10.1 Azure AI Foundry 概述
Azure AI Foundry(原 Azure AI Studio)是微软统一的AI开发平台,提供:
核心能力:
- Azure OpenAI Service(GPT-4、GPT-3.5、DALL-E 等)
- Azure AI Search(企业级搜索)
- Azure AI Content Safety(内容安全)
- Azure AI Language(语言理解)
- Azure AI Speech(语音服务)
- Azure AI Vision(视觉服务)
与 Copilot Studio 的集成点:
- 使用 Azure OpenAI 增强生成能力
- 使用 Azure AI Search 作为知识检索后端
- 使用 Azure AI Content Safety 加强内容过滤
- 使用自定义模型扩展 AI 能力
10.2 Azure OpenAI Service 集成
配置 Azure OpenAI 连接:
步骤 1:在 Azure 门户创建 Azure OpenAI 资源
资源名称:contoso-openai
区域:East US(或可用区域)
定价层:S0
步骤 2:部署模型
模型:gpt-4o
部署名称:gpt-4o-deployment
版本:2024-08-06
TPM 限制:根据需求配置
步骤 3:在 Copilot Studio 中配置
Settings → Generative AI → Azure OpenAI
连接信息:
Endpoint:https://contoso-openai.openai.azure.com/
API Key:(从 Azure 门户获取)
Deployment Name:gpt-4o-deployment
模型参数:
Temperature:0.7
Max Tokens:1024
Top P:1.0
10.3 自定义 AI 模型接入
场景:接入企业自训练的分类模型
# Azure Functions 作为模型推理服务
import azure.functions as func
import json
from azure.ai.textanalytics import TextAnalyticsClient
def classify_request(text: str) -> dict:
"""使用自训练模型分类用户请求"""
# 这里可以是自定义模型的推理逻辑
categories = {
"IT": ["电脑故障", "网络问题", "软件安装", "密码重置"],
"HR": ["请假", "薪资", "入职", "离职"],
"Finance": ["报销", "预算", "发票"]
}
for category, keywords in categories.items():
for keyword in keywords:
if keyword in text:
return {"category": category, "confidence": 0.95}
return {"category": "Unknown", "confidence": 0.3}
app = func.FunctionApp()
@app.route(route="classify", auth_level=func.AuthLevel.FUNCTION)
def classify(req: func.HttpRequest) -> func.HttpResponse:
body = req.get_json()
text = body.get("text", "")
result = classify_request(text)
return func.HttpResponse(
json.dumps(result, ensure_ascii=False),
mimetype="application/json"
)
10.4 企业级 AI 治理
AI 治理框架:
1. 数据治理
- 训练数据审查
- 知识源内容审核
- 用户数据保护(GDPR/CCPA)
- 数据分类与标签
2. 模型治理
- 模型版本管理
- 性能监控与评估
- 偏见检测与缓解
- 模型使用审计
3. 输出治理
- 内容安全过滤
- 事实性验证
- 引用来源追溯
- 用户反馈收集
4. 访问治理
- 角色基础访问控制
- API 使用配额
- 敏感操作审批
- 审计日志记录
实施 Copilot 治理策略:
在 Power Platform 管理中心配置:
1. 环境策略
- 限制可以创建 Copilot 的用户
- 要求 Copilot 发布前审批
- 配置数据保留策略
2. DLP 策略
- 定义业务和非业务数据组
- 限制跨组数据流动
- 配置连接器分类
3. 审计配置
- 启用 Copilot Studio 审计日志
- 配置日志保留期
- 设置告警规则
第十一章:实战项目一 — 企业智能 HR 助手
项目概述
构建一个企业级 HR 智能助手,覆盖员工日常 HR 需求。
功能范围
核心功能:
1. 公司政策查询(休假、考勤、报销等)
2. 请假申请提交
3. 薪资疑问解答
4. 入职/离职流程指引
5. 培训课程查询与报名
6. 员工福利说明
扩展功能:
7. 员工信息查询(通过 Dataverse)
8. 审批状态追踪
9. 生日/节日祝福
10. 满意度调查
实现步骤
第 1 步:创建 Copilot 并配置基础信息
Copilot 名称:HR 智能助手
显示名称:小H - 您的HR助手
欢迎消息:
"您好!我是小H,您的智能HR助手 🙋♀️
我可以帮您:
📋 查询公司政策和制度
🏖️ 提交请假申请
💰 解答薪资相关问题
📚 查询培训课程
🎁 了解员工福利
请问有什么可以帮您的?"
第 2 步:配置知识源
知识源 1:HR 政策文档库
类型:SharePoint
URL:https://contoso.sharepoint.com/sites/HR/Policies
描述:公司人力资源政策文档,包含休假、考勤、报销等制度
知识源 2:员工手册
类型:文档上传
文件:员工手册2024.pdf、入职指南.pdf
知识源 3:培训课程信息
类型:SharePoint 列表
URL:https://contoso.sharepoint.com/sites/HR/Lists/TrainingCourses
第 3 步:设计核心 Topic
Topic 1:查询休假政策
触发短语:
- 年假有几天
- 请假流程是什么
- 病假需要什么证明
- 婚假多少天
- 产假政策
对话流:
1. 使用知识源检索相关政策
2. 生成结构化回答
3. 询问是否需要提交请假申请
Topic 2:提交请假申请
触发短语:
- 我想请假
- 提交请假申请
- 请年假
- 请病假
对话流:
1. 问句:选择请假类型(年假/事假/病假/其他)
2. 问句:选择开始日期(日期实体)
3. 问句:选择结束日期(日期实体)
4. 问句:输入请假原因
5. 显示摘要并确认
6. 调用 Power Automate 创建审批
7. 返回工单号和预计审批时间
Topic 3:查询薪资明细
触发短语:
- 工资条在哪看
- 这个月工资多少
- 薪资构成是什么
- 社保公积金查询
对话流:
1. 验证用户身份(通过 Entra ID)
2. 查询 Dataverse 中的薪资数据
3. 以安全方式展示薪资信息
4. 提供常见薪资问题解答
第 4 步:创建 Power Automate 流程
流程1:HR-CreateLeaveRequest
触发器:Copilot Studio
输入参数:
- employeeId (string)
- leaveType (string)
- startDate (string)
- endDate (string)
- reason (string)
动作:
1. 计算请假天数(排除周末)
2. 检查剩余假期余额
3. 创建 Dataverse 记录
4. 发送审批请求给直接主管
5. 发送邮件通知员工
6. 返回工单号
流程2:HR-CheckLeaveBalance
触发器:Copilot Studio
输入参数:
- employeeId (string)
动作:
1. 查询 Dataverse 员工假期表
2. 计算各类型假期余额
3. 返回假期余额信息
第 5 步:配置 Actions
Action 1:创建请假申请
连接器:Power Automate
流程:HR-CreateLeaveRequest
输入映射:
employeeId → Global.Session.UserID
leaveType → Topic.leaveType
startDate → Topic.startDate
endDate → Topic.endDate
reason → Topic.reason
输出映射:
ticketNumber → Topic.ticketNumber
status → Topic.requestStatus
Action 2:查询假期余额
连接器:Power Automate
流程:HR-CheckLeaveBalance
输入映释:
employeeId → Global.Session.UserID
输出映释:
annualLeave → Topic.annualLeaveBalance
sickLeave → Topic.sickLeaveBalance
personalLeave → Topic.personalLeaveBalance
第 6 步:部署到 Teams
1. 配置 Teams 频道
2. 设置应用图标和描述
3. 提交管理员审批
4. 配置应用策略
5. 发布到全员
测试用例
用例1:政策查询
输入:公司年假政策是什么?
预期:返回年假相关制度,包含天数、申请流程等
用例2:请假申请
输入:我想请3天年假
预期:
1. 询问开始日期
2. 确认结束日期(自动计算)
3. 询问请假原因
4. 展示申请摘要
5. 确认后创建申请
用例3:模糊查询
输入:假期
预期:询问用户具体想了解什么(政策查询 or 申请 or 余额)
用例4:异常处理
输入:我想请30天假
预期:检查余额不足,提示剩余天数并建议调整
第十二章:实战项目二 — IT 运维 Copilot
项目概述
构建面向企业 IT 部门的运维 Copilot,帮助员工自助解决常见 IT 问题,并支持工单创建和状态追踪。
功能范围
核心功能:
1. 常见IT问题自助解答(密码重置、VPN连接、打印机问题等)
2. IT工单创建与追踪
3. 资产查询(电脑、软件许可等)
4. 新员工IT入职指引
5. 软件申请与安装指引
高级功能:
6. 与 ITSM 系统集成(ServiceNow/Jira)
7. 自动化故障诊断
8. 变更管理通知
9. IT 维护窗口提醒
实现步骤
第 1 步:创建 Copilot
Copilot 名称:IT 运维助手
显示名称:IT小助
欢迎消息:
"您好!我是IT小助 🖥️
我可以帮您解决IT问题:
🔑 密码重置与账户问题
🌐 网络与VPN连接
🖨️ 打印机故障
💻 电脑问题诊断
📦 软件申请
📋 IT工单查询
请描述您遇到的问题,或选择上方选项。"
第 2 步:设计问题诊断 Topic
Topic:密码重置引导
触发短语:
- 密码忘了
- 无法登录
- 密码重置
- 账户被锁定
- 忘记密码
对话流设计:
1. 问句:您遇到的是哪种问题?
选项:[忘记密码] [账户被锁定] [密码过期]
2a. 如果 选择"忘记密码":
消息:请访问自助密码重置页面:https://password.company.com
消息:如果无法自助重置,请提供以下信息:
问句:请输入您的工号
问句:请输入您的注册手机号后4位
验证:调用 Power Automate 验证身份
如果验证成功:
调用 Power Automate 发送重置链接
消息:重置链接已发送到您的手机,请查收
如果验证失败:
消息:身份验证失败,请联系IT服务台 400-xxx-xxxx
2b. 如果 选择"账户被锁定":
消息:账户锁定通常是由于多次输入错误密码导致
消息:系统将在30分钟后自动解锁
问句:您是否需要立即解锁?
选项:[需要立即解锁] [等待自动解锁]
如果选择"需要立即解锁":
→ 创建紧急解锁工单
第 3 步:集成 ITSM 系统
自定义连接器配置:
名称:ServiceNowConnector
主机:contoso.service-now.com
认证:Basic Auth(使用服务账户)
操作定义:
1. CreateIncident(创建事件)
POST /api/now/table/incident
Body:
{
"short_description": "{{summary}}",
"description": "{{description}}",
"urgency": "{{urgency}}",
"category": "{{category}}",
"caller_id": "{{callerId}}"
}
Response:{ "result": { "number": "INC0012345" } }
2. GetIncidentStatus(查询事件状态)
GET /api/now/table/incident?sysparm_query=number={{incidentNumber}}
Response:{ "result": [{ "state": "In Progress", "assigned_to": "..." }] }
3. UpdateIncident(更新事件)
PATCH /api/now/table/incident/{{sysId}}
Body:{ "comments": "{{comment}}" }
第 4 步:自动化故障诊断
Topic:电脑运行缓慢诊断
触发短语:
- 电脑很卡
- 运行缓慢
- 系统很慢
- 电脑卡顿
诊断流程:
1. 消息:我来帮您诊断电脑问题 🔍
2. 问句:问题是什么时候开始的?
选项:[今天] [最近几天] [一直很慢]
3. 问句:重启电脑后问题是否改善?
选项:[已尝试重启,没有改善] [没有重启过] [重启后有改善]
4. 问句:主要在使用什么软件时感觉慢?
选项:[所有软件] [浏览器] [Office] [特定软件]
5. 条件判断:
如果 "最近几天" + "所有软件":
建议:
1. 检查任务管理器中的CPU/内存使用
2. 清理临时文件
3. 检查是否有Windows更新
提供操作指南文档链接
如果 "今天" + 没有重启:
建议:请先重启电脑,大多数临时问题可以通过重启解决
如果重启后仍存在问题,请告诉我
如果 "一直很慢":
可能是硬件配置问题
建议:提交硬件升级申请
→ 跳转到工单创建流程
6. 问句:以上建议是否解决了您的问题?
选项:[已解决] [仍未解决,需要创建工单]
如果未解决 → 创建IT支持工单
第 5 步:资产查询功能
Topic:查询我的IT资产
触发短语:
- 我的电脑型号
- 查看我的设备
- 软件许可证
- 我的IT资产
对话流:
1. 验证用户身份(通过 Teams 身份)
2. 调用 Power Automate 查询 CMDB:
输入:userId
输出:
- computer:电脑型号、序列号、配置
- monitor:显示器信息
- software:已安装软件列表
- license:软件许可证到期日期
3. 展示资产信息:
消息:
📱 您的IT资产信息:
💻 电脑:Dell Latitude 5540
序列号:XXXXX
配置:i7-1365U / 16GB / 512GB SSD
保修到期:2025-12-31
🖥️ 显示器:Dell P2723QE (27寸 4K)
📦 已安装软件:
- Microsoft 365 Apps(许可证有效)
- Adobe Acrobat Pro(到期:2024-06-30)
- Visual Studio Enterprise(许可证有效)
4. 问句:需要进行什么操作?
选项:[申请新软件] [报告设备问题] [软件续期] [无]
第 6 步:创建自动化流程
流程1:IT-CreateTicket
输入:问题描述、分类、优先级、用户信息
处理:
1. 在 ServiceNow 创建事件工单
2. 发送确认邮件给用户
3. 通知对应支持组
输出:工单号
流程2:IT-CheckTicketStatus
输入:工单号
处理:
1. 查询 ServiceNow 工单状态
2. 获取处理进度和备注
输出:状态、分配人、更新时间、最新备注
流程3:IT-PasswordReset
输入:工号、手机后4位
处理:
1. 验证用户身份
2. 调用 AD 接口发送密码重置链接
3. 记录操作日志
输出:操作结果
流程4:IT-AssetQuery
输入:用户ID
处理:
1. 查询 CMDB 数据库
2. 格式化资产信息
输出:资产列表
测试用例
用例1:密码重置
输入:我忘记密码了
预期:引导用户选择问题类型,完成自助重置或创建工单
用例2:电脑问题
输入:我的电脑特别卡,所有软件都很慢
预期:
1. 询问问题发生时间
2. 询问是否尝试重启
3. 根据回答提供诊断建议
4. 如果未解决,创建工单
用例3:工单查询
输入:帮我查一下 INC0012345 的状态
预期:
1. 查询 ServiceNow
2. 返回工单状态、处理人、最新进展
用例4:软件申请
输入:我需要申请 Visio
预期:
1. 确认用户部门和职位
2. 检查是否有可用许可
3. 创建软件申请工单
4. 发送审批流程
第十三章:监控、分析与持续优化
数据分析指标
Copilot Studio Analytics 关键指标:
会话指标:
- 总会话数
- 平均会话时长
- 会话完成率
- 转人工率
Topic 指标:
- 各 Topic 触发次数
- Topic 匹配成功率
- 回退(Fallback)率
- 用户满意度评分
知识源指标:
- 知识检索次数
- 答案准确率
- 引用来源分布
性能指标:
- 平均响应时间
- 错误率
- 可用性
监控仪表板配置:
Power BI 仪表板设计:
页面1:总览
- 今日/本周/本月会话趋势图
- 热门 Topic 排行
- 用户满意度趋势
- 转人工率趋势
页面2:详细分析
- 会话漏斗分析
- 用户旅程热图
- 回退原因分析
- 响应时间分布
页面3:知识源效果
- 知识源使用频率
- 答案准确率
- 未覆盖问题列表
- 知识更新建议
持续优化策略
1. 每周优化循环
周一:分析上周数据,识别问题
周二-周三:更新触发短语和对话流
周四:更新知识源内容
周五:测试并发布更新
2. 月度优化重点
- 分析 Top 10 回退原因,创建对应 Topic
- 更新过时的知识源内容
- 优化对话流的用户体验
- 收集并处理用户反馈
3. 季度评估
- 评估 Copilot 整体效果
- 规划新功能需求
- 评估技术架构调整
- 成本效益分析
用户反馈收集
在对话流中嵌入反馈收集:
方法1:每次回答后
消息节点后添加:
问句:"这个回答对您有帮助吗?"
选项:[👍 有帮助] [👎 没帮助]
如果 "没帮助":
问句:"请告诉我哪里不满意(可选)"
记录反馈到 Dataverse
方法2:会话结束时
系统 Topic "Goodbye" 中添加:
问句:"请为本次服务评分"
选项:[⭐⭐⭐⭐⭐] [⭐⭐⭐⭐] [⭐⭐⭐] [⭐⭐] [⭐]
记录评分到 Dataverse
方法3:定期调查
通过 Teams 消息定期推送满意度调查链接
第十四章:常见问题与故障排除
Q1:Copilot 无法正确匹配 Topic
症状:用户输入触发短语,但 Copilot 进入回退 Topic。
可能原因与解决方案:
原因1:触发短语与实际输入差异太大
解决:增加更多触发短语变体,包括口语化表达
原因2:多个 Topic 触发短语冲突
解决:检查 Topics 的触发短语是否有重叠,调整优先级
原因3:生成式 AI 模式干扰
解决:检查是否开启"生成式编排",尝试关闭或调整设置
原因4:实体识别错误
解决:检查实体定义是否正确,添加更多示例
Q2:生成式 AI 回复不准确
症状:基于知识源的回答包含错误信息或编造内容。
解决方案:
1. 检查知识源内容
- 确保知识源文档内容准确
- 删除过时或矛盾的内容
- 使用清晰的结构化文档
2. 调整模型参数
- 降低 Temperature(建议 0.3-0.5)
- 添加更严格的系统提示词
- 启用"仅基于知识源回答"
3. 添加引用验证
- 开启"显示引用来源"功能
- 要求 Copilot 标注信息来源
4. 配置内容过滤
- 添加敏感话题的阻止规则
- 设置"不知道"的标准回复
Q3:Power Automate 流程调用失败
症状:Copilot 调用 Action 时返回错误。
排查步骤:
1. 检查连接状态
Settings → Actions → 检查连接器状态
确保认证未过期
2. 检查输入参数
在 Topic 中检查变量映射是否正确
确认数据类型匹配
3. 查看流运行历史
Power Automate → 流程 → 运行历史
查看失败运行的错误详情
4. 常见错误:
- 401 Unauthorized:认证过期或权限不足
- 400 Bad Request:输入参数格式错误
- 429 Too Many Requests:触发速率限制
- 500 Internal Server Error:目标系统异常
Q4:Teams 中 Copilot 不可用
症状:用户在 Teams 中找不到 Copilot 或无法使用。
解决方案:
1. 检查应用发布状态
Copilot Studio → Channels → Teams → 确认已开启
2. 检查应用策略
Teams 管理中心 → Teams apps → Setup policies
确认 Copilot 在允许列表中
3. 检查用户权限
确认用户在目标安全组中
检查条件访问策略
4. 清除 Teams 缓存
退出 Teams → 删除缓存文件夹 → 重新登录
5. 检查 Copilot 状态
Copilot Studio → 确认 Copilot 已发布
检查是否有错误状态
Q5:性能问题与响应延迟
症状:Copilot 响应时间过长。
优化方案:
1. 减少知识源范围
- 只索引必要文档
- 限制网站爬取深度
- 优化知识源组织结构
2. 优化 Power Automate 流程
- 减少不必要的 API 调用
- 使用并行分支优化流程
- 添加超时处理
3. 调整模型参数
- 降低 Max Tokens
- 使用更轻量的模型(如 GPT-3.5)
4. 配置缓存
- 对常见问答启用缓存
- 使用 CDN 加速静态资源
Q6:许可证与成本问题
常见问题:
Q:消息配额用完了怎么办?
A:
1. 分析消息使用情况,优化不必要的生成式 AI 调用
2. 对简单问题使用经典 Topic 而非生成式 AI
3. 考虑购买更多消息包
4. 实施缓存策略减少重复查询
Q:如何估算所需消息数?
A:
1. 统计预期用户数
2. 估算每用户每日平均交互次数
3. 区分经典消息和生成式消息比例
4. 计算月度总消息数 = 用户数 × 日均交互 × 30天
Q:如何优化成本?
A:
1. 使用经典 Topic 处理高频简单问题
2. 生成式 AI 仅用于复杂问答
3. 启用结果缓存
4. 定期清理无用 Topic 和知识源
5. 监控消息使用量,设置预算告警
Q7:数据安全与合规
常见安全问题:
Q:Copilot 会存储用户对话内容吗?
A:是的,对话历史会存储在 Power Platform 环境中。
可以配置数据保留策略,设置自动删除时间。
Q:如何确保敏感数据不被泄露?
A:
1. 配置 DLP 策略限制数据访问
2. 使用条件访问控制用户范围
3. 配置内容过滤阻止敏感信息显示
4. 定期审计 Copilot 使用日志
Q:是否符合 GDPR/CCPA 等法规?
A:Microsoft Copilot Studio 符合多项国际合规标准。
但需要正确配置数据保留和访问策略。
建议与法务团队确认具体合规要求。
附录:资源与参考
官方资源
Microsoft Copilot Studio 官方文档:
https://learn.microsoft.com/copilotstudio/
Power Platform 文档:
https://learn.microsoft.com/power-platform/
Azure AI Foundry 文档:
https://learn.microsoft.com/azure/ai-studio/
Copilot Studio 社区论坛:
https://community.powerplatform.com/forums/
推荐学习路径
入门阶段(1-2周):
1. 完成本教程第1-4章
2. 创建一个简单的 FAQ Copilot
3. 部署到 Teams 测试
进阶阶段(2-4周):
1. 完成第5-8章
2. 集成企业知识库
3. 创建 Power Automate 流程
4. 完成一个实战项目
高级阶段(4-8周):
1. 完成第9-10章
2. API 扩展开发
3. Azure AI 集成
4. 企业级部署与优化
常用快捷键
Copilot Studio 编辑器快捷键:
Ctrl + S 保存当前 Topic
Ctrl + Z 撤销操作
Ctrl + Y 重做操作
Ctrl + C/V 复制/粘贴节点
Delete 删除选中节点
Ctrl + F 搜索 Topic
本教程持续更新中。Microsoft Copilot Studio 是一个快速演进的平台,建议定期查阅官方文档获取最新功能和最佳实践。
最后更新:2025年