Dialogflow es 如何使用DialogFlow触发意图?
我与dialogflow进行了一次对话,选择了最喜欢的饮料类型,然后根据饮料的类别,会有后续问题(即后续意向) 在“意图”选项卡下,我有以下意图:Dialogflow es 如何使用DialogFlow触发意图?,dialogflow-es,Dialogflow Es,我与dialogflow进行了一次对话,选择了最喜欢的饮料类型,然后根据饮料的类别,会有后续问题(即后续意向) 在“意图”选项卡下,我有以下意图: 默认欢迎意图 喜爱的饮料 咖啡意向 跟进 软饮料意向 跟进 果汁原汁 跟进 我在“最爱的饮料”中使用了培训短语,并询问: “你最喜欢的饮料是什么?” 并将响应存储在实体@drink中 但我不知道如何根据用户的反应触发“软饮料”、“果汁”或“咖啡”的意图。如果我在写代码,我会使用switch语句或If/else,但这个问题在这里不适用
- 默认欢迎意图
- 喜爱的饮料
- 咖啡意向
- 跟进
- 软饮料意向
- 跟进
- 果汁原汁
- 跟进
一般来说,谢谢你——把意图看作是捕捉用户可能说的话。虽然意图也有回复,但这不是它们的主要目的 根据你到底想做什么,有几种方法。这三种方法都需要实现代码,您可以使用内置编辑器来实现,或者(更好)在您的控制下使用webhook 如果您想使用意向确定如何回复 这并不是最好的主意,但它是可能的。在您的实现代码中,您将有一个switch语句,该语句针对用户选择的参数。基于此,您将从您的实现中触发一个事件。您的其他意图将使用可能的事件填充事件部分,系统将选择触发哪个事件并用于实现/响应 对于你想要的东西来说,这可能有点困难 根据评论中的问题进行更新以澄清。直接发送事件会触发不同的意图。有时候这是你想要的,但这有点特殊。大多数情况下,您希望使用以下方法之一。特别是,您应该记住,意图主要是用来表示用户试图做什么(他们“打算”做什么),而这主要是由他们所说的来表示的。意图可以很好地捕捉人们复杂的谈话方式,而不是强迫他们进入电话树式的“对话” 如果您只想以不同方式回复每个可能的用户响应 您可以使用fulfillment webhook代码来确定应该向用户发送什么响应。您不会指明正在使用的库,但通常会编写代码,根据所选饮料类型确定应向用户发送的消息,并将其作为语音和/或显示文本包含在列表中 在这种情况下,你不会使用另一种特定于饮料的意图。不需要它们。除非 您希望以不同的方式回复每个用户的响应,后续对话可能会有所不同 记住——意图确实最适合于指定您期望用户说什么。不是你期望的回答。因此,根据他们是否选择咖啡(你可能会问他们想要多少糖)或果汁(你可能会问他们是否想要吸管),你可能会有不同的对话,这是合理的 在这种情况下,您仍然会像前一种情况一样(使用您的履行在回复中包含一条定制的消息,可能会提示他们提供该信息),并在回复中包含一条指示他们选择的信息。您应该将此作为响应的一部分,而不是将其设置为意图,因为您希望为每种饮料类型命名不同的名称 然后,您可以创建特定于每种饮料类型的意图,以及您今天对用户的期望。对于特定于咖啡的内容,您可以将输入上下文设置为要求已设置咖啡上下文。soda上下文(如果指定了soda)等等 更新,因为你在评论中表示这听起来像是你感兴趣的途径 在这个场景中,您将按照您描述的方式(几乎):
drink
参数的值
const drink = request.body.queryResult.parameters.drink;
switch( drink ){
case 'coffee':
context = 'order_coffee';
msg = 'Do you want sugar with that?';
break;
case 'soda':
context = 'order_soda';
msg = 'Do you want a bottle or can?';
break;
case 'juice':
context = 'order_juice';
msg = 'Would you like a straw?';
break;
}
// Format JSON setting the message and context
order\u coffee
上下文处于活动状态,并且用户用“No”或“Just black”或其他有效组合回答您的问题,则会触发该上下文
但是如果order\u juice
上下文处于活动状态,并且用户回答“否”,那么您可能需要不同的上下文(比如“juice.nostraw”)
如果用户在order\u soda
上下文处于活动状态时说“No”,那就没有多大意义了,因此您希望尝试将他们引导回手头的主题
记住,目的是为了用户所说的。不是因为你的语音代理在说什么。你的代理通常不会“触发”一个意图——用户会根据他们说的话来触发它
在我给出的示例中,可能还有其他意图对这些上下文中的每一个都有效。例如,您可能有一个“coffee.sugar”意图,该意图对order\u coffee
上下文有效,并回答他们说“是”。还有一个他们可能会说“只是奶油”。他们可能还会说很多其他的话,但对你的经纪人来说,他们给你的指示与点咖啡有关,这一点很重要
至于