前回で大体の仕組みがつかめてきました。
この画面に設定した内容は、スキルの呼び出し名を設定します。
上の設定では、「テレビを開いて」と言えばスキルが起動します。
次にインテント。
「テレビ」スキルに対する命令のようなもの、ですね。
ここでは、VolumeUpIntentを作成して、これに対応するセリフを設定します。
上の場合は「ボリュームを上げて」「ボリュームアップ」と言えば、このインテントが作動します。
次にコード。
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
},
handle(handlerInput) {
const speakOutput = 'テレビをどうしますか?';
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
const VolumeUpIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'VolumeUpIntent';
},
handle(handlerInput) {
const speakOutput = 'ボリュームを上げました';
return handlerInput.responseBuilder
.speak(speakOutput)
//.reprompt('add a reprompt if you want to keep the session open for the user to respond')
.getResponse();
}
};
exports.handler = Alexa.SkillBuilders.custom()
.addRequestHandlers(
LaunchRequestHandler,
VolumeUpIntentHandler,
HelpIntentHandler,
CancelAndStopIntentHandler,
FallbackIntentHandler,
SessionEndedRequestHandler,
IntentReflectorHandler)
.addErrorHandlers(
ErrorHandler)
.withCustomUserAgent('sample/hello-world/v1.2')
.lambda();
まず上のLaunchRequestHandlerはスキル起動時の動作。
ここではスキル起動後、「テレビをどうしますか?」と応答がでます。
そして、VolumeUpIntentHandler。インテントがVolumeUpIntentならば「ボリュームを上げました」を返ります。
そして、最後のexports.handlerに追加したVolumeUpIntentHandlerを追加します。
動作はこんな感じになります。
「テレビ」を起動して「ボリュームを上げて」で設定した内容が返ってきました。
しかし、「テレビのボリュームを上げて」ではダメで、「テレビを開いてボリュームを上げて」と言わなければならないようです。
でも、これで一文でコントロールできそうです。
あとは、どうやってWebAPIを叩くか、ですね。
次回までに調べておきます。