后续意图未在 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);
我成功重现并解决了您的问题。我总结一下要点:
为您要使用的所有意图和后续意图启用此意图的 webhook 调用(在实现部分)。
您创建要使用的函数,"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`);
}
注意上面的案例我只做了一个跟进意图。例如,如果您执行第三个,则第二个函数必须具有 getContext 和 setContext 才能正常工作。
最后一部分和你做的完全一样。在我的例子中:
let intentMap = new Map();
intentMap.set('0068 - Intents - 70',givechoice);
intentMap.set('0068 - Intents - 70 - yes',afirmative);
agent.handleRequest(intentMap);
我有一个包含多个嵌套后续意图的意图,如下所示:
然后在实现函数的代码中,数字 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);
我成功重现并解决了您的问题。我总结一下要点:
为您要使用的所有意图和后续意图启用此意图的 webhook 调用(在实现部分)。
您创建要使用的函数,"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`);
}
注意上面的案例我只做了一个跟进意图。例如,如果您执行第三个,则第二个函数必须具有 getContext 和 setContext 才能正常工作。
最后一部分和你做的完全一样。在我的例子中:
let intentMap = new Map();
intentMap.set('0068 - Intents - 70',givechoice);
intentMap.set('0068 - Intents - 70 - yes',afirmative);
agent.handleRequest(intentMap);