【第1回】Alexaで時間管理するアプリをつくってみた。(Alexaアプリの作り方編)
はじめに
はじめまして、WebエンジニアのYoshikiです。最近社内の発表会で時間管理をしてくれるAlexaアプリを作成したので記事にしようと思います。
簡単に内容を見たい人向け
背景
そもそも自分自身がこの頃YouTube
を1日のうちにかなり見すぎてしまい時間を無駄にしているなぁと感じたため作りました。あとスマートスピーカーの開発がうちの会社のソリューションだったりしますw
このブログで伝えること
- 【第1回】Alexaアプリの作り方
- 【第2回】Pythonでの開発方法
1. Amazon developer コンソールでの設定
amazon alexaの開発者コンソールにログイン
ログインができたらまずはアプリの設定を行う必要があります。
[メニュー] - [Alexa Skill Kit] - [スキルの作成] まで進みます。
スキル名 と デフォルト言語 と スキルのモデルを選択します。 今回だとこんな感じです。
スキルの呼び出し名とインテント、スロットタイプを選択する
- スキルの呼び出し名
いわゆるAlexaを呼び出すときに必要なスキル。すべての起点となるので呼び出し名はよく考えたほうがいい。
会話の種類のこと。このインテントの種類によってAlexaの会話のできる種類が決定される 今回のユーザの会話のパターンでいうと、
- 「Alexa 時間管理アプリを開いて」(LaunchIntent)
- 「
Youtube
の時間を記録して」- 「4時間記録する」
- 「今日の
Youtube
の時間を教えて」 このようになる。最初のLaunchIntentを除いて3つのインテント開発が必要となる。
- スロット
会話の中の単語の部分のこと。今回でいうと
YouTube
が当てはまる。 このスロットは複数つけることができ「Yoshiki
のYoutube
の時間を記録して」という風にもできる。 ただ今回はVUI的にシンプルな方が自然に話しやすいと考え、1つのみとしました。
インテントの設定をする
今回は「Youtube
の時間を記録して」のインテントを例にして説明をする。
インテントの開発には、発話の種類と会話のYouTube
の部分のスロットの設定が必要となる。
- サンプル発話
話すであろう会話のパターンを登録する必要がある。なるべく多いほうが認識をしてくれるので最低4個程度登録すると良い。
- スロットの選択
スロットの種類もAmazonに準備されてるものが多くあり、いろいろな種類がある(動物だったり、色だったり、街名だったり種類は様々)ので会話にあったパターンを選択すると良い。
もし、ない場合は自分でカスタムして作成することができる。サンプル発話と似たように単語を登録し、決まった単語に反応するようになる(Amazonすげえ)
というふうにここまで必要なインテントを設定できたら次はAWS
の設定が必要になるので[エンドポイント] - [スキルID] をコピーしておく。
2. AWS lambda の設定
Alexaアプリを作成するためにAWS lambdaが必要です。
lambdaの設定
[lambda] - [関数の作成] を選択し、[設計図を選択] で [alexa-skills-kit-color-expert-python]を検索し選択します。
次にロールの作成をします。
[カスタムロールの作成] からそれらしいロール名(alexa-basic-roleなど)をつけて保存し設定します
Alexa Skills Kit トリガー
ここで上記の工程でコピーしたスキルID
を貼り付けます。
そして、[関数の作成] である程度の基礎は出来上がりです!(めちゃ簡単!)
lambdaが出来上がったら下の画像の右上にあるARN
をコピーして[Amazon developer console
] - [エンドポイント
] - [デフォルトの地域
] に設定をして完了です。
連携完了
とりあえずここまでで Alexa API
と AWS lambda
の連携は完了です。
ほぼほぼGUI操作で実装できるので開発はだいぶ進めやすいかと思います。次回は、lambda(python)でのデバッグの仕方や実装の詳細について触れていきます。
ちなみに作成したコードはGitHub
上に公開してあるので見たい方は参考程度にどうぞ。
Alexaについて
自分の場合は Echo dotを購入しました。小さくて場所取らなくて安いです。コスパ重視ならEcho dotですね。
スピーカーとかなくて気になるって場合は、Echoがいいと思います。
使い方としては、Echo dotでBluetoothスピーカーとつなげていい感じに音楽とか再生して使用してます。あとちょっと開発よりなスマートホーム化もしてあるので別で記事にします。