云客服-配置场景:需求分析

时间:2025-02-12 14:54:28

需求分析

根据上述流程,我们可以分析出整个流程需要如下资源和配置:

表1 需求分析

步骤

资源

图元

节点属性设置

备注

开始

-

-

-

初始化语言

业务接口:初始化语言

变量名: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

设置变量:

  • 获取意图匹配到的科室
    • 变量名:FLOW.roomSlot
    • 变量值:TOC.ChatBotroom
  • 获取意图匹配到的医生
    • 变量名:FLOW.docSlot
    • 变量值:TOC.ChatBotdoctor
  • 获取意图匹配到的日期
    • 变量名:FLOW.dateSlot
    • 变量值:TOC.ChatBotdate
  • 获取意图匹配到的时间点
    • 变量名:FLOW.timeSlot
    • 变量值:TOC.ChatBottime

判断条件列表

  • 匹配到了配置的挂号意图
    • 条件名:finish
    • 条件表达式:TOC.ChatBotIntentCode=='finish'
  • 匹配到了配置的挂号意图的必选科室槽位的命令字
    • 条件名:room
    • 条件表达式:TOC.ChatBotIntentCode=='room'
  • 匹配到了配置的挂号意图的必选医生槽位的命令字
    • 条件名:doctor
    • 条件表达式:TOC.ChatBotIntentCode=='doctor'

添加流程变量,例如:

变量名称: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

数据类型:字符型

缺省值:确定上面的信息吗?

语义识别(含意图是否匹配)

意图模板:确认

判断条件列表

  • 匹配到了确认的意图
    • 条件名:yes
    • 条件表达式:TOC.ChatBotconfirm=='是'
  • 匹配到了不确认的意图
    • 条件名:no
    • 条件表达式:TOC.ChatBotconfirm=='否'
  • 匹配到了日期错误
    • 条件名:part
    • 条件表达式:TOC.ChatBotconfirm=='日期错误'

-

使用缓存变量缓存数据再进行语义识别确认客户挂号信息

(匹配到条件名:no)

-

变量名:FLOW.ask

变量值:'预约挂号'

无需选择调用接口,直接添加变量。

再次确认客户是否要修改日期

(匹配到条件名:part)

回复模板:是否要修改日期

回复方式:回复文本

回复来源:回复模板

(TTS会根据变量返回的值动态播放语音)

回复模板:redate

回复模式:支持识别打断

需添加回复模板

意图模板:确认

判断条件列表

  • 匹配到了确认不修改日期的意图
    • 条件名:yes
    • 条件表达式:TOC.ChatBotconfirm=='是'
  • 匹配到了确认修改日期的意图
    • 条件名:no
    • 条件表达式:TOC.ChatBotconfirm=='否'

-

询问修改日期,再进行语义识别确认挂号信息

(匹配到条件名: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的值。请全局保持唯一(响应)

    由于意图中的响应是可以设置分支条件的,可以直接添加分支,回复不同的TOC.ChatBotIntentCode。

support.huaweicloud.com/usermanual-cec/cec_04_1008.html