DialogFlow 日期意图总是在另一个类似的日期意图上触发

DialogFlow date intent always triggered over another similar date intent

大家好,

我遇到的情况是在 Dialogflow 中为 Flights 预建代理构建履行服务。下面是应用程序中的示例交互。

  1. 我想要从伦敦飞往纽约的 return 航班 - DialogFlow/Fulfilment 后端接用户机票类型[return],至[纽约]和来自[伦敦]实体。
  2. 履行服务响应 - 您计划什么日期旅行?例如下周星期一或 4 月 1 日
  3. 用户输入明天 - Dialogflow 捕获用户出发日期实体,我们将此 Intent 称为出发意图。
  4. 履行服务现在继续询问 - 你打算什么时候return?例如,下周星期一或 4 月 1 日,我将其称为 Return Intent
  5. 用户进入下周星期一 - Dialogflow 仍将匹配第 3 步中的出发意图,这将导致对同一 Return 日期的用户返回响应。但是,如果用户输入 i will return next week monday 那么 return 日期意图匹配。

所以我的问题是如何使 Return Intent 与 Departure Intent 匹配,因为我已经捕获了 Departure 的数据并且我不能期望用户也使用与日期一起使用的短语?

已更新受影响 Intent 的屏幕截图

  1. URL 到日志 - https://jsbin.com/wofefivuqo/edit?js sample code

  2. Return 截图 -

一般的解决方案是在确定出发日期后设置上下文。 (例如,您可以将其称为 departure-set。)然后,您将获得 return 日期的 Intent 设定为在传入上下文中表示它期望 departure-set。在这些情况下,它会优先考虑具有匹配上下文的 Intent,而不是不匹配(或具有不同上下文)的 Intent。

在您的示例中,您有两个输入上下文,这很好,但这意味着 两个 上下文必须存在才能触发 Intent。我不知道这两个 Context 的生命周期是多少,但是我注意到你的 departure-set Context 的生命周期只有 1,这意味着它只会在用户的下一次响应时有效。如果您对 flight 语境做了同样的事情,那么它在对话中可能不再有效。