对话图创建时会生成一个名为 main 的空节点,我们将用它作为对话图的起始点。空节点不会影响对话图的功能,我们可以用其作为传送节点的目标,使对话图更加清晰。
对话图需要用户输入节点来触发,可以是用户说,意图识别,实体提取或者万能节点等类型。其中,用户说节点会捕捉一个被事先定义好的文本内容。当用户输入完整匹配的文本内容时,节点匹配,流程可以继续执行。
用户说会捕捉一个被事先定义好的文本内容。我们在刚才的例子中已经用到了该节点
用户说节点同时可以使用正则表达式,需要在高级设置中,勾选“正则表达式匹配”,这样用户说节点中输入的文字,会当成正则表达式在后端进行匹配。
当前大部分情况,用户只需要得到用户输入的文字,即 .get(0).key的值。所以在 TDE 的设置页面有一个开关,默认为key。key即代表所有槽位使用 .get(0).key的值,json 则代表使用原始的格式,是一个 list,面向高级用户结合脚本使用。
实体节点可以支持匹配多个实体,只需要在选择时多选即可,只要匹配中其中一个实体,就算匹配成功。
很多用户都积累了大量的 FAQ 数据,这些 FAQ 都是相关业务问题得积累。在对话图中引入这些数据去匹配用户的输入、回答用户的问题对用户有比较大的帮忙。
为了使用知识库的输入输出节点,首先需要在对话图中配置相关的 FAQ 节点。配置完节点后,可以在流程图中添加输入节点去匹配用户的问题,添加输出节点回答用户的问题。
首先,给对话图关联知识库。
与机器人答节点类似,可以输出当前图里变量,以{sentence}。如果需要输出$符号,则使用 $**
一般我们推荐在图的最后使用退出节点退出,要不多重 call 有时会造成额外的输出内容
利用脚本节点编辑一段 Groovy,可以用来实现多种复杂的功能,比如编辑变量,检测用户回复是否满足一定条件等等。
下图中的脚本是一个最简单的例子。运行后,变量 a 被赋值 2。被赋值的变量可以用来满足进入节点的条件。(详见下方 编辑变量)
存储节点可以将对话图中参数存储到 TDE 后端的数据库中,或者将之前上传的文件存储到数据库中
下图为存储相应的参数
存储在数据库中的数据,可以通过 TDE 的 api 进行调用,根据 setid,uid 等参数,得到数据库中的数据。
API 如下 导出对应用户的自主数据库信息,通过存储节点存储的参数
Parameters:
name | type | note |
---|---|---|
setid | string | setid,必须 |
table | string | table 信息,非必须,一般为 null |
uid | string | uid,非必须 |
row | string | 行信息,非必须 |
column | string | 列信息,非必须 |
返回: Map,包含 list of value,和是否成功的信息 例子:http://localhost:8082/set/exportmock?setid=ff80818170ac67440170ac686c2b0000
返回:
{"value": [{"uid": "testClient","平均得分": "0.8586277365684509","createtime": "2020-07-03 15:22:52","机器人 id": "999217.0","技能名称": "消费者 faq","技能类别": "faq","updatetime": "2020-07-03 15:22:52","回答次数": "82414.0"},{"uid": "testClient","平均得分": "0.9447728991508484","createtime": "2020-07-03 15:22:52","机器人 id": "999217.0","技能名称": "共享闲聊","技能类别": "faq","updatetime": "2020-07-03 15:22:52","回答次数": "17716.0"}],"status": "success"}
http 服务节点辅助用户访问第三方 http 服务并从服务的 json 结果中抽取内容保存在变量中。http 服务节点包含两部分内容:第一部分需要注册一个 http 服务,说明服务的 URL,访问的方法(GET,POST,PUT),服务的参数和需要抽取的内容等。第二部分是在流程图的 http 服务节点中引用第一步注册的服务;第二步引用 http 服务的同时,为了配合测试,可以设置测试数据。
第一步注册服务
其中包括的内容有:
json 内容如下:
{"coord": {"lon": -0.13,"lat": 51.51},"weather": [{"id": 300,"main": "Drizzle","description": "light intensity drizzle","icon": "09d"}],"base": "stations","main": {"temp": 280.32,"pressure": 1012,"humidity": 81,"temp_min": 279.15,"temp_max": 281.15},"visibility": 10000,"wind": {"speed": 4.1,"deg": 80},"clouds": {"all": 90},"dt": 1485789600,"sys": {"type": 1,"id": 5091,"message": 0.0103,"country": "GB","sunrise": 1485762037,"sunset": 1485794875},"id": 2643743,"name": "London","cod": 200}
名称(存储的变量名称) | 参数值(抽取的内容) | 解释 |
---|---|---|
温度 | $.main.temp | 抽取温度 |
压强 | $.main.pressure | 抽取湿度 |
风速 | $.wind.speed | 抽取风速 |
维度 | $.coord.lat | 抽取维度信息 |
参数值的抽取语法支持 JsonPath,请参考链接:https://github.com/json-path/JsonPath
在第一步注册服务之后可在流程图中添加 Http 节点引用服务
函数服务节点可以让用户输入一个函数脚本,方便在对话图中使用。函数节点与 http 服务节点类似,包含两个部分:第一部分需要注册函数服务。第二部分在流程图中的函数服务节点引用第一步注册的服务。
第一步注册函数服务
“进入节点的参数设置”
下点击“添加条件”
,既可以进行赋值