首页 > 解决方案 > 如何在 Webhook api.ai 中触发多个 Intent?

问题描述

我正在开发一个 api.ai 机器人,它将在数据库中搜索供应商名称。

a ) 如果供应商存在 -> 提供用户名 -> 提供密码

b)如果供应商不存在->(添加供应商->是)或(添加供应商->否)

我有一个 webhook 正在检查供应商是否存在于数据库中。

机器人场景:(示例)

情况1:

User: Do Alpha exist as a vendor?
Bot: yes, Alpha exist in Database. Please Provide User Name.
User: abc@gmail.com
Bot: Please Provide Password?
User: abcdef
Bot : Welcome

案例二:

User: Do Beta exist as a vendor ?
Bot: No Beta is not a vendor. Do you want to Register?

Case 1:
       User: Yes
       Bot: Please fill this Form.
Case 2:
       User: No
       Bot: Is there any other way I can help

我想通了一件事,我必须使用输出上下文来触发意图。但是在这种复杂的情况下我该怎么做呢?以及如何使用输出上下文调用多个来跟进意图?

我可能使用了不好的方法,还有其他方法可以解决这个问题吗?

我确实有一个后续问题。

感谢你们。这是后续的 Intent 场景。

在此处输入图像描述

标签: actions-on-googledialogflow-es

解决方案


这并不复杂,您有两个收集用户名/密码的意图是错误的。

试试下面的方法

在此处输入图像描述

当您检测到您的供应商存在时 - 在 webhook 中设置上下文,例如,“ vendor-present

当供应商不存在时 - 在 webhook 中设置上下文,例如,“ vendor-new

使用寿命(上下文左侧的数字) 设置上下文的生命周期或有效性。

为现有供应商创建一个单独的意图 - 说“供应商数据收集”以收集用户名和密码。vendor-present在 Dialogflow 中将输入上下文设置为“ ”。在这里,您将以相同的意图将这些作为参数收集(见下图)。将这些参数标记为“必需”,以便您的机器人必须收集它们。使用提示部分将您的回答问题用于收集诸如“请提供用户名”之类的信息。

在此处输入图像描述 在此处输入图像描述 如果供应商不存在,请使用现有意图并将输入上下文设置为vendor-newDialogflow 中的“”。

现在,有几件事需要注意——用户名参数可以使用系统实体来收集@sys.given-name。但对于非美式/英文名称,它不是很准确。我不确定这是否有所改善。其次,没有系统实体来收集密码,所以需要@sys.any在webhook中设置实体为and,需要自己使用正则提取密码。顺便说一句 - 你不应该分享密码!

希望这对您有所帮助!


推荐阅读