在Alexa技能开发中,我们可以使用接口对象(Alexa Interface)和请求对象(Alexa Request)等工具来控制用户输入的持续时间。以下是一个示例代码,它使用了ask-sdk-core-for-nodejs库中的接口和请求对象,以及Node.js中的setTimeout()函数。
const Alexa = require('ask-sdk-core');
const MAX_SPEECH_INPUT_DURATION = 20; // 最大持续时间(秒)
const LaunchRequestHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest'; }, handle(handlerInput) { const speakOutput = '欢迎使用我的技能。请尽量在' + MAX_SPEECH_INPUT_DURATION + '秒内完成您的输入。';
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}, };
const SessionEndedRequestHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'SessionEndedRequest'; }, handle(handlerInput) { return handlerInput.responseBuilder.getResponse(); }, };
const ErrorHandler = {
canHandle() {
return true;
},
handle(handlerInput, error) {
console.log(Error handled: ${error.message});
return handlerInput.responseBuilder
.speak('抱歉,我没有理解您的意思。您可以再次尝试,或者请问其他问题。')
.reprompt('您可以再次尝试,或者请问其他问题。')
.getResponse();
}, };
const skillBuilder = Alexa.SkillBuilders.custom();
exports.handler = skillBuilder .addRequestHandlers( LaunchRequestHandler, SessionEndedRequestHandler, ) .addErrorHandlers(ErrorHandler) .withCustomUserAgent('sample/hello-world/v1.2') .lambda();
在上面的代码示例中,我们使用了MAX_SPEECH_INPUT_DURATION常量来定义最大持续时间(秒),并将其放在了LaunchRequestHandler处理程序中的欢