数据动作

Data Actions:Programmable Node.js Actions for Call Flows


快速阅读

Node.js 脚本服务是 IVR 自定义脚本能力的运行支撑服务。它让语音导航可以在流程中调用已维护、已发布的 JavaScript 脚本,完成复杂变量处理、业务判断、结果加工和流程扩展。

本文的核心结论是:

  • Node.js 脚本服务不是一个普通配置页面,而是“脚本管理 + 版本发布 + IVR 脚本节点 + 运行时执行服务”的完整链路。
  • 脚本管理负责创建、编辑、调试、发布、复制、删除和版本切换。
  • IVR 脚本节点负责在语音导航流程中引用脚本、传入变量、设置成功路径、失败路径和超时时间。
  • Node.js 脚本服务负责在通话运行时执行脚本,并将结果返回给 IVR 流程。
  • 线上 IVR 不应直接执行草稿脚本,应执行已发布版本快照,避免编辑中脚本影响线上通话。
  • 脚本运行有超时和熔断保护,执行失败时应进入失败路径,并保留必要的错误日志用于排障。
  • 脚本输出结果不自动等于话单字段;需要长期查询、推送或导出时,应单独配置沉淀口径。

阅读地图

  • 如果只想理解 Node.js 脚本服务是什么,重点阅读“二、产品总览”和“三、核心概念”。
  • 如果要配置脚本和 IVR 节点,重点阅读“六、产品功能说明”。
  • 如果要做上线验收和排障,重点阅读“八、上线准备与运营建议”和“附录 C:实施检查清单”。
  • 如果要区分脚本服务、HTTP 交互、自定义节点,重点阅读“九、与周边能力的关系”。

一、文档说明

1.1 文档目的

标准 IVR 节点适合播放、收号、按键、时间判断、地区分流、队列和留言等常见流程。但在一些项目中,客户需要更灵活的逻辑,例如:

  1. 根据多个变量计算客户分层。
  2. 对外部系统返回结果做格式加工。
  3. 将机器人会话结果整理成座席可读变量。
  4. 根据复杂条件决定下一步流程。
  5. 对字段做拼接、校验、映射或兜底。
  6. 在多个 IVR 流程中复用同一段业务逻辑。

Node.js 脚本服务用于承接这类标准节点难以表达的扩展逻辑。本文用于统一脚本服务的产品说明、运行链路、版本管理、风险边界和实施验收口径。

1.2 适用对象

  • 客户业务负责人:用于确认哪些复杂业务规则需要脚本化处理。
  • 运营管理人员:用于理解脚本变更对 IVR 流程和客户路径的影响。
  • 实施顾问:用于配置脚本、调试入参、发布版本、绑定 IVR 节点和完成验收。
  • 产品经理:用于统一脚本管理、IVR 自定义节点、变量、话单和推送口径。
  • 技术负责人:用于理解脚本运行时、版本快照、超时、失败日志和排障边界。

1.3 文档范围

本文覆盖 Node.js 脚本服务的产品说明,包括脚本管理、脚本版本、调试、发布、生效版本、IVR 脚本节点、输入变量、输出结果、同步/异步脚本、运行超时、失败兜底、错误日志和上线验收。

本文不展开底层 Node.js 容器、内部接口路径、服务部署结构、内部缓存 key、内部队列名和具体代码实现。客户版材料应以业务逻辑、系统协同和验收口径为主。

二、产品总览

2.1 什么是 Node.js 脚本服务

Node.js 脚本服务是 IVR 自定义脚本的运行服务。脚本在管理端维护和发布后,IVR 脚本节点在通话流程中引用指定脚本版本,由运行时服务执行并返回结果。

人话总结

Node.js 脚本服务就是“让 IVR 在通话过程中执行一段已发布的 JavaScript 业务逻辑,并把结果带回流程”。

2.2 它解决什么问题

Node.js 脚本服务主要解决:

  • 标准节点无法表达的复杂业务判断。
  • 多变量计算和变量加工。
  • 外部系统结果清洗和格式转换。
  • 多个 IVR 复用同一段逻辑。
  • 复杂分流前的结果预处理。
  • 机器人、HTTP 交互、变量节点之间的逻辑衔接。

2.3 它不是什么

容易混淆对象区别
IVR 自定义节点自定义节点是流程节点;Node.js 脚本服务是节点背后的执行服务。
HTTP 交互节点HTTP 交互适合固定外部请求;脚本服务适合变量加工、复杂判断和结果处理。
变量节点变量节点适合简单赋值;脚本服务适合复杂逻辑。
任意代码执行平台脚本必须受权限、格式、版本、超时、发布和引用范围约束。
话单字段配置脚本输出不是天然话单字段,需要单独配置沉淀。

2.4 核心价值

价值说明
扩展 IVR 能力补足标准节点无法表达的复杂逻辑。
提高复用性同一脚本可被多个 IVR 节点引用。
降低画布复杂度避免大量判断节点、变量节点堆叠。
控制上线风险通过草稿、发布版本、生效版本控制线上稳定性。
支撑排障调试结果、失败路径和错误日志帮助定位问题。

三、核心概念

3.1 脚本主对象

脚本主对象保存脚本名称、描述、草稿内容、发布状态、生效版本、同步/异步标识、创建时间、更新时间和修改人。

3.2 草稿脚本

草稿脚本是编辑中的脚本内容。草稿可保存和调试,但不应直接影响线上 IVR。

3.3 发布版本

发布版本是脚本发布时生成的不可变快照。线上运行应引用发布版本,而不是编辑中的草稿。

3.4 生效版本

生效版本是当前线上 IVR 脚本节点实际运行的版本。切换生效版本可以用于回滚或灰度后的版本调整。

3.5 同步脚本

同步脚本在执行完成后直接返回结果,IVR 根据结果进入成功路径或失败路径。

3.6 异步脚本

异步脚本适合需要回调或异步处理的场景。脚本需符合异步格式要求,并通过回调方式返回结果。

3.7 脚本节点

脚本节点是 IVR 画布中的节点,用于引用脚本、配置变量、超时、成功路径和失败路径。

3.8 输入变量

输入变量是脚本执行前可读取的通话上下文或节点配置变量,例如客户号码、收号结果、HTTP 返回值、机器人意图等。

3.9 输出结果

输出结果是脚本执行后的返回内容,可被后续节点读取,也可按需沉淀到记录、推送或导出。

四、对象关系与主流程

4.1 总体对象关系

脚本管理
  ├─ 脚本名称 / 描述
  ├─ 草稿脚本
  ├─ 发布版本
  └─ 生效版本
        ↓
      IVR 脚本节点
        ├─ 引用脚本
        ├─ 输入变量
        ├─ 超时时间
        ├─ 成功路径
        └─ 失败路径
              ↓
            Node.js 脚本服务
              ↓
            返回执行结果
              ↓
            后续节点 / 变量 / 记录 / 推送

4.2 脚本管理流程

新建脚本
  ↓
编辑脚本名称、描述和代码
  ↓
配置测试入参并调试
  ↓
保存草稿
  ↓
保存并发布
  ↓
生成发布版本快照
  ↓
设置或切换生效版本
  ↓
IVR 脚本节点引用生效版本运行

4.3 IVR 运行流程

客户进入 IVR 脚本节点
  ↓
系统读取节点引用的脚本 ID 和生效版本
  ↓
组装通话上下文和节点变量
  ↓
调用 Node.js 脚本服务
  ├─ 执行成功:返回结果并进入成功路径
  ├─ 执行失败:进入失败路径
  └─ 执行超时:进入失败或兜底路径

4.4 调试流程

实施人员进入脚本调试页
  ↓
输入脚本代码和测试 JSON 入参
  ↓
系统校验脚本格式
  ↓
调用 Node.js 脚本服务调试执行
  ↓
返回运行结果和输出日志
  ↓
确认无误后保存并发布

4.5 版本回滚流程

线上版本异常
  ↓
查看已发布历史版本
  ↓
选择稳定版本作为生效版本
  ↓
保存生效版本
  ↓
拨测验证 IVR 脚本节点恢复正常

五、能力地图

能力层能力说明
管理层新建、编辑、复制、删除、查询管理脚本主对象。
调试层测试入参、执行脚本、查看结果上线前验证脚本逻辑。
发布层保存草稿、发布快照、生效版本控制线上版本稳定。
引用层IVR 脚本节点、引用次数、引用详情管理脚本被哪些流程使用。
运行层Node.js 执行、同步/异步、超时承载通话中的脚本运行。
治理层格式校验、删除限制、错误日志、回滚控制生产风险。

六、产品功能说明

6.1 脚本列表

脚本列表用于查看企业已维护的脚本。

常见展示内容包括:

  • 脚本名称。
  • 描述。
  • 当前版本。
  • 最新发布版本。
  • 发布状态。
  • 被使用次数。
  • 修改人。
  • 创建时间和更新时间。

6.2 新建脚本

新建脚本时需要填写脚本名称和描述,可同时填写初始脚本内容。

配置要求:

  • 同一企业脚本名称不应重复。
  • 脚本数量存在上限,当前实现中单企业最多约 20 个脚本。
  • 新建脚本默认未发布,不能直接作为线上生效版本使用。

6.3 编辑脚本

编辑脚本可修改名称、描述和草稿代码。

注意事项:

  • 编辑草稿不等于修改线上版本。
  • 如果修改脚本代码,需要完成格式校验。
  • 修改脚本前应确认该脚本是否被多个 IVR 引用。

6.4 脚本调试

调试用于在上线前验证脚本逻辑。实施人员可输入 JSON 测试入参,执行脚本并查看结果。

调试要求:

  • 脚本不能为空。
  • 测试入参应为 JSON 对象。
  • 调试结果只代表当前测试入参,不等于线上全部场景通过。
  • 调试脚本有临时有效期,不应用作生产运行依据。

6.5 保存并发布

发布会生成脚本版本快照。首次发布通常生成 V1,并设置为生效版本;后续发布版本号递增。

版本策略:

  • 线上运行依赖发布版本。
  • 历史版本可用于查看和回滚。
  • 发布版本数量有限,当前实现中最多保留约 5 个发布快照。

6.6 生效版本切换

生效版本用于控制线上运行版本。切换生效版本适合快速回滚或切换到已验证版本。

切换前应确认:

  • 目标版本存在。
  • 目标版本已通过拨测。
  • 该脚本被哪些 IVR 节点引用。

6.7 脚本复制

复制脚本适合基于现有逻辑创建新业务脚本。复制后的脚本不应默认沿用线上生效版本,应重新检查名称、描述、入参、出参和引用场景。

6.8 删除脚本

脚本删除属于高风险操作。

删除限制:

  • 脚本不存在时不能删除。
  • 被 IVR 脚本节点引用时不能删除。
  • 删除脚本会同时删除其发布版本。

建议删除前先查看引用详情,确认没有 IVR 节点正在使用。

6.9 IVR 脚本节点配置

IVR 脚本节点应配置:

  • 引用脚本。
  • 输入变量。
  • 超时时间。
  • 成功路径。
  • 失败路径。

运行时若脚本不存在或没有生效版本,节点不可用。

6.10 同步与异步脚本

同步脚本适合快速计算和即时返回结果。

异步脚本适合需要等待外部处理或异步回调的场景。异步脚本需符合固定格式要求,并明确回调结果。

6.11 超时和熔断

脚本服务调用存在连接、执行和整体超时保护。脚本运行超时或服务异常时,应返回失败结果,并由 IVR 脚本节点进入失败路径。

6.12 错误日志

脚本服务异常时会记录错误信息,用于排障。客户版交付中不暴露内部日志位置,但应说明“脚本失败可由技术支持按请求标识和通话标识排查”。

七、典型业务场景

7.1 复杂客户标签计算

脚本读取客户号码、来源渠道、历史变量,计算客户等级,输出分流结果。

7.2 HTTP 结果加工

HTTP 交互返回复杂 JSON,脚本将结果整理成 IVR 后续节点可识别的变量。

7.3 机器人转人工摘要处理

机器人会话结束后,脚本将意图、摘要、槽位信息整理为座席弹屏或转人工变量。

7.4 多条件业务分流

脚本根据客户等级、订单状态、地区、时间等多个条件输出统一分流结果,再由逻辑选择节点处理。

7.5 敏感变量脱敏

脚本可对客户输入或业务字段进行格式化、掩码或脱敏后再用于播报、推送或记录。

7.6 异常兜底处理

外部系统返回异常或变量缺失时,脚本统一输出兜底结果,让 IVR 进入人工、留言或通用提示路径。

八、上线准备与运营建议

8.1 上线前确认事项

上线前应确认:

  1. 脚本业务用途清晰。
  2. 脚本已发布并设置生效版本。
  3. IVR 脚本节点引用的是正确脚本。
  4. 输入变量来源已确认。
  5. 输出变量名称和后续节点读取口径一致。
  6. 成功路径和失败路径完整。
  7. 超时时间符合客户等待体验。
  8. 需要沉淀的输出结果已配置话单、推送或导出字段。
  9. 已完成正向、空值、异常、超时和回滚测试。

8.2 运营建议

  • 脚本命名应包含业务场景,避免“测试脚本”“脚本 1”等长期存在。
  • 一个脚本只承载一类清晰业务逻辑,避免巨型脚本难以维护。
  • 修改脚本前先查看引用详情。
  • 核心 IVR 脚本变更应避开高峰期。
  • 发布前保留上一稳定版本,便于快速回滚。
  • 定期复盘脚本失败率和失败原因。

8.3 验收样例

场景验收方式预期结果
正常入参输入完整测试变量并运行返回预期结果,进入成功路径。
入参为空删除关键变量后运行脚本输出兜底结果或进入失败路径。
脚本未发布IVR 节点引用未发布脚本节点不可保存或运行不可用。
切换版本切换到历史稳定版本IVR 按历史版本逻辑执行。
脚本异常构造脚本异常或非法返回进入失败路径,记录可排查。
脚本超时构造长耗时逻辑按超时进入失败或兜底路径。
输出沉淀将结果配置到记录或推送通话后可查询或对账。

九、与周边能力的关系

9.1 与 IVR 自定义节点的关系

IVR 自定义节点是流程入口,Node.js 脚本服务是运行支撑。客户感知的是 IVR 流程,实际执行由脚本服务完成。

9.2 与 HTTP 交互节点的关系

HTTP 交互更适合固定请求;脚本服务更适合对多来源数据进行加工、判断和转换。

9.3 与变量体系的关系

脚本输入和输出都依赖变量。变量命名、来源、空值和沉淀口径必须提前设计。

9.4 与话单和推送的关系

脚本执行结果不自动进入话单和推送。需要长期追溯时,应额外配置字段沉淀。

9.5 与机器人和智能体的关系

脚本可用于处理机器人会话结果、意图、摘要或转人工上下文,但不替代机器人本身。

9.6 与脚本生成助手的关系

部分系统可能提供脚本生成辅助能力。生成结果仍需人工审查、调试、发布和验收,不能直接上线。

十、FAQ

10.1 Node.js 脚本服务和 IVR 脚本节点是什么关系?

脚本节点是 IVR 画布上的节点;Node.js 脚本服务是执行脚本的运行服务。

10.2 保存脚本后是否立即影响线上?

不一定。保存通常是草稿,线上运行应依赖已发布且生效的版本。

10.3 为什么脚本节点提示脚本不可用?

常见原因是脚本不存在、未发布、没有生效版本,或脚本不属于当前企业。

10.4 脚本结果为什么后续节点读不到?

可能是输出变量名不一致、脚本未成功返回、变量未写入预期字段,或流程进入了失败路径。

10.5 删除脚本为什么失败?

脚本正在被 IVR 节点引用时不能删除。应先解除节点引用或替换脚本。

10.6 脚本可以执行很久吗?

不可以。脚本运行会影响客户等待体验,必须受超时保护。长耗时逻辑应拆分或改为异步/外部处理。

10.7 异步脚本一定比同步脚本好吗?

不一定。同步脚本适合快速计算;异步脚本适合需要等待回调的场景,但对格式、回调和兜底要求更高。

十一、总结

Node.js 脚本服务是 IVR 扩展能力的重要组成部分。它让语音导航可以执行复杂业务逻辑,但也带来了版本、变量、超时、异常、沉淀和排障风险。

设计脚本服务相关方案时,应把“脚本管理、版本发布、IVR 节点引用、运行时执行、结果沉淀、异常兜底”作为一条完整链路验收,不能只验证脚本能运行。

附录 A:入口与权限

入口 / 权限说明
脚本管理新建、编辑、调试、发布、复制、删除脚本。
IVR 流程画布配置脚本节点并引用脚本。
IVR 查看查看脚本列表、详情、版本和引用关系。
IVR 新增 / 修改创建脚本、调试脚本、发布脚本和配置脚本节点。
IVR 删除删除未被引用的脚本。

附录 B:关键字段口径

字段说明
脚本名称业务可读名称。
描述脚本用途说明。
草稿脚本当前编辑中的脚本内容。
发布版本已发布的版本快照。
生效版本线上实际运行版本。
发布状态是否已有可用发布版本。
同步 / 异步脚本执行方式。
被使用次数被 IVR 脚本节点引用次数。
输入变量脚本执行入参。
输出结果脚本返回给 IVR 的结果。
超时时间等待脚本运行的最长时间。
成功路径执行成功后的下一节点。
失败路径执行失败后的下一节点。

附录 C:实施检查清单

检查项检查内容
脚本数量未超过企业脚本数量上限。
脚本命名名称唯一且可识别。
格式校验同步或异步脚本格式正确。
调试入参测试 JSON 入参覆盖关键场景。
发布版本已发布并设置生效版本。
节点引用IVR 节点引用正确脚本。
成功路径成功后进入正确节点。
失败路径异常和超时后有兜底。
输出变量后续节点可读取。
结果沉淀需要追溯的结果已进入记录或推送。
回滚方案保留可用历史版本。

附录 D:常见问题速查

问题可能原因建议处理
脚本不可用未发布或无生效版本发布并设置生效版本。
调试失败脚本格式错误或入参不是 JSON 对象修正脚本和测试入参。
运行超时脚本耗时过长或依赖慢优化逻辑,配置失败路径。
后续变量为空输出变量名不一致或脚本失败检查返回结果和变量配置。
删除失败被 IVR 节点引用先解除引用。
修改影响多个流程多个节点共用同一脚本查看引用详情并分批发布。

附录 E:术语表

术语说明
Node.js 脚本服务执行 IVR JavaScript 脚本的运行服务。
脚本管理维护脚本、调试、发布和版本的能力。
脚本节点IVR 中引用脚本的节点。
草稿编辑中未发布的脚本内容。
发布版本可用于线上运行的版本快照。
生效版本当前实际运行的版本。
同步脚本立即执行并返回结果的脚本。
异步脚本通过异步回调返回结果的脚本。