Node.js
ask
AlexaSkillsKit

ask v2の俺的テンプレ

色々間違いがいあるかもだから随時更新して行く予定

$ mkdir sample

$ cd sample
$ npm init
$ npm install --save ask-sdk

index.js

'use strict';

const Alexa = require('ask-sdk');
const other = require('./other.js');

const LaunchRequestHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
},
handle(handlerInput) {
var msg = 'LaunchRequestgが呼ばれたときに発動します';

return handlerInput.responseBuilder
.speak(msg)
.reprompt(msg) // これがあることによって会話が終了しない
.getResponse();
}
};

// 自分で定義したインテント
const sampleIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'sampleIntent';
},
handle(handlerInput) {
var msg = "自分で定義したインテントの時に呼ばれます";

return handlerInput.responseBuilder
.speak(msg)
.reprompt(msg)
.withSimpleCard('カードを表示します', msg)
.getResponse();
}
};

//exports.handler = Alexa.SkillBuilders.custom()
exports.handler = Alexa.SkillBuilders.standard()
.addRequestHandlers(
LaunchRequestHandler,
other.HelpIntentHandler,
other.SessionEndedRequestHandler,
sampleIntentHandler)
.addErrorHandlers(other.ErrorHandler)
.lambda();

other.js

module.exports = {

HelpIntentHandler: {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
},
handle(handlerInput) {
var msg = 'ヘルプって言われた時に発動するよ';

return handlerInput.responseBuilder
.speak(msg)
.reprompt(msg)
.withSimpleCard('Hello World', msg)
.getResponse();
},
},

SessionEndedRequestHandler: {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'SessionEndedRequest';
},
handle(handlerInput) {
return handlerInput.responseBuilder.getResponse();
},
},

// v1のunhandledと同等。
ErrorHandler: {
canHandle() {
return true;
},
handle(handlerInput, error) {
return handlerInput.responseBuilder
.speak('もう一度おねがいします')
.getResponse();
},
},
}