在对话流中创建聊天机器人时遇到问题。
当我输入
user : hi
Bot : What is your name?
User : xyz
Bot : hi , xyz
User : abc
Bot : hi ,abc
当我将寿命设置为1以上时,它将覆盖名称。此后,我必须问几个问题,并在最后打印带有要求数据的名称。
当我将寿命设置为大于1时,不允许我以下一个意图打印名称。
有什么解决办法吗?
对话示例
意图列表
欢迎意向
GetName目的
获取电子邮件意图
答案 0 :(得分:0)
在接受他们的名字并提示输入电子邮件之后,您有两个仍然有效的上下文:
awaiting_name
上下文的生命周期为4(因为它是在两个之前的欢迎Intent中设置的)awaiting_email
上下文的寿命为5(因为它是刚刚设置的)这意味着两个可能的上下文可以匹配:
Get Name
上下文(因为awaiting_name
有效)Get Email
上下文(因为awaiting_email
有效) Dialogflow正在选择Get Name
上下文,这是完全有效的。在存在多个匹配项时,用于选择Intent的确切规则很复杂,但是可以选择其中任何一个。
当您推测时,可以将寿命设置为1,这意味着您将只接受名称或电子邮件的下一个答案。这是可行的,但不是一个好主意,因为这意味着他们不能问问题或寻求帮助。这是非常不交谈的。
更好的办法是在您不再需要上下文时将其清除。因此,您的Get Name
意向可以通过将awaiting_name
寿命设置为0(以及其他意向类似)来实现。像这样: