我应该如何使用 dialogflow 指定特定意图

What should I do to specify certain intent with dialogflow

我创建了 3 个意图。

Intent:lost.password.weblogin
Intent:lost.password.2step
Intent:lost.password.credit

eg)
user says: I forgot login password
->Intent:lost.password.weblogin
user says: I forgot 2 step password
->Intent:lost.password.2step
user says: I forgot Credit card PIN
->Intent:lost.password.credit

如果用户说“我忘记了密码”, 我应该怎么做才能指定特定意图?

用户说:我忘记了密码。 =>???

我认为解决该问题的最佳方法是重新考虑您使用 Intents 的方式。你的方法是开始思考问题的好方法,但是当你 运行 遇到像你这样的问题时,可能需要重新思考。

首先 - 请记住,Intent 代表用户所说的内容,而不是您处理他们所说内容的方式。它代表了用户打算做什么。

从这里,我们可以看出所有四个短语实际上都在尝试做同样的事情 - 表明他们忘记了他们的登录信息。他们如何尝试做到这一点是一个额外的细节。

因此,您可能希望通过仅创建一个带有参数的 Intent 来解决此问题,该参数采用他们想要的登录方式。您甚至可以将此参数设为强制性,因此如果他们不提供,Dialogflow 将提示它特别。这将是一个 Intent,而不是您建议的三个。

为此,您可能需要创建一个如下所示的实体:

Select 左侧实体旁边的加号。确保为实体类型命名(我在这里将其设置为 "passwordMethod"),然后输入对您有意义的三个实体。完成后点击保存按钮。

完成此操作后,您可以使用一些使用这些实体的示例短语来创建您的 Intent。然后您会看到 Dialogflow 会为您挑选参数 - 确保您将其标记为必需。确保您已打开 webhook fulfillment 并保存您的 Intent。

您的 webhook 将使用 "lost.password" Intent 调用,并且 passwordMethod 参数设置为实体值之一:"login"、“2fa”或 "pin".

您现在可以根据参数的值做出相应的响应。在您拥有的一个 Intent Handler 中,您将查看参数设置的内容,然后调用 webhook 中的正常函数来处理它。这是目前非常标准的编程 - 您不需要多个 Intent 或 Intent Handlers,只需要不同的函数来完成工作并发回响应。