如何获取从 Alexa 响应到用户回复的时间?
How to get time passed from Alexa response to user reply?
是否可以让用户使用 alexa-sdk
来回答来自 Alexa 的命令所花费的时间?为了使其更直观,我正在尝试测量以下内容:
User says: "Alexa open my app"
Alexa says: "Welcome to my app, say next to go to the next section"
-- A few seconds pass here, this is what I need to know --
User says: "Next"
我在文档中找不到任何内容,我通常会尝试使用 process.hrtime
之类的东西在做出响应之前和之后启动计时器,但是我的处理程序看起来像这样:
let timer;
const StartIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'StartIntent'
);
},
handle(handlerInput) {
timer = process.hrtime();
const speechText = 'Welcome to my app, say next to go to the next section';
return handlerInput.responseBuilder
.speak(speechText)
.reprompt(speechText)
.getResponse();
}
};
const NextIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name ===
'NextIntent'
);
},
handle(handlerInput) {
const diff = process.hrtime(timer);
const timeInNanoseconds = diff[0] * 1e9 + diff[1];
return handlerInput.responseBuilder
.speak(`${timeInNanoseconds} nanoseconds`)
.getResponse();
}
};
然而,这在 Alexa 启动命令之前开始计数,所以我得到的时间是 Alexa 说出命令所花费的时间 + 用户延迟回复。
现在我用秒表测量了 Alexa 的响应时间,我从总时间中减去它,但它不太理想。
Alexa停止说出命令到用户开始响应的时间信息是用户隐私信息,不会暴露给开发者。
注意:您当前使用秒表和减法的方法无法给出正确的时间度量,因为您没有考虑用户设备将信息发送到 AVS(Alexa 语音服务)云所花费的时间,并且AVS 调用您的技能 lambda 所花费的时间。
只需添加 > SSML 标签
示例:-
const speakOutput = "Hello, here is your test <break time = '300ms'/>" ;
handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
是否可以让用户使用 alexa-sdk
来回答来自 Alexa 的命令所花费的时间?为了使其更直观,我正在尝试测量以下内容:
User says: "Alexa open my app"
Alexa says: "Welcome to my app, say next to go to the next section"
-- A few seconds pass here, this is what I need to know --
User says: "Next"
我在文档中找不到任何内容,我通常会尝试使用 process.hrtime
之类的东西在做出响应之前和之后启动计时器,但是我的处理程序看起来像这样:
let timer;
const StartIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'StartIntent'
);
},
handle(handlerInput) {
timer = process.hrtime();
const speechText = 'Welcome to my app, say next to go to the next section';
return handlerInput.responseBuilder
.speak(speechText)
.reprompt(speechText)
.getResponse();
}
};
const NextIntentHandler = {
canHandle(handlerInput) {
return (
handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name ===
'NextIntent'
);
},
handle(handlerInput) {
const diff = process.hrtime(timer);
const timeInNanoseconds = diff[0] * 1e9 + diff[1];
return handlerInput.responseBuilder
.speak(`${timeInNanoseconds} nanoseconds`)
.getResponse();
}
};
然而,这在 Alexa 启动命令之前开始计数,所以我得到的时间是 Alexa 说出命令所花费的时间 + 用户延迟回复。
现在我用秒表测量了 Alexa 的响应时间,我从总时间中减去它,但它不太理想。
Alexa停止说出命令到用户开始响应的时间信息是用户隐私信息,不会暴露给开发者。
注意:您当前使用秒表和减法的方法无法给出正确的时间度量,因为您没有考虑用户设备将信息发送到 AVS(Alexa 语音服务)云所花费的时间,并且AVS 调用您的技能 lambda 所花费的时间。
只需添加
示例:-
const speakOutput = "Hello, here is your test <break time = '300ms'/>" ;
handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();