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

記事タイトルとURLをコピーする

https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184224.png  こんにちは、サーバーワークスのこけしの人、坂本(@t_sakam)です。(前回)は、Alexa Skills Kit SDK for Python (Beta) を使って、Echo Spot用のスキルを作りました。

 今回は、前回も利用した「Hello World」サンプルを少しアレンジして、簡単なEcho Spot用の「動画を流すスキル」を作ります。ListTemplate2を使った選択画面をタッチして、こけしの系統である「ナルコ」か「ヤマガタ」を選ぶと、Echo Spotの画面に「鳴子系か山形系のこけしの説明動画が流れる」という簡単なスキルです。  百聞は一見にしかず、ということでまずは完成したスキルの動画をみてみましょう!

動画

https://youtu.be/Bu9WFjy-uTM

Amazon Developer ServicesのAlexa Skills Kitでスキル作成

スキルの作成

 ここからはスキルの作成です。まずはAmazon Developer Servicesにログインします。[Alexa Skills Kit]タブ - Alexa Skills Kitのトップのスキル一覧ページで[スキルの作成]ボタンをクリックします。  [新しいスキルを作成]ページでスキル名を「こけしビデオ」、デフォルトの言語を「日本語」に設定します。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184344.png  [スキルに追加するモデルを選択]の箇所では「カスタム」を選択し、[スキルを作成]ボタンをクリックします。

呼び出し名の入力

 左のメニューから[呼び出し名]を選択します。[スキルの呼び出し名]の箇所で「こけしビデオ」と入力します。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184349.png

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

 左メニューの[インテント(3)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムインテントを作成]を選択します。「KokeshiVideoIntent」と入力し、[カスタムインテントを作成]ボタンをクリックします。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184353.png

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

 左メニューの[スロットタイプ(0)]の横の[追加]リンクをクリックします。ラジオボタンで[カスタムスロットタイプを作成]を選択します。「KOKESHI_ITEM_LIST」と入力し、[カスタムスロットタイプを作成]ボタンをクリックします。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184359.png

スロット値の設定

 作成された「KOKESHI_ITEM_LIST」にスロット値を設定します。「このスロットタイプの新しい値を入力」と書かれた入力ボックスに「ナルコ」と入力し、左の[+]ボタンをクリックします。続けて、「ヤマガタ」と入力し、左の[プラス]ボタンをクリックし、スロット値を設定します。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184403.png

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

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

 上のサンプル発話は「このインテントの呼び出しに使われると考えられる発話」と書かれた入力ボックスに「{Kokeshi}」と入力し、左の[+]ボタンをクリックします。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184420.png

インターフェイスの設定

 左メニューから[インターフェイス]を選択します。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184408.png  このスキルは、画面と動画の両方を使用するので[Displayインターフェイス]と[VideoApp]を有効にします。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184412.png  有効後は、画面と動画操作向けの[ビルトインテント]が左メニューで増えています。

スキルIDをコピー

 左メニューから[エンドポイント]を選択します。ラジオボタンで[AWS LambdaのARN]を選択します。すると、このスキルのスキルIDが表示されます。あとで使うので、コピーして控えておきます。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184416.png

モデルの保存とビルド

 ここまでできたら、いったんモデルの保存とビルドをおこなっておきます。上の方にある[モデルを保存]ボタンをクリックします。保存が終わったら、[モデルをビルド]ボタンをクリックします。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184349.png

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

https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184340.png Serverless Framework参考記事 http://blog.serverworks.co.jp/tech/2016/09/07/serverless-framework-1-beta-1/

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

 自動生成された「serverless.yml」ファイルを以下の画像のように編集します。ここで先程控えておいたスキルIDを使います。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184332.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にあらかじめアップロードしてある鳴子系のこけしの動画か、山形系のこけしの動画を指定する流れにしています。 https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711184337.png

デプロイ

 Serverless Frameworkでデプロイします。

serverless deploy

仕上げ

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

まとめ

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

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

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