我正在使用Dialogflow创建一个HR聊天机器人。我无法找出使机器人程序处理直接问题和以上下文方式提出的问题的正确方法。例如:
用户:我想知道一年内我能得到多少叶子
Bot:您得到x片叶子
用户:好的,那我该如何申请?
博特:按照此流程申请休假
对话1:
用户:我想知道一年内我能得到多少叶子
Bot:您得到x片叶子
对话2:
用户:我想知道如何申请休假
博特:按照此流程申请休假
我尝试过的方法:
1)添加输入和输出上下文以处理上下文情况并将直接问题添加到知识库。 这种方法的问题在于,由于我们不能在知识库中提供多个短语,因此大多数直接问题都不匹配
2)有2个意图,一个具有输入和输出上下文,一个用于处理直接问题。 (例如:一个意图是 $.ajax({
type: "POST",
url: GetReportLast5SellAndBuyURL,
data: JSON.stringify({ItemCode:itemCode}),
datatype: "JSON",
contentType: "application/json; charset=utf-8",
processData: false
}).done(function (msg) { ... somethings ...});}
,它将同时设置输入和输出上下文,并且将具有训练词组,例如leaves.apply.context
,而另一个意图how do i apply for this
,将具有训练词组,例如{{1 }},并且没有上下文)。我不确信这是正确的方法,因为我本质上是针对具有相同回答的同一问题创建两个意图。
那么有没有推荐的方法来解决这个问题?
答案 0 :(得分:0)
我认为没有推荐的方法,这是一个品味问题。您的解决方案是解决此问题的一种好方法,但我认为您不会回避这样一个事实,即如果您想允许后续问题也可以直接解决,那么您将不得不做出同样的回应。由于上下文。
如果您真的不想为相同的响应创建两个意图,那么我认为您可以通过创建两个意图并删除上下文流来锻炼此场景。只需创建一个HowManyLeavesAvailableIntent
和一个HowToApplyForLeaveIntent
而没有任何上下文,然后训练HowToApplyForLeaveIntent
触发将跟踪HowManyLeavesAvailableIntent
并为HowToApplyForLeaveIntent
提出问题的短语。由于缺少上下文,这可能不是理想的,因为它可以创建与意图的怪异映射,但是它使您只有一个意图来申请请假。