后续行动意图可以有多于一名父母吗?
例如,我的程序将是
from(A)
if(A.response == yes){
go_to_intent(B)
go_to_intent(C) //A-->B-->C
}
else
go_to_intent_(C) //A-->C
可以看出,B和A都是C的可能父母。
那么如何将C设置为A和B的后续意图?
答案 0 :(得分:1)
简而言之-不。您不应该“去”意图-意图代表不同条件下的用户输入。
因此,在您的示例中,用户说过或做过与意图A匹配的事情。作为响应,您的代理问一个问题。
现在...您在意图A,B和C中完成Webhook时所要做的事情完全不同。您可以为B和C调用相同的函数,而只是从每个函数返回不同的消息。
目的不是您的代理做什么—而是您的用户做什么。
更新
根据您在注释中的示例,我想重复一遍-不要将Intents视为代理在说什么,而应将其视为用户在说或做的事情。
基于此,我将以这种方式重新表达您的意图:
您注意到Intent B1,C和C1都具有非常相似但不完全相同的实现。因此,在您的webhook中,他们基本上都可以调用相同(或相似)的代码。但是您会注意到它们是在稍微不同的条件下触发的,因此每个人都需要不同的Dialogflow意图。
我添加了Intent B1,因为这很可能是用户对您的回应。在对话式用户界面中,我们没有为他们提供电话菜单-他们可以像回答另一个问相同问题的人一样做出回应。
还请记住,您可能要构建的其他Intent在每种状态下的处理方式也有所不同。例如,当“询问城市”上下文有效时,如果用户说“是”,“否”或城市之外的其他字眼,则您可能想澄清您的要求。
还要注意,从技术上讲,这些都不是跟进意图。跟进意图只是围绕上下文的一些可视化涂层。您永远不需要使用“跟进意图”-它们只是使一些非常具体的事情井井有条。就您而言-它们也会引起问题。如果您在后续活动中接受的全部是“是”和“否”,那么用户说其他话是不允许的,那么您最终将陷入更加僵硬的对话。关于每种情况的重要部分不是是否进行后续操作-它们是设置输出上下文的能力,并且只有在将这些上下文指定为输入上下文时才触发Intent。