配置场景
场景
某医院需要使用智能语音导航完成一个简单的机器人预约挂号流程,流程如下:
注:蓝底部分表示智能语音导航执行的步骤。
需求分析
根据上述流程,我们可以分析出整个流程需要如下资源和配置:
步骤 |
资源 |
图元 |
节点属性设置 |
备注 |
---|---|---|---|---|
开始 |
- |
|
- |
- |
初始化语言 |
业务接口:初始化语言 |
|
缓存变量名: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的值。请全局保持唯一(响应)