Я пытаюсь обновить свой навык с V1 до ASK SDK V2.У меня проблемы с использованием функции addErrorHandlers
на StandardSkillBuilder
.Когда я генерирую ошибку в своем намерении, мой пользовательский обработчик ошибок никогда не вызывается.Я не уверен, как его использовать.
index.ts
import { SkillBuilders } from 'ask-sdk';
import { LambdaHandler } from 'ask-sdk-core/dist/skill/factory/BaseSkillFactory';
// import intents
import LaunchIntent from './alexa-intents/launch.intent';
import CustomErrorHandler from './alexa-intents/custom-error-handler';
function buildAlexaLambdaHandler(): LambdaHandler {
return SkillBuilders.standard()
.addRequestHandlers(
new LaunchIntent()
)
.addErrorHandlers(new CustomErrorHandler())
.lambda();
}
export const handler = buildAlexaLambdaHandler();
launch.intent.ts (выдать ошибку теста)
import { HandlerInput, RequestHandler } from 'ask-sdk';
import { Response } from 'ask-sdk-model'
export default class LaunchIntent implements RequestHandler {
canHandle(handlerInput: HandlerInput): boolean {
const request = handlerInput.requestEnvelope.request;
return request.type === 'LaunchRequest';
}
handle(handlerInput: HandlerInput): Response {
const responseBuilder = handlerInput.responseBuilder;
const deviceId = handlerInput.requestEnvelope.context.System.device.deviceId;
if (deviceId) {
console.log('throwing error');
throw new Error('test error');
}
return responseBuilder
.speak('welcome')
.getResponse();
}
}
custom-error-handler.ts (попытка отловить ошибку теста)
import { HandlerInput, ErrorHandler } from 'ask-sdk';
import { Response } from 'ask-sdk-model';
export default class CustomErrorHandler implements ErrorHandler {
canHandle(handlerInput: HandlerInput): boolean {
return true;
}
handle(handlerInput: HandlerInput, error: Error): Response {
const request = handlerInput.requestEnvelope.request;
const deviceId = handlerInput.context.System.device.deviceId;
console.dir(error);
return handlerInput.responseBuilder
.speak('there was an error')
.getResponse();
}
}
Я запускаю свой навык локально, используя bespoken-tools
LambdaServer
:
import * as bst from 'bespoken-tools';
const server = new bst.LambdaServer('./src/index', 10000, true);
server.start(() => console.log('[init.dev]: server started and listening on port 10000!'));
В моих журналах консоли я вижу свое консольное сообщение от обработчика намерений запуска «ошибка выброса», но затем я никогда не вижу вызываемый CustomErrorHandler
или какие-либо журналы консоли от него,В симуляторе Alexa Developer Console я получаю «Возникла проблема с ответом на запрошенный навык», потому что CustomerErrorHandler
.
ответ не был добавлен.