如何在 api.ai 中重复使用意图

How can I reuse an intent in api.ai

我需要一些帮助,因为我不太了解 api.ai "context"。我什至不知道 "context" 是否解决了问题。

假设你有几个 follow-up 意图,你从一个开始,有两条路径应该再次相交于一点。我只想为这个交点创建一个意图(我想为这个意图创建两个 parents)。我不想创建两个相同的意图,我想重复使用这个意图。

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

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

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

这导致更长的答案:是的。您需要做的是让每个 "branch" 由一组特定的上下文管理,但 "join point" 不需要这些上下文中的任何一个。

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

  • 欢迎光临

    触发者:欢迎动作

    发送:“欢迎。您要冰淇淋甜筒还是汽水?

  • icecream.start

    触发者:用户说 "ice cream"

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

    设置上下文:ice_cream

  • icecream.flavor

    触发者:上下文 = ice_cream 并且用户给出了有效的口味(香草味或巧克力味)

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

    设置上下文:ice_cream

  • icecream.size

    触发者:上下文 = ice_cream 并且用户提供了有效尺码(儿童、小号、中号或大号)

    发送"So you want a ice cream cone, is that right?"

    设置上下文:有序

  • soda.start

    触发:用户说 "soda"

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

    设置上下文:苏打水

  • soda.flavor

    触发者:context = soda 和用户提供有效的苏打水

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

    设置上下文:苏打水

  • soda.size

    触发因素:context = soda 和用户提供的有效尺码(小号、中号、大号)

    发送"So you want a . Is that right?"

    设置上下文:有序

  • order.placed

    触发:用户说 "yes"(确认订单)并且上下文是 "ordered"

    发送:"Do you want napkins?"

等等等等等等

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

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