> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# 9. Scripts

Scripts 是当前门店共用的话术库。店长维护 Call、SMS、Email 模板，员工在 [Tasks](/funding-strategy/02-产品说明书/03-tasks.md) 中选择话术，获得已填入客户和门店资料的正文，用于电话沟通或复制到短信、邮件工具。Scripts 本身不发送短信或邮件。

## 1 Scripts 工作台

### 1.1 Call / SMS / Email 三栏

页面从左到右按沟通渠道排列，每栏独立展示话术卡片；没有话术的栏目仍保留标题和新增入口。

| 元素      | 含义与操作                                                            |
| ------- | ---------------------------------------------------------------- |
| Call    | 电话沟通话术，可包含文字、表格和图片                                               |
| SMS     | 短信纯文本模板                                                          |
| Email   | 带主题和富文本正文的邮件模板                                                   |
| 栏标题旁的数量 | 当前门店该类型的话术总数，包含停用的话术；截图中的 Call 2、SMS 0、Email 0 仅为示例              |
| 右上角 `+` | 新建对应类型的话术，分别打开 New Call Script、New SMS Script 或 New Email Script |
| 分组标题    | 同一类型内按分组名称排序，未分组的话术放在最后；只有未分组话术时不额外显示分组标题                        |

话术类型由新增入口决定，创建后不能改成另一种类型。页面按渠道和分组组织话术，没有搜索框。

### 1.2 话术卡片

卡片上方显示话术名称、Updated 更新时间；Email 卡片还显示 Subject。卡片下方靠右放置启停开关和操作按钮。

| 操作                | 作用                                    |
| ----------------- | ------------------------------------- |
| Active / Inactive | 控制话术是否供 Tasks 使用。停用后卡片灰显，仍留在话术库，可再次启用 |
| 眼睛 · Preview      | 只读预览正文；此处没有具体客户，变量保留占位文字              |
| 铅笔 · Edit         | 打开编辑弹窗，修改名称、分组和内容；Email 可修改主题         |
| 垃圾桶 · Delete      | 弹窗确认后删除，全店不再可用，不能撤销                   |

Owner 和 Editor 可以新建、编辑、启停和删除；Viewer 只能查看。当前前端仍显示操作按钮，写入权限由后端校验。

## 2 新建与编辑话术

点击栏目 `+` 新建，或点击卡片铅笔编辑。弹窗按“顶部基本信息 → 左侧正文 → 右侧变量 → 底部保存”排列，可拖动标题栏移动，也可调整窗口大小。

### 2.1 顶部基本信息

| 字段               | 填写方式                                         |
| ---------------- | -------------------------------------------- |
| Script name      | 话术名称，必填，最多 200 个字符，用于在话术库和 Tasks 中识别模板       |
| No group / Group | 可不分组，也可搜索已有分组或输入名称新建；分组按 Call、SMS、Email 各自管理 |
| Subject          | 仅 Email 显示，位于名称和分组下方，必填，最多 200 个字符           |

### 2.2 New Call Script：电话话术

Call 使用内容块编辑器。空白时提示添加文字、表格或图片，底部提供对应入口。

| 区域或操作     | 作用                                       |
| --------- | ---------------------------------------- |
| Add text  | 添加文字块，编写开场白、问题、应答话术或员工提示                 |
| Add table | 添加表格块，组织问题与回答、不同情形的应对方式；支持增删行列及拖动调整行高、列宽 |
| Add image | 插入图片块，补充需要查看的资料                          |
| 顶部格式工具栏   | 调整字号、粗体、斜体、大小写、高亮、文字颜色；表格支持单元格底色，也可清除格式  |
| 删除内容块     | 移除不再需要的文字、表格或图片块                         |

员工在 Tasks 中可以直接阅读电话话术；复制时输出纯文本，不保留高亮和颜色。

### 2.3 New SMS Script：短信话术

SMS 正文是多行纯文本框，直接填写短信内容，也可以插入右侧变量。没有 Email 的主题栏或富文本工具栏。

保存的是可重复使用的短信模板，实际发送由员工在短信工具中完成。

### 2.4 New Email Script：邮件话术

Email 在基本信息下方单独填写 Subject，正文使用富文本编辑器。

| 工具            | 作用                          |
| ------------- | --------------------------- |
| 粗体 / 斜体 / 下划线 | 强调正文内容                      |
| 项目符号 / 编号     | 组织要点或步骤                     |
| 链接            | 插入可点击链接                     |
| 图片            | 插入正文图片，支持 PNG、JPEG、GIF、WebP |

右侧变量按钮插入到正文。Tasks 中的 Copy 复制正文，主题需单独使用。

### 2.5 Insert variable：插入变量

三种编辑器右侧都有 Insert variable 面板，按 Contact、Store、Staff 分组。点击按钮插入占位符，例如 `{{contact_first_name}}`；在 Tasks 中打开话术时，正文里的变量才替换成实际资料。

| 分组      | 可插入变量                                                    | Tasks 中的数据来源        |
| ------- | -------------------------------------------------------- | ------------------- |
| Contact | Contact's First Name、Contact's Last Name、Contact's Phone | 当前任务的联系人            |
| Store   | Store Name、Store Phone                                   | 当前门店；电话取门店号码列表中的第一个 |
| Staff   | Staff's First Name、Staff's Last Name                     | 当前任务负责人的姓名，拆分为名和姓   |

取不到资料时，对应变量替换为空；任务没有负责人时，员工姓名变量也为空。使用前应检查填入后的正文。

### 2.6 保存与取消

- **Save script**：名称和正文不能为空，Email 还需填写 Subject。未满足填写条件或正在保存时，按钮不可用。
- 保存成功后关闭弹窗，话术出现在对应栏目；编辑已有话术会覆盖当前内容并更新 Updated 时间。
- 保存失败时保留弹窗并显示错误提示，方便继续修改。
- **Cancel / 右上角关闭**：退出本次编辑，不保存修改。

## 3 在 Tasks 中使用

任务详情顶部的 **Scripts** 按钮打开话术浮窗，可移动和调整大小。浮窗列出当前门店启用的话术，按 Call → SMS → Email 排列，不按任务类型过滤。

| 操作                          | 结果                         |
| --------------------------- | -------------------------- |
| 选择话术                        | 查看正文，自动填入当前任务的联系人、门店和负责人资料 |
| Copy                        | 复制正文到剪贴板，供员工在外部工具中使用       |
| 左右箭头                        | 切换上一条或下一条话术                |
| Back to list                | 返回话术列表                     |
| No scripts yet / Create one | 没有可用话术时，提供前往话术库创建的入口       |

SMS 复制纯文本；Call 复制去掉阅读格式后的纯文本；Email 在浏览器支持时同时复制 HTML 和纯文本，粘贴后的图片与格式取决于目标编辑器支持情况。

## 4 当前使用边界

- 编辑直接覆盖，没有版本历史；需要暂时下线时可使用 Inactive 保留内容。
- 停用的话术仍计入话术库栏目数量，但不出现在 Tasks 的可用话术列表中。
- 模板提供沟通内容，员工仍需检查客户信息并完成实际沟通。

## 5 实现依据

本篇按本地代码核查，页面实际启用情况以部署版本为准。

[话术库页面](https://github.com/retaintive/callytics-infrastructure/blob/main/apps/web/src/pages/scripts/index.vue) · [编辑弹窗](https://github.com/retaintive/callytics-infrastructure/blob/main/apps/web/src/pages/scripts/components/script-editor-dialog.vue) · [话术接口与权限](https://github.com/retaintive/callytics-infrastructure/blob/main/apps/api/src/routes/v3/scripts.ts) · [占位变量替换](https://github.com/retaintive/callytics-infrastructure/blob/main/apps/web/src/utils/script-template.ts) · [Tasks 里的话术浮窗](https://github.com/retaintive/callytics-infrastructure/blob/main/apps/web/src/pages/tasks/components/task-script-picker.vue)
