我正在尝试使用DialogFlow在Actions中构建一个基本的“问题/答案”应用程序。现在,我有两个意图:
意图1:用户说“问我一个问题”,意图回答“告诉我你自己”
意图2:我想捕捉用户对“告诉我自己的看法”的反馈,但是坦率地说,没有办法写出足够的训练短语来掩盖它。
我尝试跟随this suggestion,并让Intent 1发送一个称为class MOCForm(forms.ModelForm):
# your class definition as above
def clean(self):
if '_draft' in self.data:
# skip check
else:
# clean data
的输出上下文,而Intent 2则具有一个save_response
的输入上下文。然后,对于训练短语,我使用了save_response
当我尝试此操作时,它每次仅调用默认的后备意图。关于我可能在哪里出错的想法?
答案 0 :(得分:3)
您需要创建2个意图,在第一个意图中,您的训练短语是Ask me a question
,输出上下文将是save_response
,响应是您要向用户提出的问题。
然后在意图2中,您需要执行以下操作:
save_response
,以便仅将
在上下文中出现answer
,将实体类型指定为@sys.any
希望有帮助。
答案 1 :(得分:0)
通常,只有包含@sys.any
的 的训练短语的Intent可能并不总是如您所愿。
最好设置一个具有输入上下文设置的后备意图,以确保仅捕获处于该状态(在您的情况下为save_response
)的事物,然后使用在实现中捕获的全文。 / p>
以这种方式进行操作时,您不需要描述的“意图2”,或者,这将是您在Dialogflow UI中创建的后备意图。如果没有其他意图与用户所说的相符,则触发回退意图。
要创建后备意图,请选择Dialogflow用户界面右上方的三个点
然后选择“创建后备意图”
“后备意图”编辑器与普通“意图”编辑器非常相似。最大的区别是您输入的短语(并且您无需输入任何短语)将明确不与该Intent匹配,并且没有参数。其他方面(名称,传入上下文,启用状态)相同。