实体与跟进意图

时间:2018-10-08 11:09:07

标签: dialogflow

假设我想订购比萨饼DialogFlow代理。要订购比萨饼,我们需要三件事:sizetypetoppings

如果我们想使用后续意图方法而不是使用实体,那么用户可以提供信息的组合将会非常多。

1:我要披萨->没有信息
2:我要小比萨->大小
3:我要小奶酪披萨->大小和类型
4:我要橄榄小芝士披萨->大小,类型和浇头
5:我想要带橄榄的小比萨饼->大小和浇头
...
等等

如何解决此问题?
如果我们有更多的实体(2 ^ n个组合),将会有很多组合

注意1:无法采用实体和插槽填充选项,因为如果我们走这条路,会遇到很多问题,例如重新提示循环,验证等。
有更好的解决方案吗?

注2::如果我们使用实体,则将其标记为必需,然后设置提示,如果它没有从用户那里得到期望的输入,那么它会多次陷入重新提示循环中,即不断询问用户对相同实体的相同(或随机)提示。在我的用例中,这不利于用户体验。如果我们改用跟进意图,那么我们可以为解决该问题的所有意图设置后备意图。 (请注意,这只是用例的一个例子)

enter image description here

This is another example为什么要使用跟进意图,它也解决了我的约会记录问题。我接受了@sys.date.recent并设置了一个后备意图来捕获诸如last week, last month之类的输入,这无法使用广告位来实现。

1 个答案:

答案 0 :(得分:1)

首先,请记住,Intent应该反映出用户所说的话,而不一定反映您在做什么。

表面上,尚不清楚为什么插槽填充(通过执行或使用内置提示)不能满足您的需求。由于您已经指出所有三位信息都是必需的(大小,类型和浇头),因此可以在短语中进行标记,并且Dialogflow会提示您缺少信息,直到获得所有信息为止。

几乎可以肯定,不是要使用跟进意图。当您始终发送特定的答复时,这些答复总是很好的,并且总是收到来自用户的非常狭窄的答复,但是如果您的操作的答复会提示用户以许多不同的方式答复,则这些答复就很糟糕。

相反,我将使用一个相关的概念:上下文。 (至少如果您不打算使用插槽填充。)当您问他们想要什么的问题时,请设置一个Context以便您知道他们是。然后拥有一个或多个将其作为输入上下文的Intent,它们接受用户可能说的各种内容。您的网络挂钩应查看您是否拥有所需的信息,如果没有,请提示他们您还在寻找什么。最后,提示您进行确认,但他们可能会说一些调整顺序的内容。