【ALEXAスキル開発】テレビスキルを作成開始

前回で大体の仕組みがつかめてきました。

この画面に設定した内容は、スキルの呼び出し名を設定します。

上の設定では、「テレビを開いて」と言えばスキルが起動します。

次にインテント。

「テレビ」スキルに対する命令のようなもの、ですね。

ここでは、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を叩くか、ですね。

次回までに調べておきます。

「【ALEXAスキル開発】テレビスキルを作成開始」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください