Microsoft Copilot Studio 企业AI开发教程

教程简介

零基础Microsoft Copilot Studio企业AI开发教程,涵盖Copilot Studio架构与能力、自定义Copilot创建、Topic与对话流设计、Power Platform集成、Copilot连接器、GPT模型配置、企业知识库集成、Teams部署、Copilot API扩展、与Azure AI Foundry集成等核心技能,配有企业智能HR助手与IT运维Copilot两大实战项目,适合企业IT开发者和AI工程师系统学习。

Microsoft Copilot Studio 企业AI开发教程

适用人群:企业IT开发者、AI工程师、Power Platform管理员、希望构建企业级对话式AI的技术人员 前置要求:基本的Web开发概念、了解Microsoft 365生态(非必须) 预计学习时间:15-20小时


目录


第一章: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 环境配置

前提条件

  1. 拥有 Microsoft 365 租户(企业版或教育版)
  2. 具备 Power Platform 环境管理员权限
  3. 已启用 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 匹配追踪
  • 会话重置

调试技巧

  1. 查看 Topic 匹配日志:当 Copilot 回复不符合预期时,检查是哪个 Topic 被触发
  2. 使用追踪模式:在测试面板中开启追踪,查看完整的对话处理流程
  3. 检查变量值:在调试过程中监控变量的赋值和变化
  4. 测试边界情况:输入模糊、拼写错误或完全无关的内容

第三章: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 设计原则

  1. 单一职责:每个 Topic 只处理一个明确的用户意图
  2. 命名规范:使用动词+名词结构,如"查询余额"、"提交工单"
  3. 触发短语多样性:每个 Topic 至少准备 5-10 个触发短语变体
  4. 避免冲突:确保不同 Topic 的触发短语不会过度重叠

3.3 触发器与意图识别

触发短语最佳实践

Topic 名称:查询休假余额

触发短语(推荐写法):
  - 我还有多少天年假
  - 查看我的休假余额
  - 剩余假期天数
  - 我能休几天假
  - 年假还剩多少
  - 假期余额查询
  - 请假天数查询

触发短语(避免的写法):
  - 假期(太宽泛)
  - 我想请假(这是另一个Topic)
  - 你好(与欢迎Topic冲突)

触发优先级机制

当多个 Topic 的触发条件匹配时,Copilot Studio 按以下优先级选择:

  1. 精确匹配(完全一致的短语)
  2. 置信度最高的 Topic
  3. 最近编辑的 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 模式:

  1. 经典模式(Classic):基于规则的意图匹配,使用触发短语和关键词
  2. 生成式 AI 模式(Generative):使用 GPT 模型理解意图、生成回复

生成式 AI 的应用场景

  • 自动生成 Topic 的触发条件
  • 基于知识源生成自然语言回答
  • 增强意图识别的准确性
  • 智能摘要和信息提取

4.2 启用生成式 AI 回复

操作步骤

  1. 进入 Copilot 设置 → "Generative AI"
  2. 开启 "Generative AI responses" 开关
  3. 配置以下参数:
回复风格:
  [ ] 简洁(适合快速问答)
  [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等。

配置步骤

  1. 在 Knowledge 页面点击 "+ Add knowledge"
  2. 选择 "SharePoint"
  3. 输入 SharePoint 站点或文档库 URL
  4. 选择同步范围(整个站点或特定文件夹)
  5. 设置同步频率

支持的 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 频道配置

配置步骤

  1. 在 Copilot Studio 中,进入 "Channels" 页面
  2. 选择 "Microsoft Teams"
  3. 点击 "Turn on Teams"
  4. 配置 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年

内容声明

本文内容为AI技术学习教程,仅供学习参考。如涉及技术问题,欢迎通过 xurj005@163.com 与我们交流。

目录