ai-robot-core/docs/script-flow-usage.md

664 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 话术流程管理使用指南
## 1. 概述
话术流程Script Flow是 AI 中台的多轮对话引导系统,用于按照预定义的步骤引导用户完成信息收集、问题诊断或业务流程。它通过状态机机制实现结构化的对话流程控制。
### 1.1 核心特性
-**多步骤编排**:支持创建包含多个步骤的对话流程
-**拖拽排序**:可视化拖拽调整步骤顺序
-**等待输入控制**:每个步骤可配置是否等待用户回复
-**超时处理**:支持超时重复、跳过或转人工
-**变量占位符**:话术内容支持动态变量替换
-**流程预览**:可视化预览流程执行效果
-**意图触发**:通过意图规则自动触发流程
-**状态管理**:自动跟踪流程执行进度
### 1.2 典型应用场景
| 场景 | 说明 | 示例 |
|------|------|------|
| **订单处理** | 收集订单信息并确认 | 收集收货地址 → 确认商品 → 选择支付方式 → 确认下单 |
| **退货流程** | 引导用户完成退货申请 | 确认订单号 → 选择退货原因 → 上传凭证 → 提交申请 |
| **问题诊断** | 逐步排查用户问题 | 确认设备型号 → 检查网络连接 → 重启设备 → 测试结果 |
| **信息采集** | 收集用户需求或反馈 | 询问需求类型 → 收集详细描述 → 确认联系方式 → 提交工单 |
| **预约服务** | 引导用户完成预约 | 选择服务类型 → 选择时间 → 填写联系方式 → 确认预约 |
---
## 2. 功能介绍
### 2.1 流程列表页面
**访问路径**AI 中台管理后台 → 智能路由 → 话术流程管理
**页面功能**
- 查看所有话术流程列表
- 显示流程名称、描述、步骤数、关联规则数、状态、更新时间
- 快速启用/禁用流程
- 创建、编辑、预览、删除流程
**列表字段说明**
| 字段 | 说明 |
|------|------|
| 流程名称 | 流程的唯一标识名称 |
| 描述 | 流程的用途说明(可选) |
| 步骤数 | 流程包含的步骤总数 |
| 关联规则 | 触发该流程的意图规则数量 |
| 状态 | 启用/禁用开关 |
| 更新时间 | 最后修改时间 |
### 2.2 流程编辑器
**核心组件**
1. **基本信息区**:配置流程名称、描述、启用状态
2. **步骤编辑区**:可视化编辑流程步骤
3. **拖拽排序**:通过拖拽图标调整步骤顺序
4. **步骤配置**:为每个步骤配置详细参数
### 2.3 流程预览器
**功能**
- 时间轴可视化展示流程步骤
- 模拟流程执行过程
- 高亮显示当前步骤
- 查看步骤配置详情
- 支持上一步/下一步/重置操作
---
## 3. 使用步骤
### 3.1 创建话术流程
#### 步骤 1进入创建页面
1. 点击页面右上角的 **"新建流程"** 按钮
2. 弹出流程编辑对话框
#### 步骤 2填写基本信息
```
流程名称:退货流程引导 (必填,建议简洁明确)
描述:引导用户完成退货申请 (可选,说明流程用途)
启用状态:✓ 启用 (默认启用)
```
#### 步骤 3添加流程步骤
点击 **"添加步骤"** 按钮,配置每个步骤:
**步骤 1 配置示例**
```
话术内容:您好,我来帮您处理退货申请。请提供您的订单号。
等待输入:✓ 开启
超时时间60 秒
超时动作:重复当前步骤
```
**步骤 2 配置示例**
```
话术内容:收到订单号 {{order_id}},请问您的退货原因是什么?
1. 商品质量问题
2. 不符合预期
3. 其他原因
等待输入:✓ 开启
超时时间120 秒
超时动作:转人工
```
**步骤 3 配置示例**
```
话术内容:好的,已记录您的退货原因。请上传商品照片或相关凭证。
等待输入:✓ 开启
超时时间180 秒
超时动作:跳过进入下一步
```
**步骤 4 配置示例**
```
话术内容:感谢您的配合!退货申请已提交,工单号为 {{ticket_id}}。我们将在 1-3 个工作日内处理,请保持手机畅通。
等待输入:✗ 关闭
```
#### 步骤 4调整步骤顺序
- 鼠标悬停在步骤左侧的 **拖拽图标**
- 按住鼠标左键拖动步骤到目标位置
- 释放鼠标完成排序
#### 步骤 5保存流程
- 点击 **"创建"** 按钮保存流程
- 系统自动分配流程 ID
- 返回流程列表页面
### 3.2 编辑话术流程
1. 在流程列表中找到目标流程
2. 点击 **"编辑"** 按钮
3. 修改流程信息或步骤配置
4. 点击 **"保存"** 按钮
**注意事项**
- 修改后立即生效,影响正在执行的流程
- 建议在低峰期修改重要流程
- 修改前可先禁用流程,测试无误后再启用
### 3.3 预览话术流程
1. 在流程列表中找到目标流程
2. 点击 **"预览"** 按钮
3. 在右侧抽屉中查看流程时间轴
4. 使用 **上一步/下一步** 按钮模拟流程执行
5. 查看每个步骤的配置详情
**预览功能**
- 时间轴可视化展示所有步骤
- 当前步骤高亮显示(蓝色边框)
- 已完成步骤显示为绿色
- 未执行步骤显示为灰色
- 显示步骤的等待输入、超时配置
### 3.4 删除话术流程
1. 在流程列表中找到目标流程
2. 点击 **"删除"** 按钮
3. 确认删除操作
**警告**
- 删除操作不可恢复
- 如果有意图规则关联该流程,删除后规则将失效
- 建议先禁用流程观察一段时间,确认无影响后再删除
### 3.5 启用/禁用流程
**方式 1列表页快速切换**
- 直接点击流程列表中的 **状态开关**
- 立即生效
**方式 2编辑页面修改**
- 进入流程编辑页面
- 修改 **启用状态** 开关
- 保存后生效
**禁用效果**
- 禁用后,意图规则无法触发该流程
- 正在执行的流程实例不受影响,继续执行完成
- 流程数据保留,可随时重新启用
---
## 4. 步骤配置详解
### 4.1 话术内容
**功能**:定义该步骤向用户展示的话术文本。
**支持变量占位符**
```
语法:{{variable_name}}
示例:
- 您的订单号是 {{order_id}}
- 尊敬的 {{customer_name}},您好!
- 当前时间:{{current_time}}
- 渠道:{{channel_type}}
```
**变量来源**
- 会话上下文变量
- 用户输入提取的信息
- 系统内置变量(时间、渠道等)
**最佳实践**
- 话术简洁明了,避免过长
- 使用礼貌用语,保持专业
- 明确告知用户需要做什么
- 提供选项时使用编号列表
### 4.2 等待用户输入
**功能**:控制该步骤是否需要等待用户回复。
**开启(✓)**
- 系统发送话术后,等待用户回复
- 收到用户回复后,根据条件推进到下一步
- 如果超时未回复,执行超时动作
**关闭(✗)**
- 系统发送话术后,立即推进到下一步
- 适用于纯信息告知的步骤(如确认信息、结束语)
**使用场景**
- ✓ 需要收集信息:订单号、退货原因、联系方式
- ✓ 需要用户确认:是/否、选择选项
- ✗ 纯信息展示:流程说明、结果通知、感谢语
### 4.3 超时时间
**功能**:设置等待用户回复的最长时间(单位:秒)。
**取值范围**5 - 300 秒
**推荐配置**
- **简单问题**(如是/否30-60 秒
- **需要查找信息**如订单号60-120 秒
- **需要操作**如上传图片120-180 秒
- **复杂问题**如详细描述180-300 秒
**注意事项**
- 超时时间过短:用户体验差,容易误触发超时
- 超时时间过长:流程卡住时间长,影响效率
- 根据实际业务场景调整
### 4.4 超时动作
**功能**:定义超时后的处理策略。
#### 选项 1重复当前步骤
**行为**:重新发送当前步骤的话术,再次等待用户回复。
**适用场景**
- 用户可能暂时离开,需要提醒
- 问题简单,用户可能忘记回复
- 重要信息收集,不能跳过
**示例话术**
```
首次:请提供您的订单号。
重复:您还在吗?请提供您的订单号,以便我帮您处理。
```
#### 选项 2跳过进入下一步
**行为**:跳过当前步骤,直接进入下一步。
**适用场景**
- 可选信息收集(如备注、补充说明)
- 有默认值或兜底方案
- 不影响流程继续执行
**注意事项**
- 确保下一步不依赖当前步骤的输入
- 在后续步骤中处理缺失信息的情况
#### 选项 3转人工
**行为**:结束流程,将会话转接到人工客服。
**适用场景**
- 关键信息收集失败
- 用户长时间无响应
- 流程无法继续执行
**效果**
- 设置 `shouldTransfer=true`
- 返回转人工提示语
- 流程实例标记为"已完成"
---
## 5. 与意图规则关联
### 5.1 创建触发规则
话术流程需要通过 **意图规则** 触发。
**步骤**
1. 进入 **意图规则管理** 页面
2. 点击 **"新建规则"** 按钮
3. 配置规则信息:
```
规则名称:退货意图
关键词:退货、退款、不想要了、申请退货
正则表达式:退.*货、如何.*退、想.*退
优先级100
响应类型:启动话术流程
关联流程:选择 "退货流程引导"
启用状态:✓ 启用
```
4. 保存规则
### 5.2 触发流程
**触发条件**
- 用户消息匹配意图规则的关键词或正则表达式
- 规则的响应类型为 `flow`
- 规则和流程均为启用状态
**触发流程**
```
用户输入:我想退货
意图识别:命中 "退货意图" 规则
启动流程:创建 "退货流程引导" 实例
执行步骤 1发送第一步话术
等待用户输入:收集订单号
执行步骤 2发送第二步话术
...
流程完成:恢复正常对话
```
### 5.3 流程执行优先级
**优先级规则**
1. **进行中的流程** > 意图识别 > RAG 检索
2. 如果会话存在进行中的流程实例,优先处理流程逻辑
3. 流程完成后,恢复正常的意图识别和 RAG 流程
**示例**
```
会话状态:退货流程进行中(步骤 2
用户输入:营业时间是什么?
系统行为:忽略 "营业时间" 意图,继续处理流程步骤 2
```
---
## 6. 最佳实践
### 6.1 流程设计原则
#### 1. 步骤数量适中
- **推荐**3-7 个步骤
- **避免**:步骤过多(>10 步)导致用户疲劳
- **避免**:步骤过少(<3 无法体现流程价值
#### 2. 话术简洁明确
- 每个步骤的话术控制在 50-100
- 明确告知用户需要做什么
- 提供示例或选项帮助用户理解
#### 3. 合理设置超时
- 根据任务复杂度设置超时时间
- 重要步骤使用 "重复" "转人工"
- 可选步骤使用 "跳过"
#### 4. 提供退出机制
- 在话术中告知用户如何退出流程
- 示例"如需退出流程请回复 '退出' '转人工'"
### 6.2 话术编写技巧
#### 1. 使用礼貌用语
```
✓ 好的:您好,我来帮您处理退货申请。
✗ 不好:提供订单号。
```
#### 2. 明确指令
```
✓ 好的请提供您的订单号格式20240227001
✗ 不好:请提供信息。
```
#### 3. 提供选项
```
✓ 好的:请选择退货原因:
1. 商品质量问题
2. 不符合预期
3. 其他原因
✗ 不好:为什么要退货?
```
#### 4. 确认信息
```
✓ 好的:您的订单号是 {{order_id}},退货原因是 {{reason}},确认无误吗?(是/否)
✗ 不好:信息已记录。
```
### 6.3 测试与优化
#### 1. 测试流程
- 创建流程后先设置为 "禁用" 状态
- 使用测试账号模拟完整流程
- 测试各种用户输入场景正常异常超时
- 确认无误后再启用
#### 2. 监控数据
- 定期查看流程执行统计
- 关注步骤完成率超时率转人工率
- 识别用户卡住的步骤
#### 3. 持续优化
- 根据数据调整话术和超时配置
- 优化步骤顺序和数量
- 收集用户反馈改进流程
### 6.4 常见问题处理
#### 问题 1用户中途退出流程
**解决方案**
- 在话术中明确告知退出方式
- 设置关键词触发退出 "退出"、"转人工"
- 超时后自动转人工
#### 问题 2用户输入不符合预期
**解决方案**
- 在话术中提供示例和格式说明
- 使用选项列表限制用户输入
- 设置输入验证和错误提示
#### 问题 3流程执行时间过长
**解决方案**
- 减少步骤数量合并相似步骤
- 缩短超时时间
- 将复杂流程拆分为多个子流程
#### 问题 4流程与意图规则冲突
**解决方案**
- 提高流程触发规则的优先级
- 在流程执行期间系统自动优先处理流程逻辑
- 避免创建过于宽泛的意图规则
---
## 7. API 参考
### 7.1 列表查询
**接口**`GET /admin/script-flows`
**请求参数**
```json
{
"is_enabled": true // 可选,筛选启用/禁用的流程
}
```
**响应示例**
```json
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "退货流程引导",
"description": "引导用户完成退货申请",
"step_count": 4,
"is_enabled": true,
"linked_rule_count": 2,
"created_at": "2026-02-27T10:00:00",
"updated_at": "2026-02-27T15:30:00"
}
]
}
```
### 7.2 创建流程
**接口**`POST /admin/script-flows`
**请求示例**
```json
{
"name": "退货流程引导",
"description": "引导用户完成退货申请",
"is_enabled": true,
"steps": [
{
"step_id": "step_001",
"order": 1,
"content": "您好,我来帮您处理退货申请。请提供您的订单号。",
"wait_for_input": true,
"timeout_seconds": 60,
"timeout_action": "repeat",
"next_conditions": []
},
{
"step_id": "step_002",
"order": 2,
"content": "收到订单号 {{order_id}},请问您的退货原因是什么?",
"wait_for_input": true,
"timeout_seconds": 120,
"timeout_action": "transfer",
"next_conditions": []
}
]
}
```
**响应示例**
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "退货流程引导",
"description": "引导用户完成退货申请",
"step_count": 2,
"is_enabled": true,
"created_at": "2026-02-27T16:00:00",
"updated_at": "2026-02-27T16:00:00"
}
```
### 7.3 查询详情
**接口**`GET /admin/script-flows/{flow_id}`
**响应示例**
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "退货流程引导",
"description": "引导用户完成退货申请",
"is_enabled": true,
"steps": [
{
"step_id": "step_001",
"order": 1,
"content": "您好,我来帮您处理退货申请。请提供您的订单号。",
"wait_for_input": true,
"timeout_seconds": 60,
"timeout_action": "repeat",
"next_conditions": []
}
],
"created_at": "2026-02-27T16:00:00",
"updated_at": "2026-02-27T16:00:00"
}
```
### 7.4 更新流程
**接口**`PUT /admin/script-flows/{flow_id}`
**请求示例**
```json
{
"name": "退货流程引导(优化版)",
"is_enabled": true,
"steps": [
// 更新后的步骤列表
]
}
```
### 7.5 删除流程
**接口**`DELETE /admin/script-flows/{flow_id}`
**响应**204 No Content
---
## 8. 数据模型
### 8.1 ScriptFlow流程实体
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `id` | UUID | 自动生成 | 流程唯一标识 |
| `tenant_id` | string | | 租户 ID |
| `name` | string | | 流程名称 |
| `description` | string | | 流程描述 |
| `steps` | FlowStep[] | | 步骤列表 |
| `is_enabled` | boolean | | 是否启用默认 true |
| `created_at` | datetime | 自动 | 创建时间 |
| `updated_at` | datetime | 自动 | 更新时间 |
### 8.2 FlowStep步骤实体
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `step_id` | string | | 步骤唯一标识 |
| `order` | int | | 步骤顺序 1 开始 |
| `content` | string | | 话术内容 |
| `wait_for_input` | boolean | | 是否等待用户输入 |
| `timeout_seconds` | int | | 超时时间5-300 |
| `timeout_action` | string | | 超时动作repeat/skip/transfer |
| `next_conditions` | NextCondition[] | | 下一步条件预留 |
### 8.3 超时动作枚举
| | 说明 |
|------|------|
| `repeat` | 重复当前步骤 |
| `skip` | 跳过进入下一步 |
| `transfer` | 转人工 |
---
## 9. 总结
话术流程管理是 AI 中台的核心功能之一通过可视化的流程编排实现结构化的多轮对话引导
### 9.1 核心价值
- **提升效率**自动化处理标准流程减少人工介入
- **保证质量**标准化话术确保服务一致性
- **优化体验**引导式对话降低用户操作难度
- **数据收集**结构化收集信息便于后续处理
### 9.2 使用流程
创建流程 配置步骤 关联意图规则 测试验证 启用上线 监控优化
### 9.3 注意事项
1. 流程设计要简洁避免步骤过多
2. 话术要清晰明确提供必要的示例
3. 合理设置超时时间和超时动作
4. 测试充分后再上线
5. 定期监控数据并优化流程
---
**文档版本**v1.0
**生成时间**2026-02-27
**维护状态**:✅ 活跃维护
**相关文档**
- [意图规则使用指南](./intent-rule-usage.md)
- [AI 中台对接文档](../AI中台对接文档.md)
- [Prompt 模板管理分析](./prompt-template-analysis.md)