【发布时间】:2018-12-09 16:05:15
【问题描述】:
我正在构建一个具有多个意图的 DialogFlow 代理,其中一些具有冲突的变量,并且我正在努力创建一个干净的对话流 - 特别是围绕在意图之间来回移动的区域。
例如,假设我支持提供有关天气和航班的信息,我为每个人构建了相应的意图。考虑以下对话框:
- 用户:我想订今天的机票。
- 代理:去哪里?
- 用户:罗马的天气怎么样?
- 特工:在罗马是 21°C。
- 用户:那就是罗马。
此时,我希望飞行意图得到识别,并获取“罗马”作为参数,以及之前保存的“今天”参数。 但是,我无法判断系统是否会识别航班或天气意图,因为这句话可能同时适用于两者 - 取决于上下文。
我通过为每个对话主题定义一个主要和 2 个与上下文相关的参数意图(即以航班作为输出上下文的航班、以航班作为输入和输出上下文的航班时间、以航班作为输入和输出上下文,天气也一样),通过将每个上下文的生命周期设置为 1,并在其他意图完成后在代码中恢复它 - 以保留已填充的插槽,并支持诸如此类的短语作为“罗马”并理解它们是上下文的。我还考虑过动态更改意图优先级,但不确定是否可行。
话虽如此,我觉得这是我应该从基础设施中开箱即用的东西。我指的是类似堆栈的意图优先级,因此最后一个未实现的意图上下文将获得最高优先级。大家有遇到过这样的问题吗?我是否缺少一些可以帮助我更自然地实现这种行为的关键功能?也许是一种干扰意图识别的方法?
【问题讨论】:
标签: dialogflow-es google-assistant-sdk