如果没有意图匹配,如何防止Google操作关闭对话?

时间:2019-06-04 12:57:42

标签: dialogflow actions-on-google

每当连续3次触发默认后备意图时,对话因响应而关闭时,我的测试应用都会退出对话。我该如何防止这种情况发生,并且仅在用户要退出操作时才退出操作。

2 个答案:

答案 0 :(得分:0)

Google文档中的操作提到了一个fn handle_client(mut stream: TcpStream) { // read 20 bytes at a time from stream echoing back to stream loop { let mut read = [0; 1028]; match stream.read(&mut read) { Ok(n) => { if n == 0 { // connection was closed break; } stream.write(&read[0..n]).unwrap(); } Err(err) => { panic!(err); } } } } 对象,您可以在No-match reprompting小节中了解该对象:

n

尽管conversation design最好不使用此变量-从而在计数器增加到3时让对话关闭-您可以尝试手动重置conv.data.fallbackCount,例如:

 app.intent('Default Fallback Intent', (conv) => {

 conv.data.fallbackCount++;

 // Provide two prompts before ending game

 if (conv.data.fallbackCount === 1) {
   conv.contexts.set(DONE_YES_NO_CONTEXT, 5);
   conv.ask('Are you done playing Number Genie?');
 } else {
   conv.close(`Since I'm still having trouble, so I'll stop here. ` +
     `Let’s play again soon.`);
 }

});

答案 1 :(得分:0)

至少现在使用新的 Google Action,您可以根据 NO_MATCH 意图再次将用户重定向到当前场景。

基本上在您刚刚设置的 webhook 中:

webhookResponseJson.scene.next.name = webhookRequestJson.scene.name