Alexaスキル「毎日カニササレ」の中身を紹介


こんにちは!fujiです。

前回に引き続き、今回もAlexaスキル関連、「毎日カニササレ」の記事になります。

そういえば、このスキルを作ってる時に感じたんですが、Youtuberの人たちってすごいですね。自分で撮影して、撮影した動画を編集してYoutubeにアップして・・・

今回、自分でも似たような事をしてみて、収録した動画や音声を編集するところで結構面倒な事が多かったので、それをハイペースでこなしてるYoutuberの人たちって普通にすごいなと思いました。

さて、前回は、Alexaスキル「毎日カニササレ」の公開までに受けた指摘や開発時の注意点を記載しました。

今回は、Alexaカスタムスキルの作り方を紹介・・・と思ったのですが、開発方法についてはAlexa公式のほうで動画を提供してたり、ソースコードも出したりしていますのでそちらを見た方が早いしわかりやすいんじゃないかなと思います。

上記リンクに記載されている事や、Webにある情報を元に作っていけばAlexaスキルは作れるようになります。

「毎日カニササレ」も上記リンクで学習した事を元に作っているのですが、一点だけ、「動画を流す」という点は確か言及していなかった & Web上にもあまり情報が無いので、そういう点だったり、「毎日カニササレではこうしてるよ!」という点などを紹介したいと思います。

 

開発を始める前の注意点

Web上でもいくつか記事を見つけましたが、大事な点を一つ。

Alexaスキルを開発する際、Amazon Developerに開発者としてアカウントを登録しなければならないのですが、この時必ず「amazon.co.jp」からアカウントを作成してください。「amazon.com」からアカウントを作成すると、せっかく開発したAlexaスキルを、自分の端末でテスト実行できなくなります。

ちなみに、私は当初、個人アカウントで「amazon.com」から開発者アカウントを登録して、モック版「毎日カニササレ」を作っていました。で、ざっくりと作って実機確認しようしたらDEV版スキルが見つからなくて頭を抱えました。

解決策は上記リンクに記載されていますが、それ以外にも「amazon.com側のパスワードを変更する」という方法でも対応できたと思います。

これ、本当に気をつけてください!マジで泣きを見ます!

 

Alexaスキルでビデオを使用する際の設定

Alexaスキルでビデオを使用したい場合は、alexa developer consoleの「インターフェース」より、「Displayインターフェース」と「VideoApp」をONにします。

alexa developer consoleでのインターフェース設定
alexa developer consoleでのインターフェース設定

こうする事で、動画を流せるスキルが作れるようになります。

 

ファイルを置いている場所について

Alexaスキルでは、Web上の音声ファイルや動画ファイル、画像を呼び出す事ができます。Alexa道場やスキル開発トレーニングではそれらのファイルの置き場所として「AWS S3」を紹介し、それを使用していたと思いますが、これらは「https」環境下に置いておけばOKです。なので、私はMicrosoft Azure上にBlob Strageを立ち上げ、その中に配置しました。

ちなみにMicrosoft Azureを使用した理由は使い慣れているから。それだけです(笑)

ですので、Alexaスキル開発時にファイルの呼び出しを行いたい場合は、AWS環境にこだわらず、「https」環境を利用できる使い慣れたストレージサービスを使えばいいかなと思います。

 

再生可能な動画について

こちらに記載されていますが、再生可能な動画は

ディスプレー付デバイスで再生可能な動画形式
ディスプレー付デバイスで再生可能な動画形式

かつ、

  • mp4、m3u8、tsファイルである
  • https環境上にアップされている
  • MPEG4もしくはH.264コーデック

です。で、解像度は

  • 推奨は640 * 480または1280 * 720
  • 最高解像度は1280 * 720

となっています。echo spotでは、「640 * 480」でいいかな、と思いました。

あまり解像度を大きくしても読み込みに時間がかかる可能性がありますし、それなら解像度は低くして、コンテンツの内容勝負!という感じかなと。

「毎日カニササレ」は、640 * 480で作成しています。

 

動画再生ステータスのコールバック

プログラム的な話です。

現在、動画の再生時ステータス、要は、動画開始イベントの受信、動画終了イベントの受信といった事はできません!!

つまり、動画終了イベントを受信し、ユーザからの入力を待つ状態に戻るという処理は現段階ではできません。

もしかしたら今後、できるようになるかもしれませんが、「毎日カニササレ」を開発し、現在この記事を執筆している段階ではまだこの機能はありません。
(Alexa開発者フォーラムにもこの件に関する書き込みと、ビデオ終了時のイベント取得機能を追加してほしいという要望がありました)

 

ビデオ使用時のセッション継続について

上記を受け、じゃあ、ビデオを流した後にセッションを継続させたい場合はどうすれば・・・?という疑問が当然出てくると思います。

「毎日カニササレ」では、他のAlexaスキルを参考にこんな感じにしてます。

こうする事で、動画が終了した際に「お話状態になってないときは〜」という文言と、カニササレアヤコさんの画像が表示し、ユーザに次に行う動作を提示しています。

動画終了後、画面にテキストが表示
動画終了後の状態

 

ディスプレー有無判別処理について

「毎日カニササレ」では、echo spot利用者にはカニササレアヤコさんのネタを動画で流し、画面の無い機体では音声のみを流すという処理を行っています。

前回の記事にも記載した通り、「addRenderTemplateDirective」や「addVideoAppLaunchDirective」を画面の無い機体が読み込んでしまうと、「ターゲットの端末では、指定されたディレクティブがサポートされていません」という無常の言葉をAlexaがたたき返してきます。

そのため、下記のような方法で画面のあるデバイスでの処理と画面の無いデバイスでの処理を分けてあげます。

デバイスからのリクエストJSONの中身を見て、ディスプレーに関する定義があるかどうかをチェック、あればディスプレー有りデバイス、無ければディスプレー無しデバイスと判断します。

と、こういった手法を用いて「毎日カニササレ」はできています。同時に、こういう方法を使えば動画つきAlexaスキルの開発をする事ができます。

というわけで、今回は2回に分けてAlexaスキル開発について記事を書いてみました。この後12月にはすでにアメリカで発売されている大型スクリーン付きスマートスピーカー、Amazon echo Showが日本でも発売されますので、スマートスピーカー界隈や、Alexaスキル開発がもっと活性化されてスマートスピーカーを使いこなす人がもっと増えていけばいいなぁと思う次第でございます。

同時に、Alexaスキルで何かしてみたい方、アイディアを実現したい方、お気軽に弊社までご相談いただければと思います。

ではまた次の記事で!!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です