1

我是 Dialogflow 的新手,我创建了一个机器人,它通过不同的意图(例如名字、姓名、生日等)查询不同的用户信息。现在我正在使用一个函数来实现我需要来自不同意图的参数值。

  const {last_name, street, house_no, 
         zip_code, birthdate, 
          email} = agent.parameters;

在函数的输出中,参数被标记为“未定义”。我猜是因为 agent.parameters 仅指触发 webhook 的意图,它不会从所有其他意图中捕获参数值。有没有办法从其他意图中获取参数值?

4

1 回答 1

0

如果您想使用来自不同意图的参数值,您首先必须将它们保存在您的 webhook 中。Dialogflow 有一个名为Context的功能可以帮助您执行此操作。上下文有一个参数字段,您可以在其中存储值。因此,在您的第一个意图中,您可以通过创建上下文并将值添加到此上下文来存储它们。

第一个意图

  const {last_name, street, house_no, 
     zip_code, birthdate, 
      email} = agent.parameters;

agent.context.set('context_name', 5, {'lastName' : last_name, 'street': street});

在上面的示例中,5 用于指示上下文的生命周期。因此,这些值将可用于 5 轮对话。接下来,在第二个意图中,您需要获取刚刚设置的上下文以使用这些值。之后,您可以从上下文的参数字段中获取值。

第二意图

const context = agent.context.get('context_name');
const lastName = context.parameters.lastName;
const street = context.parameters.street;
于 2020-04-12T17:03:19.963 回答