指令配置与使用说明

快速阅读

呼入机器人、外呼机器人除了说自然语言,还可以在模型回复里带上指令,让平台收号、等待、写变量、控制这一轮能不能被打断,或离开当前智能体节点。

  • 井号指令 #转人工#、#挂机# 会跳出当前智能体节点,必须有语音导航上的预置动作和下一跳。
  • DTMF / DTMF_INTERRUPT 在当前对话里收客户按键,一般不新增连线。这是向客户收号,不是座席向外发按键。
  • NIT{...} 进入等待客户处理,要配节点上的单次等待、超时唤醒词、最大等待时长。
  • variable{name:...;content:...} 把结果写成后续节点能引用的变量。EXT_CMD{...} 只控制这一轮播音,不写业务字段。
  • 指令由模型输出、由平台识别。联调要同时看:模型有没有按格式输出、TTS 有没有把指令念出来、节点动作和下一跳有没有发生。

阅读地图

  • 先选指令类型:读「二」「三」。
  • 要跳出流程:读「四」。
  • 要收号、等待、写变量、控制打断:读「五」至「八」。
  • 上线前核对:读「九」「十」。

一、文档说明

本文说明智能体回复里五类指令的格式、该配在智能体还是语音导航、以及配错时通话会怎样。读者是写提示词的实施和画 IVR 的实施。

智能体怎么创建见 智能体搭建、智能体搭建(进阶)。节点上的开场白、预置动作、变量见 交互节点: 智能体。

本文主要说明这五类指令怎么配、怎么验收。座席工作台里的发按键是另一项能力,不在本页格式里。

二、产品总览

指令都由智能体在模型输出里直接返回,平台识别后执行。差别是有的离开当前节点,有的留在当前对话里。

指令类型典型格式主要作用是否跳出当前智能体节点适用场景
井号指令#转人工#、#挂机#进入该指令对应的后续 IVR 节点是转人工、挂断、流程转场
DTMF 指令DTMF{...}、DTMF_INTERRUPT{...}收集客户按键否验证码、单号、证件号、密码
NIT 指令NIT{等待话术。}延长等待,并按时唤醒确认否客户说「稍等」「我查一下」
variable 指令variable{name:...;content:...}提取变量给后续节点否直呼、分流、查询要引用的结果
EXT_CMD 指令EXT_CMD{key:value;key:value}控制这一轮播音能否被打断、保护多久否普通回复、工具调用提示音、开场白、带 #转人工# 的播报

自动外呼仍是 IVR 外呼任务。指令发生在客户已经进入智能体节点之后,不负责把号码拨出去。

三、核心概念

按这个顺序配,不容易漏:

  1. 智能体:提示词写清触发条件、输出格式和限制,让模型在该说的时候返回指令。
  2. 语音导航智能体节点:井号指令要对上预置动作;NIT 要配等待客户处理;variable 要开变量提取。DTMF 通常不要单独开关。
  3. IVR 连线:只有会跳出当前节点的指令必须有下一跳。没有下一跳时,模型虽然输出了指令,流程仍可能挂断或停在错误链路上。
  4. 联调:模型输出、TTS 是否念出指令、节点动作、后续节点拿到的结果,四件事一起看。
指令类型智能体提示词智能体节点IVR 连线配置重点
井号指令必须必须必须提示词、预置动作、下一跳三者一致
DTMF 指令必须一般不需要不需要提示词触发收号,结果回到当前对话
NIT 指令必须必须不需要单次等待、超时唤醒词、最大等待时长
variable 指令必须必须视后续节点而定变量名一致,后续节点引用同一名字
EXT_CMD 指令必须视场景而定不需要只用平台已支持的 key

variable 把业务结果交给后续 IVR 节点。EXT_CMD 只告诉平台这一轮播音怎么控制。格式相似,去向不同。只有平台已经支持的 key 会改变播音;模型多写了别的 key,不会按那个 key 执行。

四、井号指令

格式是 #...#。平台识别后离开当前智能体节点,进入语音导航里与该指令对应的后续节点。

例如输出 #转人工# 后,不再留在当前智能体里,而是沿 #转人工# 的连线进入队列、座席或其他人工流程。座席是接电话的人。

三处缺一不可:

  • 提示词:满足条件时在回复末尾输出指令。
  • 智能体节点预置动作:动作标识与模型输出一致。
  • 画布下一跳:跳出之后有明确去向。

提示词

写清何时触发、输出哪一个指令、指令放在句末。# 前不要再加标点。

  • 客户要求人工:好的,请您稍等#转人工#
  • 对话结束:再见#挂机#
  • 项目若使用自定义标识,例如 #转人工客服#,智能体、节点和连线必须同一写法。

指令前的自然语言会播报。指令本身不应被 TTS 念给客户。

节点与连线

进入语音导航的智能体节点,核对预置动作。挂机、转人工通常已内置,节点侧保证标识一致即可。转人工如需在报表里区分「说了转人工」和「真的转到了人工」,同步打开转人工意图统计。自定义井号标识也要有同名动作或同名下一跳。

保存节点后,画布上出现对应出口:

  • #转人工# 接到人工队列、人工节点或其他人工承接。
  • #挂机# 接到挂断节点。若要先播一段固定录音,先接播放节点,再结束通话。
  • 自定义井号指令接到对应业务分支。

只写了提示词、没有下一跳时,模型会输出指令,跳出之后可能直接挂断,或停在错误链路。

#挂机#

用于通话不必再继续时,从智能体节点进入挂断相关节点或结束当前链路。

常见写法是 #挂机#。有的项目预置动作标识是 #挂断#,以节点上配置的标识为准,提示词、节点和文档不要混用。

示例:不好意思打扰您了,再见#挂机#

适合回访已完成、客户明确拒绝且不再转人工、通知类信息已经播完。错误写法是 再见!#挂机#。

#转人工#

用于智能体不再继续承接时,进入人工座席、队列或其他人工流程。

示例:好的,请您稍等,我这边为您转接人工客服#转人工#

适合客户主动要求转人工,多轮澄清后仍解决不了,或投诉、退款等需要人工处理的情况。转接前可加一句安抚播报。不要把 #转人工# 放在句首,否则流程会立刻转走,后面的话播不出来。

联调至少确认:模型输出的标识正确、指令没有被念出、预置动作已触发、画布进入的是目标节点。

五、DTMF 指令

DTMF 指令在当前智能体节点里向客户收号,适合验证码、物流单号、手机号、证件号、密码等不适合只靠口述的内容。收号完成后,结果以文本回到模型,对话继续。不新增 IVR 连线,也不新增预置动作。

节点侧一般没有单独开关。提示词里写明何时输出、每种场景的参数。

联调覆盖:收号成功、失败、超时重播、客户按 # 提前结束、加密显示。

DTMF

格式:

DTMF{位数|超时时间|超时提示音|重播次数|是否加密}

示例:

DTMF{6|5|您没有按啊,可以再按一次吗|2|0}
参数位置参数名称作用默认值取值范围说明
1收号位数要采集的按键位数61-30超出范围时按默认值处理
2超时时间从最后一次按键开始计时6s1-30s超时后播放提示音
3超时提示音超时后的播报平台默认提示自定义字符串留空时使用默认文案
4重播次数超时后的最大重试次数11-6超出范围时按默认值处理
5是否加密按键内容是否加密显示10 或 10 明文,1 加密

示例里的 5、2、0 是这一条指令的取值,不是上表默认值。

执行规则:

  • 客户按 # 可提前结束收号,不必凑满位数。
  • 达到指定位数时自动结束收号。
  • 成功后,按键内容作为文本消息回传给模型。
  • 开启加密后,日志和记录里的按键内容按密文展示。

敏感信息建议默认加密。超时提示尽量短,例如「没有收到您的按键,请再输入一次」。第一次联调用位数少的样例。

DTMF_INTERRUPT

参数与 DTMF 相同,格式是 DTMF_INTERRUPT{位数|超时时间|超时提示音|重播次数|是否加密}。差别是收号过程中可以被客户说话打断:继续收号,或退出收号回到对话,由打断判定决定。

DTMF 适合希望客户专心输完。DTMF_INTERRUPT 适合收号较长、客户可能中途发问。上线前看三种边界:先说话后按键、先按键后说话、超时播报时插话。

六、NIT 指令

NIT 在当前智能体节点里进入「等待客户处理」,不跳出节点,也不新增连线。适合客户要查资料、确认信息后再说。

格式:

NIT{等待话术。}

示例:NIT{好的,您慢慢查,我等您。}

括号内会作为等待期间的安抚话术播给客户,写短,并以句号收尾。提示词要写明哪些意图必须输出 NIT,不要只写「可以使用」。

节点路径是语音导航智能体节点里的「等待客户处理」,三项一起配:

配置项作用
单次等待时间(秒)静默后首次等待多久
超时唤醒词超过单次等待后播给客户的提示
最大等待时长(秒)这一轮最多等多久;超过后结束等待,进入客户沉默处理

执行顺序:模型输出 NIT{...} 后进入等待;先播括号内话术;超过单次等待时间则播超时唤醒词;超过最大等待时长则结束等待并进入客户沉默处理。

等待时间按业务节奏设置,避免过短打断客户,也避免过久占着并发。

交互示例:

外呼机器人:请问他的任职时间是从何时到何时呢?
客户:这个我不确定,我得查一下。
外呼机器人:好的,您慢慢查,我等您。
(30s后)
外呼机器人:请问您这边查好了吗?
客户:稍等啊,马上。
外呼机器人:好的不着急。
客户:嗯,他是2021年4月入职,2025年8月离职。
外呼机器人:好的,那请问他平时主要负责的工作都要哪些呢?

上例里的 30 秒是这段对话的举例,不是节点默认值。单次等待和最大等待以节点上填写的秒数为准。呼入机器人使用同一组 NIT 配置。

七、variable 指令

模型已经确认了门店、城市、业务类型或号码,后续直呼、分流、查询还要用这个结果时,用 variable 写成变量。它不单独生成新的跳转出口。

格式:

variable{name:变量名;content:变量值}

示例:

variable{name:mall_name;content:上海五角场万达广场}

name 与 content 之间用英文冒号 :,多项之间用英文分号 ;。

配置顺序:

  1. 提示词写清触发条件、变量名和上述格式。变量名与节点完全一致。
  2. 在语音导航智能体节点的「变量」里打开变量提取,新增同名变量。只有 name 一致时,值才会写入 IVR 变量。节点若还要把已有变量传给智能体,同时核对映射。
  3. 后续节点引用同一名字。直呼节点可以把直拨值设为该变量。分流、查询同样引用这个名字。变量值是中文时,部分后续节点要先解码,例如 {URIDECODE(${number})}。

TTS 不应把 variable{...} 这段念出来。联调看三件事:模型输出里有这个结构、没有被播报、后续节点拿到的不是空值或错值。

变量名使用业务上能看懂的写法,例如 mall_name、city、service_type。一次只提取这一步真正要用的字段。

八、EXT_CMD 指令

EXT_CMD 控制这一轮模型输出文本的播音,不传业务字段,也不代替收号或转人工。当前已明确支持的 key 是 interrupt 和 play_protect。常见于普通回复、工具调用提示音、模型生成开场白,以及带 #转人工# 的播报。

格式:

EXT_CMD{key1:val1;key2:val2}
  • 以 EXT_CMD{ 开头,以 } 结尾。
  • 按键值填写。键和值之间可用英文冒号 : 或中文冒号 :。
  • 多组之间可用英文分号 ; 或中文分号 ;。

它只作用于模型输出的文本。文本播完、进入别的动作后,这条指令随之失效。例如:

请按键输入您的验证码。DTMF{||||},按井号结束。EXT_CMD{interrupt:true}

这里的 EXT_CMD 管的是「请按键输入您的验证码,按井号结束」这一轮文本能不能被打断。进入 DTMF 收号后,这条 EXT_CMD 不再管收号过程。

key类型作用
interruptboolean这一轮模型输出文本是否允许被打断
play_protectint这一轮从开始播音起,多长时间内不允许被打断

interrupt:false 表示这一轮不允许被打断;true 表示允许。允许打断是多数普通回复的默认情况,不必每句都写。

play_protect 单位是毫秒,从开始播音起算。interrupt 为 false 时它不生效。取值按 value <= 30000 处理:小于等于 0 表示保护不生效;大于 30000 按 30000 处理。

常见写法:

EXT_CMD{interrupt:true}
EXT_CMD{interrupt:false}
EXT_CMD{interrupt:true;play_protect:4000}

流式输出时,尽量让模型尽早输出 EXT_CMD。识别到指令之前,已经播出的前半段仍按默认规则。

普通模型输出

interrupt 为 false 时,这一轮文本在播放期间不允许被打断。识别是流式的。若识别到指令时已经播了 1 秒,则这 1 秒内仍允许被打断,从识别到之后到播完才按 EXT_CMD 执行。这里的 1 秒是时序举例,不是固定时延。

play_protect 为 4000、识别到指令时已经播了 1 秒时:0 到 1 秒仍可被打断;1 秒到 4 秒不允许被打断。保护区间仍从播音开始计算,不是从识别时刻再加 4 秒。

工具调用提示音

interrupt 为 true 时,工具调用提示音允许被打断,这是默认情况。false 时,提示音播放期间不允许被打断。

生效:模型流式返回工具调用事件并开始播提示音时。失效不晚于这两个时刻里较晚的一个:工具调用之后模型返回第一个文本断句的时刻,以及提示音播完的时刻。

开场白

模型生成开场白使用 EXT_CMD,不是另一套指令。

语音导航智能体节点的「对话启动」里,开场白有两种模式:

  • 固定开场白:内容在节点页面填写。
  • 模型生成开场白:内容由模型生成。节点页选择模式,并保留公共开关。

节点页仍然生效的是:接通延时播报(接通后何时发起第一句开场白)、开场白优先播报(是否优先保证开场白作为首轮播报)。

interrupt 为 false 时,开场白播放期间不允许被打断。固定开场白从播音开始到结束都不允许打断。模型开场白从识别到这条 EXT_CMD 起,直到播完,不允许打断;识别之前已播出的部分仍按默认规则。

play_protect:固定开场白从播音开始到保护时长结束不允许打断。模型开场白从识别到指令起生效,保护区间仍按「从播音开始到 play_protect 结束」计算。play_protect 为 4000、识别时已播 1 秒时,同样是 0 到 1 秒可打断、1 秒到 4 秒不可打断。

固定开场白的「开场白可打断」「开场白保护时间」在节点页面配置。模型生成开场白的打断和保护看这里的 EXT_CMD。

带 #转人工# 的播报

呼入机器人出现 #转人工# 的这一轮,默认不允许被打断。外呼机器人出现 #转人工# 的这一轮,默认允许被打断。要用 EXT_CMD 覆盖默认时,加在指令后面,不要把 #转人工# 放在句首。

呼入机器人需要允许打断:

正在为您转接人工服务#转人工#,请稍等。EXT_CMD{interrupt:true}

外呼机器人需要禁止打断:

正在为您转接人工服务#转人工#,请稍等。EXT_CMD{interrupt:false}

配错时重点看:指令写得太靠后,前半句已按默认播完;play_protect 超出范围后被截成 30000 或小于等于 0 而不生效;#转人工# 在句首导致立刻跳走;把 EXT_CMD 当成业务变量,或以为它能改写 DTMF、井号跳转本身。

九、配置建议与验收

要做的事用哪类指令
结束或转走井号指令
收客户按键DTMF 或 DTMF_INTERRUPT
等客户查完再继续NIT
把结果交给后续节点variable
控制这一轮播音能否被打断EXT_CMD

提示词写的是「什么情况下必须输出」,不是「可以使用」。动作能不能落地,还取决于预置动作、下一跳、变量名、等待客户处理和 key 是否受支持。

上线前至少看这些边界:转人工没有连线、收号超时、等待后的唤醒和沉默处理、变量名不一致、开场白被跳过、EXT_CMD 识别晚于已播出的前半句。

口径保持一处:项目用 #挂机# 就不要在提示词里写 #挂断#;变量名用 mall_name,节点和后续引用也用 mall_name。

十、FAQ

模型输出了 #转人工#,电话却挂了?
提示词、预置动作、画布下一跳要一致。没有把出口接到队列或座席时,跳出智能体节点后到不了人工。

客户听到了 #挂机# 或 variable 原文?
指令应被平台识别并执行,不应交给 TTS。先看输出是不是写在句末、格式是否完整,再看节点是否识别到了对应动作。

DTMF 和发按键是一回事吗?
不是。本页 DTMF 是让客户在电话键盘上输入,结果回到当前对话。座席向外发送按键是另一项能力。

EXT_CMD 能不能把城市写给下一个节点?
不能。业务结果用 variable。EXT_CMD 只处理这一轮播音的 interrupt 和 play_protect。

外呼机器人转人工时,客户一说话就把转接话术打断了?
外呼机器人带 #转人工# 的这一轮默认允许打断。要播完再走,在句末加上 EXT_CMD{interrupt:false},并确认 #转人工# 不在句首。

十一、总结

先分清这轮是要跳出智能体、收号、等待、写变量,还是只改播音打断。井号指令必须三处一致;其余指令留在当前节点,按各自的节点项或 key 验收。TTS 不播指令原文。


Did this page help you?