rrrtcdish2’s diary

Webエンジニアの技術日記です。たまに趣味のパデルや旅行について書いていきます。

移転しました。

約3秒後に自動的にリダイレクトします。

次のURLはこちら↓↓

【第1回】Alexaで時間管理するアプリをつくってみた。(Alexaアプリの作り方編)

はじめに

はじめまして、WebエンジニアのYoshikiです。最近社内の発表会で時間管理をしてくれるAlexaアプリを作成したので記事にしようと思います。

簡単に内容を見たい人向け

背景

そもそも自分自身がこの頃YouTubeを1日のうちにかなり見すぎてしまい時間を無駄にしているなぁと感じたため作りました。あとスマートスピーカーの開発がうちの会社のソリューションだったりしますw

smart-speaker.kronos.jp

このブログで伝えること

  • 【第1回】Alexaアプリの作り方
  • 【第2回】Pythonでの開発方法

1. Amazon developer コンソールでの設定

amazon alexaの開発者コンソールにログイン

Amazon Developerログイン

f:id:rrrtcdish2:20180824081130p:plain

ログインができたらまずはアプリの設定を行う必要があります。

[メニュー] - [Alexa Skill Kit] - [スキルの作成] まで進みます。

スキル名 と デフォルト言語 と スキルのモデルを選択します。 今回だとこんな感じです。 f:id:rrrtcdish2:20180824081609p:plain

スキルの呼び出し名とインテント、スロットタイプを選択する
  • スキルの呼び出し名

いわゆるAlexaを呼び出すときに必要なスキル。すべての起点となるので呼び出し名はよく考えたほうがいい。

会話の種類のこと。このインテントの種類によってAlexaの会話のできる種類が決定される 今回のユーザの会話のパターンでいうと、

  • 「Alexa 時間管理アプリを開いて」(LaunchIntent)
  • Youtubeの時間を記録して」
  • 「4時間記録する」
  • 「今日のYoutubeの時間を教えて」 このようになる。最初のLaunchIntentを除いて3つのインテント開発が必要となる。
  • スロット

会話の中の単語の部分のこと。今回でいうとYouTubeが当てはまる。 このスロットは複数つけることができ「YoshikiYoutubeの時間を記録して」という風にもできる。 ただ今回はVUI的にシンプルな方が自然に話しやすいと考え、1つのみとしました。

インテントの設定をする

今回は「Youtubeの時間を記録して」のインテントを例にして説明をする。

インテントの開発には、発話の種類と会話のYouTubeの部分のスロットの設定が必要となる。

f:id:rrrtcdish2:20180824083408p:plain

  • サンプル発話

話すであろう会話のパターンを登録する必要がある。なるべく多いほうが認識をしてくれるので最低4個程度登録すると良い。

  • スロットの選択

スロットの種類もAmazonに準備されてるものが多くあり、いろいろな種類がある(動物だったり、色だったり、街名だったり種類は様々)ので会話にあったパターンを選択すると良い。

もし、ない場合は自分でカスタムして作成することができる。サンプル発話と似たように単語を登録し、決まった単語に反応するようになる(Amazonすげえ)

というふうにここまで必要なインテントを設定できたら次はAWSの設定が必要になるので[エンドポイント] - [スキルID] をコピーしておく。

2. AWS lambda の設定

Alexaアプリを作成するためにAWS lambdaが必要です。

lambdaの設定

[lambda] - [関数の作成] を選択し、[設計図を選択] で [alexa-skills-kit-color-expert-python]を検索し選択します。

f:id:rrrtcdish2:20180824090807p:plain

次にロールの作成をします。

[カスタムロールの作成] からそれらしいロール名(alexa-basic-roleなど)をつけて保存し設定します

Alexa Skills Kit トリガー

ここで上記の工程でコピーしたスキルIDを貼り付けます。

そして、[関数の作成] である程度の基礎は出来上がりです!(めちゃ簡単!)

lambdaが出来上がったら下の画像の右上にあるARNをコピーして[Amazon developer console] - [エンドポイント] - [デフォルトの地域] に設定をして完了です。 f:id:rrrtcdish2:20180824102320p:plain

連携完了

とりあえずここまでで Alexa APIAWS lambdaの連携は完了です。

ほぼほぼGUI操作で実装できるので開発はだいぶ進めやすいかと思います。次回は、lambda(python)でのデバッグの仕方や実装の詳細について触れていきます。 ちなみに作成したコードはGitHub上に公開してあるので見たい方は参考程度にどうぞ。

github.com

Alexaについて

自分の場合は Echo dotを購入しました。小さくて場所取らなくて安いです。コスパ重視ならEcho dotですね。

スピーカーとかなくて気になるって場合は、Echoがいいと思います。

使い方としては、Echo dotでBluetoothスピーカーとつなげていい感じに音楽とか再生して使用してます。あとちょっと開発よりなスマートホーム化もしてあるので別で記事にします。