后续意图未在 intentMap.set 中触发处理程序方法 - Dialogflow

A follow-up intent not firing a handler method in intentMap.set - Dialogflow

我有一个包含多个嵌套后续意图的意图,如下所示:

然后在实现函数的代码中,数字 70 触发了 giveChoice,但其余的没有触发。为什么?如何使用后续意图执行此操作?

let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  //Intent - 70
  intentMap.set('0068 - Intents - 70', giveChoice);
  intentMap.set('0068 - Intents - 70 - no', giveFirstNextQuestion);
  intentMap.set('0068 - Intents - 70 - no - no', giveSecondNextQuestion);
  intentMap.set('0068 - Intents - 70 - no - no - no', giveThirdNextQuestion);
  // intentMap.set('your intent name here', googleAssistantHandler);
  agent.handleRequest(intentMap);

我成功重现并解决了您的问题。我总结一下要点:

  1. 为您要使用的所有意图和后续意图启用此意图的 webhook 调用(在实现部分)。

  2. 您创建要使用的函数,"giveChoice","giveFirstNextQuestion",...应遵循以下结构:

  function givechoice(agent){
    agent.add(`Would you like this response to be recorded?`);
    agent.setContext({
      name: 'first-call',
      lifespan: 2,
    });
  }

  function afirmative(agent){
    agent.getContext('first-call');
    agent.add(`Thank you for accepting`);
  }
  1. 注意上面的案例我只做了一个跟进意图。例如,如果您执行第三个,则第二个函数必须具有 getContext 和 setContext 才能正常工作。

  2. 最后一部分和你做的完全一样。在我的例子中:

  let intentMap = new Map();
  intentMap.set('0068 - Intents - 70',givechoice);
  intentMap.set('0068 - Intents - 70 - yes',afirmative);
  agent.handleRequest(intentMap);