如何重用api.ai中的intent

时间:2017-08-10 18:11:47

标签: dialogflow actions-on-google

我需要一些帮助,因为我不太了解api.ai" context"。我甚至不知道"背景"解决了这个问题。

让我们假设您没有后续意图,从一个开始并且有两条路径应该在一个点上再次交叉。我想为这个交叉点只创建一个意图(我希望这个意图有两个父母)。我不想创建两个相同的意图,我想重用这个意图。

这可能吗?我检查了文档,论坛,甚至在这里我找不到任何东西。

1 个答案:

答案 0 :(得分:4)

简短回答:是的。理解为什么它是肯定的,对于更长的答案很重要。

意图与特定路径无关 - 它们在满足条件时被触发。在最简单的形式中,这些条件是用户说出的短语。更复杂的条件包括由设备触发的特定操作(例如欢迎操作)或特定上下文活动。您可以将这些结合起来 - 如果在contextA处于活动状态时说出一个短语,则可能会触发一个意图,而如果说上下文B处于活动状态,则可能触发不同的意图。意图列出哪些上下文必须才能被激活才能被触发。

这导致更长的答案:是的。你需要做的是让每个"分支"由一组特定的上下文管理,但是"加入点"不需要这些背景中的任何一种。

因此,让我们想象您正在编写一个动作,让您从冰淇淋店订购单品。 (单个项目,因为我不想进入跟踪订单的复杂性等)。您可以有以下意图:

  • 欢迎

    触发:欢迎行动

    发送:"欢迎。你想要一个冰淇淋或苏打水吗?

  • icecream.start

    触发:用户说"冰淇淋"

    发送:听起来不错。什么味道?

    设置上下文:ice_cream

  • icecream.flavor

    触发:context = ice_cream和用户提供有效口味(香草或巧克力)

    发送:我最喜欢的。什么尺寸?

    设置上下文:ice_cream

  • icecream.size

    触发:context = ice_cream和用户给出有效大小(孩子,小,中或大)

    发送"所以你想要一个冰淇淋蛋筒,是吗?"

    设置上下文:有序

  • soda.start

    触发:用户说" soda"

    发送:我也渴了。什么样的?

    设置上下文:soda

  • soda.flavor

    触发:context = soda和用户提供有效的汽水

    发送:不错的选择。什么尺寸?

    设置上下文:soda

  • soda.size

    触发:context = soda和用户给出有效大小(小,中,大)

    发送"所以你想要一个。是吗?"

    设置上下文:有序

  • order.placed

    触发:用户说"是" (确认订单)和背景是"订购"

    发送:"你想要餐巾纸吗?"

等等等。

在这种情况下,我们可以分成两个路径(每个路径都有相似但不完全相同的可能响应),然后与" order"一起返回。上下文。

(我应该补充一点,这只是真正涵盖了有关上下文的基础知识。它们还有更多内容,包括上下文的生命周期,如何使用多个活动的上下文,以及可以在上下文中设置的属性。)