我正在尝试使用操作sdk在google操作会话结束时寻求用户反馈。
根据Actions文档(https://developers.google.com/actions/assistant/conversation-exits),我已经设置了取消意图
"conversations" : {
...
"inDialogIntents": [
{
"name": "actions.intent.CANCEL"
},
...
在我的函数代码中,我正在调用SimpleResponse
,如下所示:
app.intent('actions.intent.CANCEL', (conv, input) => {
conv.close(new SimpleResponse({
speech: 'Kindly rate between 1 and 5,
text: 'Rate between 1 and 5'
}));
});
当用户说goodbye
时,上述代码被调用。会听到语音并显示文本,但是对话会立即随着耳塞退出。
文档中提到系统将在退出前等待2秒钟,但似乎立即这样做。有没有办法让这个工作?谢谢
答案 0 :(得分:0)
我不清楚您想要实现什么。首先,只要您使用conv.close()
方法,就将结束对话。如果要保持麦克风打开,则需要使用conv.ask()
方法。但是我不确定ID是否可以将conv.ask()
与actions.intent.CANCEL一起使用,因为在那里发生该事件是为了让用户离开,而不是继续进行对话。但是我不确定%100,您需要尝试一下。
如果您要实现的目标是这样的:
用户:取消
系统:您如何评价我们的互动?
用户:好。
耳机
然后,以我的拙见,您可能不应该(而且正如我所说的那样)。文档明确指出自定义退出行为的目的是:
清理您的履行逻辑并最后一次回应用户。
此外,文档并没有说系统将等待用户响应2秒钟。它说请求的执行(您完成请求的超时)为2秒。加;如果用户正在取消会话中的对话,则很有可能是该交互未成功。我宁愿创建与回退意图和满意路径相关的反馈对话框转弯。
不过,请尝试改用conv.ask()
,让我知道是否可行。 (请通过评论让我知道。)无论哪种情况,我都会考虑以其他方式获得反馈。