こんにちは、サーバーワークスのこけしの人、坂本(@t_sakam)です。(前回)は、Alexa Skills Kit SDK for Python (Beta) を使って、Echo Spot用のスキルを作りました。
今回は、前回も利用した「Hello World」サンプルを少しアレンジして、簡単なEcho Spot用の「動画を流すスキル」を作ります。ListTemplate2を使った選択画面をタッチして、こけしの系統である「ナルコ」か「ヤマガタ」を選ぶと、Echo Spotの画面に「鳴子系か山形系のこけしの説明動画が流れる」という簡単なスキルです。 百聞は一見にしかず、ということでまずは完成したスキルの動画をみてみましょう!
動画
Amazon Developer ServicesのAlexa Skills Kitでスキル作成
スキルの作成
ここからはスキルの作成です。まずはAmazon Developer Servicesにログインします。[Alexa Skills Kit]タブ - Alexa Skills Kitのトップのスキル一覧ページで[スキルの作成]ボタンをクリックします。 [新しいスキルを作成]ページでスキル名を「こけしビデオ」、デフォルトの言語を「日本語」に設定します。 [スキルに追加するモデルを選択]の箇所では「カスタム」を選択し、[スキルを作成]ボタンをクリックします。
呼び出し名の入力
左のメニューから[呼び出し名]を選択します。[スキルの呼び出し名]の箇所で「こけしビデオ」と入力します。
カスタムインテントを作成
左メニューの[インテント(3)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムインテントを作成]を選択します。「KokeshiVideoIntent」と入力し、[カスタムインテントを作成]ボタンをクリックします。
カスタムスロットタイプを作成
左メニューの[スロットタイプ(0)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムスロットタイプを作成]を選択します。「KOKESHI_ITEM_LIST」と入力し、[カスタムスロットタイプを作成]ボタンをクリックします。
スロット値の設定
作成された「KOKESHI_ITEM_LIST」にスロット値を設定します。「このスロットタイプの新しい値を入力」と書かれた入力ボックスに「ナルコ」と入力し、左の[+]ボタンをクリックします。続けて、「ヤマガタ」と入力し、左の[プラス]ボタンをクリックし、スロット値を設定します。
インテントスロットとサンプル発話の設定
[インテントスロット]一覧の1番目の「新しいスロットを作成」と書かれた入力欄に「Kokeshi」と入力し、[+]ボタンをクリックします。左のスロットタイプは先程作成した「KOKESHI_ITEM_LIST」を選択します。
上のサンプル発話は「このインテントの呼び出しに使われると考えられる発話」と書かれた入力ボックスに「{Kokeshi}」と入力し、左の[+]ボタンをクリックします。
インターフェイスの設定
左メニューから[インターフェイス]を選択します。 このスキルは、画面と動画の両方を使用するので[Displayインターフェイス]と[VideoApp]を有効にします。 有効後は、画面と動画操作向けの[ビルトインテント]が左メニューで増えています。
スキルIDをコピー
左メニューから[エンドポイント]を選択します。ラジオボタンで[AWS LambdaのARN]を選択します。すると、このスキルのスキルIDが表示されます。あとで使うので、コピーして控えておきます。
モデルの保存とビルド
ここまでできたら、いったんモデルの保存とビルドをおこなっておきます。上の方にある[モデルを保存]ボタンをクリックします。保存が終わったら、[モデルをビルド]ボタンをクリックします。
Alexa Skills Kit SDK for Python
開発環境(EC2)で、スキル用のディレクトリ「kokeshi_video」を作成し、作成したディレクトリに移動します。 このディレクトリに以下のコマンドでAlexa Skills Kit SDK for Pythonをインストールします。
pip install ask-sdk -t .
Serverless Framework
Serverless Frameworkで必要なファイルを自動生成します。
serverless create --template aws-python3
Serverless Framework参考記事 http://blog.serverworks.co.jp/tech/2016/09/07/serverless-framework-1-beta-1/
「serverless.yml」ファイルの編集
自動生成された「serverless.yml」ファイルを以下の画像のように編集します。ここで先程控えておいたスキルIDを使います。
handler.py
Alexa Skills Kit SDK for Python (Beta) の公式Githubにあるサンプル「Hello World」のコードをコピーし、画像や動画を扱うのに必要なクラスを追加で読み込んだり、Echo Spotで画像を表示したり、動画を流したい箇所と、文言を編集します。
サンプル「Hello World」 https://github.com/alexa-labs/alexa-skills-kit-sdk-for-python/blob/master/samples/HelloWorld/skill_using_decorators/hello_world.py
画面をタッチして選択した場合のリクエストタイプは「Display.ElementSelected」になります。最初の選択画面でTokenにそれぞれ「naruko」と「yamagata」と設定しておいたので、ここではそのTokenの値によって、S3にあらかじめアップロードしてある鳴子系のこけしの動画か、山形系のこけしの動画を指定する流れにしています。
デプロイ
Serverless Frameworkでデプロイします。
serverless deploy
仕上げ
仕上げの箇所は、(前回)の記事を参考におこなってください。
まとめ
今回は、Alexa Skills Kit SDK for Python (Beta) を使って、Echo Spot用の動画を流すスキルを作ってみました。
サンプルの「Hello World」を少しいじった簡単なスキルですが、よいスキルができたのではないでしょうか? 動画を取り入れることによって伝えられる情報が増えるので、Alexaの活用方法がますます広がりそうですね!
いや〜、ASK SDK for PythonとEcho Spotって本当にいいものですね!