对话答复配置
更新时间:2020-04-16
前言
上一个章节,我们通过添加分支流程,给对话流程丰富了词槽收集的能力,本章节就会通过添加多条件判断赋予TaskFlow控制流程走向的能力。
实现需求
-
快递答复结束后,主动询问用户是否还有其他事情,并新增通用答复。完成以下对话流程。
快递员:“您好,取快递” 机器人:“请问您是哪家快递公司?” 快递员:“顺丰快递” 机器人:“好的,您可以先放到收发室,稍后我通知机主来取。” 机器人:“您还有其他事吗?” 快递员:“没事了” 机器人:“好的,感谢您的来电,再见”
- 新增一个对话流程,用来处理用户问答型的Query。
新增对话流程
- 更改取快递的答复节点内容为:“好的,您可以先放到收发室,稍后我通知机主来取。”
- 调整该节点的高级配置,答复后动作-是否等待用户输入为否。
- 新增一个答复节点,并与快递答复连接起来。具体操作如下图。
- 新增一个开始节点指出的流程,对没事的意图进行答复。
- 最后让我们来体验下对话效果吧。
知识点
对话答复节点高级设置-答复后动作:
- 重置对话状态:默认为否,若选择是,则会清空之前所有的对话信息,包括之前收集的词槽等信息均被置空,下一个节点时对话会重新开始。
- 是否等待用户输入:默认为是,该节点完成所有动作后,接收到用户输入才会继续向下执行;若选择否,则不再等待,直接执行下一个节点的内容。
新增对话流程
- 添加外卖来源的词槽澄清节点。
- 并拖拽一条连线,条件为命中问答技能的问答对,操作如下图所示。
- 让我们来体验下对话效果吧。
知识点
对话答复节点包含两种类型的答复。
使用技能应答:可以使用技能原有的答复内容,目前支持该类型的技能包括
- 问答技能,对话式文档问答,部分预置技能(垃圾分类,笑话,单位换算,进制转换,计算器,成语问答,智能对联,智能写诗,名词解释,智能问答,问候,闲聊)。
- 后续还会支持更多的技能,敬请期待。
自定义话术应答
- 用户自己随意配置话术。
- 还可以在回复中引用变量,变量引用只在“可视化模式”下使用,为了能够不用编程就取到意图、词槽、变量等内容。具体方式查看下文。
引用意图词槽全局变量中的值
范围 | 变量 | 引用方式 | 举例(变量引用 → 变量值) |
---|---|---|---|
意图# | 技能意图 | {#技能ID.intent} | {#12345.intent} → WEATHER |
词槽@ | 词槽原始值 | {@词槽名.origin} | {@user_loc.origin} → 北京 |
词槽@ | 词槽归一化值 | {@词槽名.normal} | {@user_loc.normal} → (NERL_PLUS_LOC_ROOT)>北京市 |
全局变量$ | 全局变量值 | {$参数名} | {$count} → 100 |
全局变量可能是一个字符串或者数字,也可能为list或者dictionary的结构体,此时还会存在二次引用。
注:list和dictionary均为python的数据类型
存在全局变量 list = [1, 2, 3, 4] 和 dictionary = {'bar': 3, 'egg': 2, 'spam': 1}
变量类型 | 操作方式 | 引用方式 | 举例(变量引用 → 变量值) |
---|---|---|---|
list | [] | {$参数名[]} | {$count[0]} → 1 |
dictionary | . | {$参数名.} | {$count.bar} → 3 |
接下来
接下来我们会通过将配置通用答复,调取业务系统资源等能力添加到对话流程中,带领大家一步一步熟悉TaskFlow的使用。