如何高效的引用所有变量?
变量:在对话过程中可以访问的字段信息。比如,意图参数就是变量。
为什么需要变量?
在对话处理和对话回复的过程中,需要根据用户输入或外部环境信息的不同,进行个性化处理,这时就需要变量。例如,“查天气”场景,意图参数“城市”是一个变量,因为用户在回答“请问您要查哪个城市的天气?”时,可能有不同的回答,这样意图参数不是一个固定值,此时需要通过“${查天气.城市}”的方式引用该变量,再以“${查天气.城市}”变量为API参数,访问外部查天气接口,才能获取到符合用户需求的结果。
怎么样引用变量?
意图参数的引用
引用方式:原始值引用:\${intent.slot.origin},归一值引用:\${intent.slot}
使用场景:在内置函数节点、回复节点需要引用意图参数的地方。
举例说明:在查天气场景,当用户说“查一下后天杭州的天气”,对话工厂将“后天”填入“查天气”意图下的“时间”意图参数,通过\${查天气.时间.origin}能引用到填槽后的原始值:“后天”,通过\${查天气.时间}能引用到填槽后的归一值:“2018-07-23”。
外部环境变量的引用
引用方式:\${var}
使用场景:在内置函数节点、回复节点需要引用外部环境变量的地方。要想引用外部变量,在线会话时,先将变量写入ext字段,然后通过会话接口传入对话工厂。
举例说明:在电商场景,外部系统将“用户是否已登录”的信息以环境变量的形式通过会话接口传入对话工厂,假定具体内容为:{“isLogin”: true, “nickName”: “James”},那么在引用变量时,通过\${isLogin}可以引用到用户是否已登录的信息。
函数返回结果的引用
引用方式:\${functionOutput}
使用场景:当上游有函数节点,希望在紧接的回复节点对函数返回结果进行引用时,可以使用这种方式配置。
举例说明:在公积金余额查询场景,开启对话后,中间的函数节点访问公积金查询API,在回复节点通过\${functionOutput}即可拿到余额信息。
全局变量的引用
引用方式:\${global.var}
使用场景:在内置函数节点、回复节点需要引用全局变量的地方。
举例说明:在电商场景,用户选择了某个订单,通过自定义函数,订单ID会被记录到全局变量中,比如:OrderId=146860783793347518,当在内置函数节点或者回复节点需要引用订单ID时,可以通过\${global.OrderId}引用。