Alexaがランダムに返事してくれるようにしてみた

はじめに

いつの日か忘れましたが、私はAlexaをプレゼントしてもらいました。
(Alexaとはスマートスピーカーで、AI技術を使ったスピーカーです。AIかどうかと聞かれてもわからないので聞かないでください。)
そんなAlexaとは長年の付き合いですが、普段使っている機能といえば、タイマーやリマインダーといった機械的な機能です。
(カーテン自動開閉機にも使わせてもらってますがやはり機械的です。)
でもふと思ったのです。Alexaと自然な会話がしたいと。
そんなときに見つけたサイトがこちらです。
www.apnari.com このサイトを参考にして、Alexaに呼びかけるとランダムに返事を返してくれるようにしました。

お題「#おうち時間

やりたいこと

  • Alexaへの呼びかけ
    「Alexa、ぴーちゃんは」

  • Alexaの応答
    「"寝てます。」、「休んでます。」、「充電中です。」、「そばにいます。」、「考え事をしているだけで寝ていません。」、「おうちで待ってます。」
    からランダムに返答

設定手順

参考サイトに書いてあることは一部省略してます。

呼び出し名を設定する。

今回は呼び出し名を「ぴーちゃんは」にしています。

スキルの作成をする。

スキル名、言語の選択、スキルに追加するモデルを選択する。

インテントの追加をせずにビルドする

今回はインテントを追加しません。ビルドはしてください。

コードエディタの編集

元のコードから変更したのは下記の部分だけです。

  • makeStateSpeachという関数を作る。

  • LaunchRequestHandler内のrepromptをコメントアウトする。

const makeStateSpeach = function(){
    const ReturnStrArr=["寝てます。","休んでます。","充電中です。","そばにいます。","考え事をしているだけで寝ていません。","おうちで待ってます。"];
    var num = Math.floor(Math.random()*ReturnStrArr.length);
    return "ぴーちゃんは、" + ReturnStrArr[num];
}

const LaunchRequestHandler = {
    canHandle(handlerInput) {
        return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
    },
    handle(handlerInput) {
        const speakOutput = makeStateSpeach();
        return handlerInput.responseBuilder
            .speak(speakOutput)
            //.reprompt(speakOutput)
            .getResponse();
    }
};

デプロイをする

テストをする

テストの開発中を押してPCで動作確認を行います。
デバッグでうまくいかなかったらF12ボタンを押してコンソール画面を使って間違っている箇所を見つけ出してください。
ちなみに私が設定したぴーちゃんは、ぐでたまみたいなキャラクターです。
Alexaは家にずっといるので癒しキャラでいてほしいものです。
f:id:GypsophilaRupi:20200509225834p:plain

最後に

Alexaのスキルを使うと色々なことができそうです。
お笑いのセンスがあれば、Alexaと漫才を披露することも可能です。
ちなみに定型アクションを使用するだけでも楽しめます。(既にカーテン自動開閉機の自作で使っています。)
定型アクションはスマフォからでも簡単に設定できるので、今回のよりもさらに楽です。 ただし、ランダムに返事はしてくれないので、長年使うとなると、飽きがきてしまうとも思います。
今回のスキル使用で、少しAlexaと距離を縮めることができた感じはしますがまだ物足りないのが正直な感想です。
Alexaともっと仲良くなれる方法を見つけ次第、報告していきたいです。
そしてもしお勧めがあれば教えてください。