覆盖用户名的dialogflow

时间:2019-02-15 08:49:27

标签: node.js json dialogflow chatbot

在对话流中创建聊天机器人时遇到问题。

当我输入

user : hi
Bot : What is your name? 
User : xyz
Bot : hi , xyz 
User : abc 
Bot : hi ,abc 

当我将寿命设置为1以上时,它将覆盖名称。此后,我必须问几个问题,并在最后打印带有要求数据的名称。

当我将寿命设置为大于1时,不允许我以下一个意图打印名称。

有什么解决办法吗?

对话示例

click here for screenshot

意图列表

these are my intents

欢迎意向

this my welcome intent

GetName目的

this myGetName intent

获取电子邮件意图

this mygetemail intent

1 个答案:

答案 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(以及其他意向类似)来实现。像这样:

enter image description here