我正在写信给您询问有关Dialogflow履行的问题。
我正在尝试为Google Home创建代理,而我的后端基本上是用TypeScript实现的Web挂钩。
在我设计的对话中,用户要求座席执行操作,并提供类别作为参数。现在,可能类别的集合会随时间变化,所以我使用实体类型 @ sys.any 来检测参数。
我的问题是,在履行目标时,我尝试确定代理商需要采取行动的特定类别,可能是所请求的参数与多个类别匹配的情况,所以我需要跟进意图,要求用户明确说明要选择的实际类别。
例如对话可能如下:
Agent: 'Welcome.'
User: 'Do action on **category**'
Agent: 'I have found **categoryA**, **categoryB** and **categoryC**. Please specify which one you want to select.'
User: 'Select the second || Select **categoryB**'
Agent: 'Great, action performed on **categoryB**'
现在,我能够使用跟进事件和上下文建立此对话:例如,我创建了两个跟进事件,一个跟进事件可以检测到数字,而另一个可以检测到文本,因此用户可以根据某个对象来选择一个或多个它说(如果用户说“第一个”,则会检测到一个数字,并且在后端,我循环选择与该索引相关联的类别的类别。如果用户说“ categoryX”,我会执行类似的操作,但是在不同的意图)。
我想了解的是:通过Node.js实现API实现这种对话的正确方法是什么?
谢谢您的帮助。
答案 0 :(得分:0)
根据您的描述-您所做的正是正确的事情(尽管您不需要跟进意图)。
当您回答用户具有的选项时,您将包括一个可能包含一系列可能结果的上下文。然后,您可以创建将其作为输入上下文的Intent,匹配数组的索引(将其称为match.index Intent)或按名称(match.name Intent)进行匹配。
在您的webhook中,match.index Intent将确定实际选择的类别,然后调用负责该类别的函数。同样,用于match.name的webhook将使用带有名称的参数,并调用相同的函数来处理该类别。