我正在开发一个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
我发现的一件事,我必须使用输出上下文来触发意图。但是在这种复杂的情况下我该怎么办呢?以及如何使用“输出上下文”调用多个跟进意图?
我可能使用了错误的方法,还有其他解决方法吗?
我有一个后续问题。
谢谢你们。这是跟进意图场景。
答案 0 :(得分:1)
这并不复杂,您有两个意图收集用户名/密码来做错了。
请尝试以下方式
当您检测到您的供应商时-在webhook中设置上下文,例如“ vendor-present
”
如果供应商不存在,请在webhook中设置上下文,例如“ vendor-new
”
使用寿命(上下文左侧的数字)设置上下文的生存期或有效性。
为现有供应商创建单独的意图-说“供应商数据收集”以收集用户名和密码。在Dialogflow中将输入上下文设置为“ vendor-present
”。在这里,您将以相同的意图将它们收集为参数(请参见下图)。将这些参数标记为“必需”,以便它们必须由您的机器人收集。使用提示部分来输入您的回答问题,以收集诸如“请提供用户名”之类的信息。
如果供应商不存在,请使用现有的意图,并在Dialogflow中将输入上下文设置为“ vendor-new
”。
现在,需要注意的事情很少-可以使用系统实体@sys.given-name
来收集username参数。但是使用非美国/英语名称不是很准确。我不确定这是否有所改善。其次,没有系统实体可以收集密码,因此您需要将实体设置为@sys.any
,并且在Webhook中,需要使用正则表达式自行提取密码。顺便说一句-您不应该共享密码!
希望这对您有所帮助!