我'我使用dialogflow来聊天机器人租用不同的建筑物(我的情况称为FMR)。我有一个新的FMR"意图如下图所示:
如您所见,FMR根据其设施有不同的租金价格。我有一个graphql数据库来存储FMR及其参数。我使用了webhook并编写了一段java脚本代码来获取FMR列表。每当用户说"设置一个名为TEST的新FMR,租金为两卧室,价格为1500美元"我的代码检查数据库中是否存在FMR名称(TEST)。如果它存在,我们应该询问用户是否要编辑现有FMR的参数,如果它不存在,则新的FMR将在数据库中创建。我的问题在于FMR存在于数据库中的第一部分。由于我只能在我自己的代码中检查它的存在,我可以在哪里要求用户编辑现有的FMR或否,并让他/她的响应继续工作?如何将子连接到我的代码并具有正确的上述方案?或者如何在用户说出"是"之后触发我的代码中的子意图。或"不"我的问题"编辑现有的FMR"?很抱歉有很长的描述,并提前感谢您的帮助
答案 0 :(得分:0)
我仍然对此对话流应该如何看起来感到困惑,但听起来它会是这样的:
用户说:"使用..."
创建一个名为 name 的新FMR如果" name"不存在,保存数据,回复"已创建名为 name 的FMR"并结束对话。
如果" name"存在,回复:" 名称 FMR存在。你想编辑吗?"
用户说:"没有"
回复:"应该命名什么?"
用户说新名称和处理重复如上所述。
用户说:"是"
保存数据,回复"名为 name 的FMR已更新",然后关闭对话。
在您的履行代码中,如果您需要询问是/否问题,您还会回复Context,并使用足够的信息设置参数,以便您记住用户已经说过的内容关于这个FMR,下次你的履行被召唤。
然后,您可以为"是"创建followup Intents和"不"响应。为每个人提供不同的动作设置,以便您在履行中区分它们。您还需要另一个具有此Context作为输入上下文的Intent,并且具有与用户将如何指定名称相匹配的示例短语(即 - 使用名为&#34的参数; fmr-name"类型为@ sys.any) - 这可以与原始Intent具有相同的Action设置。
当您再次调用您的履行时,您知道他们是否回答是(通过检查行动)。如果他们已经说过"是",您可以获得他们已经说过的以前的信息,并且可以保存并退出。
如果他们已经说过#34; no",您将提示输入新名称并再次使用您收到回复时需要记住的信息设置上下文。当他们回复时,您将检查新名称的参数并使用上下文中的值。