我正在构建一个具有多个意图的DialogFlow代理,一些具有冲突的变量,而我正在努力创建一个干净的会话流 - 特别是在意图之间来回移动的区域 .

例如,假设我支持提供有关天气和航班的信息,我为每个人 Build 了相应的意图 . 考虑以下对话框:

  • 网友:我想今天预订航班 .

  • 代理:去哪里?

  • 用户:罗马的天气怎么样?

  • 代理:在罗马,它是21°C .

  • 用户:罗马,那么 .

此时,除了先前保存的“今天”参数之外,我希望飞行意图得到识别并获得“罗马”作为参数 . 但是,我无法判断系统是否会识别航班或天气意图,因为句子可能同时适用于两者 - 取决于具体情况 .

我设法通过为每个对话主题定义主要和2个上下文相关参数意图来获得期望的行为(即,具有飞行的航班作为输出上下文,具有飞行的飞行时间作为输入和输出上下文,具有飞行的飞行目的地作为输入和输出通过为每个上下文设置1的生命周期,并在其他意图最终化后在代码中恢复它 - 以保持已经填充的插槽,并且还支持诸如“罗马”之类的短语“并理解他们的语境 . 我还考虑过动态改变意图优先级,不确定是否可能 .

话虽这么说,感觉这是我应该从基础设施开箱即用的东西 . 我指的是类似堆栈的意图优先级,因此最后一个未实现的意图上下文将获得最高优先级 . 你们有没有遇到过这样的问题?我是否遗漏了一些可以帮助我更自然地实现此类行为的关键功能?也许是一种干扰意图识别的方法?