在对话流中处理直接问题和上下文问题的正确方法是什么?

What is the right approach for handling direct and contextual questions in dialogflow?

我正在使用 Dialogflow 创建一个 HR 聊天机器人。我无法找出让机器人处理直接问题和以上下文方式提出的问题的正确方法。例如:

上下文案例:

网友:我想知道我一年能有多少叶子

机器人:你得到 x 片叶子

用户:好酷我要怎么申请呢?

机器人:请按照此流程申请休假

直接案例(2 次带有直接问题的独立对话):

对话 1:

网友:我想知道我一年能有多少叶子

机器人:你得到 x 片叶子

对话 2:

用户:我想知道如何请假

机器人:请按照此流程申请休假

我尝试过的方法:

1) 添加输入和输出上下文以处理上下文案例并将直接问题添加到知识库中。 这种方法的问题在于,由于我们无法在知识库中给出多个短语,因此大多数直接问题都不匹配

2) 有 2 个意图,一个具有输入和输出上下文,一个用于处理直接问题。 (例如:一个意图是 leaves.apply.context,它会同时设置输入和输出上下文,并且会有像 how do i apply for this 这样的训练短语,另一个意图 leaves.apply.direct 会有像 [=13 这样的训练短语=] 并且没有上下文)。我不相信这是正确的方法,因为我实际上是在为具有相同响应的相同问题创建两个意图。

那么有没有推荐的方法来解决这个问题?

我认为对此没有推荐的方法,这是个人喜好问题。你的解决方案是解决这个问题的好方法,但我认为你不会回避这样一个事实,即如果你想让后续问题也可以直接接近,你将不得不对相同的响应做出额外的意图由于上下文。

如果您真的不喜欢为同一个响应创建两个意图,我认为您可以通过创建两个意图并删除上下文流来解决这个问题。只需创建一个没有任何上下文的 HowManyLeavesAvailableIntent 和一个 HowToApplyForLeaveIntent,然后训练 HowToApplyForLeaveIntent 触发后续 HowManyLeavesAvailableIntent 的短语并直接向 HowToApplyForLeaveIntent 提问。由于缺少上下文,这可能不是理想的,因为它可以创建奇怪的意图映射,但它允许您只有一个意图来申请休假。