【Alexa】ASK SDK for Python (Beta) でEcho Spot用の動画を流すスキルをつくろう!こけしビデオスキル編 #EchoSpot #Alexa #kokexa

AWS運用自動化サービス「Cloud Automator」

http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/EchoSpot_Kokeshi_Select.png
 こんにちは、サーバーワークスのこけしの人、坂本(@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のトップのスキル一覧ページで[スキルの作成]ボタンをクリックします。
 [新しいスキルを作成]ページでスキル名を「こけしビデオ」、デフォルトの言語を「日本語」に設定します。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0008.png
 [スキルに追加するモデルを選択]の箇所では「カスタム」を選択し、[スキルを作成]ボタンをクリックします。

呼び出し名の入力

 左のメニューから[呼び出し名]を選択します。[スキルの呼び出し名]の箇所で「こけしビデオ」と入力します。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0010.png

カスタムインテントを作成

 左メニューの[インテント(3)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムインテントを作成]を選択します。「KokeshiVideoIntent」と入力し、[カスタムインテントを作成]ボタンをクリックします。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0012.png

カスタムスロットタイプを作成

 左メニューの[スロットタイプ(0)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムスロットタイプを作成]を選択します。「KOKESHI_ITEM_LIST」と入力し、[カスタムスロットタイプを作成]ボタンをクリックします。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0020.png

スロット値の設定

 作成された「KOKESHI_ITEM_LIST」にスロット値を設定します。「このスロットタイプの新しい値を入力」と書かれた入力ボックスに「ナルコ」と入力し、左の[+]ボタンをクリックします。続けて、「ヤマガタ」と入力し、左の[プラス]ボタンをクリックし、スロット値を設定します。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0021.png

インテントスロットとサンプル発話の設定

 [インテントスロット]一覧の1番目の「新しいスロットを作成」と書かれた入力欄に「Kokeshi」と入力し、[+]ボタンをクリックします。左のスロットタイプは先程作成した「KOKESHI_ITEM_LIST」を選択します。

 上のサンプル発話は「このインテントの呼び出しに使われると考えられる発話」と書かれた入力ボックスに「{Kokeshi}」と入力し、左の[+]ボタンをクリックします。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0029.png

インターフェイスの設定

 左メニューから[インターフェイス]を選択します。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0024.png
 このスキルは、画面と動画の両方を使用するので[Displayインターフェイス]と[VideoApp]を有効にします。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0025.png
 有効後は、画面と動画操作向けの[ビルトインテント]が左メニューで増えています。

スキルIDをコピー

 左メニューから[エンドポイント]を選択します。ラジオボタンで[AWS LambdaのARN]を選択します。すると、このスキルのスキルIDが表示されます。あとで使うので、コピーして控えておきます。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0026.png

モデルの保存とビルド

 ここまでできたら、いったんモデルの保存とビルドをおこなっておきます。上の方にある[モデルを保存]ボタンをクリックします。保存が終わったら、[モデルをビルド]ボタンをクリックします。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0010.png

Alexa Skills Kit SDK for Python

 開発環境(EC2)で、スキル用のディレクトリ「kokeshi_video」を作成し、作成したディレクトリに移動します。
 このディレクトリに以下のコマンドでAlexa Skills Kit SDK for Pythonをインストールします。

Serverless Framework

 Serverless Frameworkで必要なファイルを自動生成します。

http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0004.png
Serverless Framework参考記事
http://blog.serverworks.co.jp/tech/2016/09/07/serverless-framework-1-beta-1/

「serverless.yml」ファイルの編集

 自動生成された「serverless.yml」ファイルを以下の画像のように編集します。ここで先程控えておいたスキルIDを使います。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0001.png

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にあらかじめアップロードしてある鳴子系のこけしの動画か、山形系のこけしの動画を指定する流れにしています。
http://corporate-tech-blog-wp.s3-website-ap-northeast-1.amazonaws.com/tech/wp-content/uploads/2018/08/alexa_python_0002.png

デプロイ

 Serverless Frameworkでデプロイします。

仕上げ

 仕上げの箇所は、(前回)の記事を参考におこなってください。

まとめ

 今回は、Alexa Skills Kit SDK for Python (Beta) を使って、Echo Spot用の動画を流すスキルを作ってみました。

 サンプルの「Hello World」を少しいじった簡単なスキルですが、よいスキルができたのではないでしょうか?
 動画を取り入れることによって伝えられる情報が増えるので、Alexaの活用方法がますます広がりそうですね!

 いや〜、ASK SDK for PythonとEcho Spotって本当にいいものですね!

AWS運用自動化サービス「Cloud Automator」