配置场景
介绍任务型对话机器人配置的场景。
场景
某医院需要使用智能语音导航完成一个简单的机器人预约挂号流程,流程如下:

注:蓝底部分表示智能语音导航执行的步骤。
需求分析
根据上述流程,我们可以分析出整个流程需要如下资源和配置:
步骤 | 资源 | 图元 | 节点属性设置 | 备注 |
|---|---|---|---|---|
开始 | - |
| - | - |
初始化语言 | 业务接口:初始化语言 |
| 变量名:GLOBAL.language 变量值:"zh_CN" | 实际应用场景可通过使用真实的接口调用确认语言,本节的机器人配置演示使用该图元赋值,无需选择调用接口,直接添加缓存变量名,将其赋值来初始化语言。 例如英文对应的响应中属性名为: "en_US" |
欢迎语 | - |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.welcome 回复模式:支持播放后再识别 | 添加流程变量,例如: 变量名称:welcome 数据类型:字符型 缺省值:欢迎使用自助挂号系统 |
获取客户回答 | 业务接口:缓存对话交互结果 |
| 变量名:FLOW.ask 变量值:IVRREQUEST.input | 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:ask 数据类型:字符型 缺省值:预约${FLOW.dateSlot}的${FLOW.timeSlot}的{FLOW.docSlot}的${FLOW.roomSlot}。 |
语义识别(含意图是否匹配) | 意图模板:挂号 |
| 语义识别内容:FLOW.ask 设置变量:
判断条件列表
| 添加流程变量,例如: 变量名称:roomSlot 数据类型:字符型 变量名称:docSlot 数据类型:字符型 变量名称:dateSlot 数据类型:字符型 变量名称:timeSlot 数据类型:字符型 |
获取客户需要预约的科室 (匹配到条件名:room) | 业务接口:调用查询科室的接口 |
| 变量名:FLOW.answer 变量值:FLOW.room + TOC.ChatBotRespContent | 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:answer 数据类型:字符型 变量名称:room 数据类型:字符型 缺省值:当前可以选择的科室为内科和外科 |
- |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持播放后再识别 | - | |
获取客户需要预约的医生 (匹配到条件名:doctor) | 业务接口:调用查询对应科室医生的接口 |
| 变量名:FLOW.answer 变量值:FLOW.doctor + TOC.ChatBotRespContent | 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:answer 数据类型:字符型 变量名称:doctor 数据类型:字符型 缺省值:当前科室值班医生有刘医生和李医生 |
- |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持播放后再识别 | - | |
告知客户已预约的挂号信息 (匹配到条件名:finish) | - |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:TOC.ChatBotRespContent 回复模式:只播放 | - |
默认应答 (未匹配到任何条件名) | - |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:TOC.ChatBotRespContent 回复模式:只播放 | 说明: 连线上不匹配任何条件名,即为默认分支。 |
询问是否确认挂号信息 | - |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.check 回复模式:支持识别打断 | 添加流程变量,例如: 变量名称:check 数据类型:字符型 缺省值:确定上面的信息吗? |
语义识别(含意图是否匹配) | 意图模板:确认 |
| 判断条件列表
| - |
使用缓存变量缓存数据再进行语义识别确认客户挂号信息 (匹配到条件名:no) | - |
| 变量名:FLOW.ask 变量值:'预约挂号' | 无需选择调用接口,直接添加变量。 |
再次确认客户是否要修改日期 (匹配到条件名:part) | 回复模板:是否要修改日期 |
| 回复方式:回复文本 回复来源:回复模板 (TTS会根据变量返回的值动态播放语音) 回复模板:redate 回复模式:支持识别打断 | 需添加回复模板 |
意图模板:确认 |
| 判断条件列表
| - | |
询问修改日期,再进行语义识别确认挂号信息 (匹配到条件名:no) |
| 变量名:FLOW.dateSlot 变量值:'' 变量名:FLOW.answer 变量值:'请问你要改为哪一天?' | 无需选择调用接口,直接添加变量。 | |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持识别打断 | - | ||
| 变量名:FLOW.dateSlot 变量值:IVRREQUEST.input 变量名:FLOW.ask 变量值:'预约挂号'+FLOW.dateSlot+'的'+FLOW.timeSlot +FLOW.docSlot +'的' +FLOW.roomSlot | 无需选择调用接口,直接添加变量。 | ||
告知客户挂号信息并表示感谢 (匹配到条件名:yes) | - |
| 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.thanks 回复模式:只播放 | 添加流程变量,例如: 变量名称:thanks 数据类型:字符型 缺省值:已经预订成功,谢谢您的使用,再见。 |
结束 | - |
| - | - |

为确保容错性,您还需要配置一个未知意图,用于识别意图匹配不到的情况。
其中涉及到意图的部分,还需要继续细化分析如下信息,此处以挂号这个意图为例介绍,其他方法类似。
- 客户回答预约挂号的时候有多种说法 (语料)
- 我想看个医生
- 挂号
- 预约挂号
- 我要挂一个明天下午16:00点李医生的内科
您需要尽量多的考虑回答场景,才能确保意图匹配的精确。
- 客户回答的信息中哪个是我们需要的信息?(槽位&实体)
例如客户回答挂号16.00点,那么16.00点是我们需要获取的槽位信息,您需要在意图中添加该槽位信息,而槽位信息需要有对应的实体关联,因此还需要确认实体配置中是否有类似的实体。本例中可以使用系统实体@system.time。
如果客户回答挂号李医生,那么李医生是我们需要获取的槽位信息,您需要在意图中添加该槽位信息,而槽位信息需要有对应的实体关联,系统实体中没有这个实体,那我们需手动添加医生这个实体。
- 意图匹配的命令字,即语义识别图元所需的TOC.ChatBotIntentCode的值。请全局保持唯一(响应)






















