Alexa Skillの作り方の基礎

このエントリーは、エキサイト Advent Calendar 2017の12/23の記事です。
E・レシピ担当の長谷川です。最近日本でも販売が開始されたAmazon Echoですが、今回はその拡張機能であるAlexa Skillの開発方法について書きたいと思います。 Lambdaファンクション開発については今回はあまり触れません。
E・レシピでは年度初めぐらいから音声市場に対するアプローチを考え、現在はフラッシュニュースという形でAlexa Skillを提供しています。最初にサービス導入検証のために開発した当時と比べ、現在は「Alezaスキル開発トレーニング」に開発の解説が記載されていたり、web上に多くの記事が書かれたりしていて、参考にできる情報は多くなってきていますので、常に最新の情報を参考にされることをオススメします。

0. アカウントの作成

スキル開発のため「Amazon Developerアカウント」と「AWSアカウント」が必要になるので、アカウントの発行をします。アカウント取得済みの場合はそのアカウントを使用してください。

1. Alexa Skill開発

1.1. スキル作成

Amazon 開発者ポータル」にアクセスして、サインインして、「Developer Console」を開きましょう。そして、「Alexa」->「Alexa Skills Kit 始める」->「新しいスキルを追加する」とクリックしていき、スキルを作成します。
f0364156_10582295.png
f0364156_10595698.png

1.2. スキル情報設定

以下の情報を入力して、保存ボタンを押します。
f0364156_12260709.png

1.3. 対話モデルの作成

スキル情報を保存後、「次へ」または「対話モデル」をクリックし、対話モデル設定画面に切り替えます。ここではスキルビルダー(ベータ)を使ってみます。
f0364156_13490550.png
「Intent」はスキルが実行可能なアクション定義、「Slot」はIntentの引数にあたります。

1.3.1. Slot Types追加

Intentの引数の定義を行います。まず、左側の「Slot Types」の「ADD+」をクリックします。そして、使用したい引数の定義を選択します。スロットタイプの一覧などは「スロットタイプリファレンス | Custom Skills」に記載されています。(Intent作成時に自動で追加されるので、この作業は省いても構いません)
f0364156_14141776.png
また、用意されていないスロットタイプを使用したい場合は、custom slot typeで作成することもできます。
f0364156_14430343.png
f0364156_14440747.png

1.3.2. Intents追加

続いて、左側の「Intents」の「ADD+」をクリックして、Intentを追加していきます。標準的なIntent(「キャンセル」や「次」など)は予め用意されているので、必要なものを追加します。(参考: 一般的標準インテント | Custom Skills
f0364156_14265043.png
そして、実際の音声コマンドにあたるcustom intentを作成します。Intent名を決め、「Create Intentボタン」を押します。
f0364156_14321415.png
その後、発話サンプル表現を定義していきます。まず、引数が必要な場合は右側からSlotを作成します。Slot名を決め、Slot Typeを選択します。
f0364156_14443834.png
そして、そのSlotを使用または使わずに、発話サンプルを下記のように追加します。ここで定義する文章がそのまましか使えないという訳ではなく、Alexa側でよしなに解釈してくれます。したがって、様々なパターンを定義することによってより柔軟な会話表現に対応できるようになります。
f0364156_15115937.png

1.3.3. 保存・ビルド

「Save Model」を押して保存し、「Build Model」でビルドして成功すれば対話モデルの作成は終了です。
f0364156_15104577.png

1.4. 設定

右上の「Configuration」を押して設定画面を開きます。
f0364156_15155339.png
今回はAWS Lambdaを使用するため、「AWS Lambda ARN(Amazonリソースネーム)」を選択して、デフォルトの欄に関数のARN(後述)を貼り付けます。それ以外はそのままで「保存」「次へ」に進みます。
f0364156_15214663.png

1.5. テスト

先ほど設定した音声コマンド(Intentの発話表現部分)を入力してテストを実行して正しいレスポンスが返ってくれば成功です。

2. Lambdaファンクション開発

Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発」に詳しく説明が載っているので、ここを参考に作成できます。作成したLambdaファンクションで表示されるARN(Amazonリソースネーム)を上記の「Configuration」の「デフォルト」に設定することでスキルとLambdaの接続が完了します。

まとめ

今回はAlexa Skill開発について紹介しました。 Lambdaファンクション開発については今回は触れることができませんでしたが、「Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発」などの参考記事を見れば開発できると思います。これからどう音声市場が発展していくのか楽しみです。

参考

エンジニア募集

エキサイトではエンジニアとして一緒に働いてくださる方を新卒採用中途採用で募集しています。詳しくは、こちらの採用情報ページをご覧ください。


[PR]
by ex-engineer | 2017-12-23 00:00