如何在Webhook api.ai中触发多个Intent?

时间:2018-07-19 14:14:03

标签: actions-on-google dialogflow

我正在开发一个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

情况2:

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

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

我可能使用了错误的方法,还有其他解决方法吗?

我有一个后续问题。

  • 当我们将实现响应传递回对话流程时。 bot控制台上的响应打印将是默认的文本响应,如何获得“ fulfillmentText”作为响应。

谢谢你们。这是跟进意图场景。

enter image description here

1 个答案:

答案 0 :(得分:1)

这并不复杂,您有两个意图收集用户名/密码来做错了。

请尝试以下方式

enter image description here

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

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

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

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

enter image description here enter image description here 如果供应商不存在,请使用现有的意图,并在Dialogflow中将输入上下文设置为“ vendor-new”。

现在,需要注意的事情很少-可以使用系统实体@sys.given-name来收集username参数。但是使用非美国/英语名称不是很准确。我不确定这是否有所改善。其次,没有系统实体可以收集密码,因此您需要将实体设置为@sys.any,并且在Webhook中,需要使用正则表达式自行提取密码。顺便说一句-您不应该共享密码!

希望这对您有所帮助!