リビングルームのエンターテイメントデバイス向けビデオスキルの作成手順

リビングルームのエンターテイメントデバイス向けビデオスキルの作成手順

ビデオスキルを新規作成する場合、Alexaを有効にしてスキルを呼び出し、スマートホームビデオデバイスのビデオエクスペリエンスを制御するユーザーリクエストを実行します。ビデオスキルはプリビルドの音声対話モデルを使います。このモデルでは、Alexaにより発話セットが定義されています。ゲーム機やスマートテレビといったリビングルームデバイス向けに、Alexaビデオスキルを作成できます。

ビデオスキルの概要については、ビデオスキルとはを参照してください。Fire TV向けのビデオスキルを作成する場合、Fire TV対応アプリ用VSK(Video Skills Kit)についてを参照してください。画面付きのEchoデバイス向けビデオスキルを作成する場合、Echo Show用VSK(Video Skills Kit)を参照してください。

ビデオスキルを作成するには、次の手順に従います。

前提条件

ビデオスキルを作成する前に、以下のアカウントやデバイスなどが手元にあることを確認してください。

  • Amazon開発者アカウント。既存のAmazonアカウントを使用してサインインすることも、新しいAmazon開発者アカウントを作成することもできます。アカウントは無料です。
  • アマゾンウェブサービス(AWS)アカウント。AWSアカウントを使うと、サービスの無料利用枠内でさまざまなリソースにアクセスできます。スキルコードはAWS Lambdaでホストします。
  • セットトップボックス、ゲーム機、スマートテレビといったビデオデバイス、またはデバイス制御クラウドに接続するビデオストリーミングサービスのいずれか。スキルは、デバイスがサポートする通信チャネルを使って、デバイスやデバイス制御クラウドと通信します。
  • Amazon EchoなどのAlexa搭載デバイス。Echoにサインインする際は必ず、Alexa開発者アカウントと同じ認証情報を使ってください。
  • モバイルデバイス上のAmazon Alexaアプリ。Alexaアプリのダウンロード手順については、AmazonウェブサイトのAlexaアプリをダウンロードするを参照してください。モバイルデバイスでAlexaアプリにサインインする際は必ず、Alexa開発者アカウントと同じ認証情報を使ってください。
  • JSONとAWS Lambdaスキルコードでサポートされている、次のいずれか1つのプログラミング言語に関する知識: Node.js、Java、Python、C#、Go、Ruby、PowerShell。
  • アカウントリンク用のOAuth 2.0プロバイダー。Login with Amazon(LWA)というAmazonの認可サーバーを使うことも、独自のOAuth 2.0プロバイダーを使うこともできます。
  • ビデオデバイスを制御するディレクティブに適したビデオスキルAPI。ビデオスキルAPIでサポートされているロケールと言語の詳細については、Alexaインターフェースとサポートしている言語の一覧を参照してください。
  • ポリシーセキュリティに関するスキル認定要件の知識。

開発者コンソールでスキルを作成する

Alexa開発者コンソールでビデオスキルを作成します。スキルに追加するモデルを選択するセクションで、ビデオモデルを選択します。

デフォルトの言語や地域として英語(米国)を選択することも、別の言語や地域でスキルを作成することもできます。スキルを公開しようと考えている地域を選択してください。サポートされる言語はインターフェースによって異なります。詳細については、Alexaインターフェースとサポートしている言語の一覧を参照してください。

スキルを作成したら、スキルIDをコピーして任意の場所(Windowsのメモ帳やMacのTextEditなど)に貼り付けます。スキルIDを使って、スキルをLambdaでホストされるスキルコードに接続できます。

カタログとラインナップを指定する

Amazonは、ユーザーにIMDBなどのパブリックメディアカタログへのアクセス権限を付与します。プライベートメディアカタログをサポートする場合は、Amazonにカタログを送信できます。国固有の設定で、スキルを公開予定の各国でサポートされているプライベートカタログを指定します。スキルが生放送をサポートする場合、MSO(Multiple System Operator:ケーブルテレビの統括運営会社)IDを指定します。

スキルの呼び出し名を設定する

ユーザーは、スキル名を使ってビデオスキルを呼び出します。たとえば、「アレクサ、<スキル名>で『スターウォーズ: ジェダイの帰還』をかけて」のようにです。 呼び出し名をカスタマイズする場合、言語固有の設定で、スキルの公開予定の国ごとに呼び出し名を指定します。Amazon Echo Showでスキルを利用できるようにする場合、チェックボックスをオンにして、ウェブプレイヤーのURI、背景画像、ロゴ画像を入力します。

Fire TVのサポートを設定する(オプション)

ビデオスキルをFire TVアプリとペアリングすると、Alexaはアプリを有効にします。Fire TVアプリをビデオスキルにペアリングする場合は、開発者ポータルでFire TVのサポートを有効にし、アプリ名を入力します。LWAセキュリティプロファイルのAPIキーから、Fire TVアプリに関連付けられたクライアントIDを追加します。この設定により、スキルのアプリとの通信が認可されます。

Fire TVのサポートセクションの設定を完了した後は、アカウントリンクと権限の設定は必要なくなります。

Lambda関数を作成する

スキルコードをLambda関数として実装し、関数をスキルIDに紐づけます。すべてのLambda関数には、関数を呼び出すエンドポイントを定義するAmazonリソースネーム(ARN)があります。Alexaは、ARNを使って関数にアクセスします。

この関数は、スキルコード、設定情報、開発者に代わってLambdaがスキルコードを実行できるようにするIAM(Identity and Access Management)ロールで構成されます。オプションで、Lambda関数がAWS DynamoDBにデータを保存し、AWS CloudWatchにログを記録するように設定することもできます。

Lambda関数を作成するには、AWS認証情報を使ってAWSマネジメントコンソールにサインインし、次の手順を実施します。Lambda基本実行ポリシーが付与されたIAMロールが既にある場合、最後の手順は省略してください。

Lambda関数を作成する

  1. AWSマネジメントコンソールにサインインします。
  2. IAMポリシーを作成します。
    IAMダッシュボードポリシーページを開き、ポリシーの作成をクリックします。Lambda関数からアクセスするAWSリソースのアクセス許可を追加します。
  3. IAMロールを作成します。
    IAMダッシュボードのロールページを開き、ロールを作成をクリックします。信頼されたエンティティタイプにはAWSのサービスを選択し、一般的なユースケースにはLambdaを選択します。先ほど作成したポリシーをロールに追加します。
  4. Lambda関数を作成します。
    Lambdaコンソールを開き、Lambda関数の正しいリージョンを選択します。ビデオスキルを提供するのと同じリージョンで関数を作成します。後からほかの言語やリージョンを追加できます。
    • ランタイムでは、プログラミング言語を選択します。
    • アーキテクチャは、デフォルトのままにします。
    • アクセス権限 > デフォルトの実行ロールの変更で、既存のロールを使用するを選択し、先ほど作成したIAMロールを選択します。
    • トリガーを追加で、Alexa Smart Homeを選択します。
    • アプリケーションIDに、スキルIDを貼り付けます。

      Lambda関数のARNをコピーします。サービスのエンドポイントを設定する際には、リージョンごとにARNを追加します。

IAMロールとLambda関数の作成手順の詳細は、スマートホームスキル作成のチュートリアル: ステップ2: スキルコードの実装のサブステップa~cを参照してください。

AWS Lambdaのリージョン

以下の表は、Alexaスキルをデプロイ可能な地域と、関連するAWS Lambdaリージョンの一覧です。Lambda関数は、適切なリージョンで作成してください。

エンドポイントのリージョン スキルの言語 AWS Lambdaのリージョン
北米 アラビア語(SA)、英語(CA)、英語(US)、フランス語(CA)、ポルトガル語(BR)、スペイン語(MX)、スペイン語(US) 米国東部(バージニア北部)
ヨーロッパ アラビア語(SA)、英語(UK)、フランス語(FR)、ドイツ語、イタリア語、スペイン語(ES) 欧州(アイルランド)
インド 英語(IN)、ヒンディー語(IN) 欧州(アイルランド)
極東 英語(AU)、日本語 米国西部(オレゴン)

ビデオスキルはほかの言語でも作成できます。詳細については、スマートホームスキルを複数の言語で開発するを参照してください。サポートされる言語はインターフェースによって異なります。詳細については、Alexaインターフェースとサポートしている言語の一覧を参照してください。

非同期のイベントを有効にする

Lambda関数からAlexaイベントゲートウェイに、変更レポートなどの非同期イベントを送信するには、Alexa開発者コンソールで権限を有効にします。ビルドタブの左側のメニューから権限を選択し、Alexaイベントを送るをオンにします。表示された認証情報を使って、ユーザーごとにAlexaイベントゲートウェイにアクセスするアクセストークンをリクエストします。詳細については、Alexaイベントゲートウェイへのアクセスを参照してください。

スキルコードを実装する

Alexaは、ユーザーの発話を特定のJSON構造を持つディレクティブに変換します。その後、Alexaはディレクティブをスキルに送信します。スキルのLambdaコードはディレクティブを処理し、デバイス制御クラウドを介してデバイスと通信することでリクエストされたアクションを実行します。スキルコードは、リクエストが成功か失敗かを示す応答をAlexaに返します。応答には、デバイスの現在の状態が含まれます。

スキルコードは、Lambda関数でサポートされる次の言語で記述できます: Node.js、Java、Python、C#、Go、Ruby、PowerShell。PythonやNode.jsなどの非コンパイル言語の場合、Lambdaコンソールのコードエディターでコードを記述できます。また、スキルの実装に使用する予定のプログラミング言語に適した開発環境を使用することもできます。別の開発環境でコードを記述する場合、コードをコピーしてLambdaコンソールエディターに貼り付けるか、zipファイルやjarファイルでコードをアップロードできます。詳細については、Lambda の開始方法を参照してください。

スキルユーザーに最高のエクスペリエンスを提供するには、スキルコードで次の機能をサポートする必要があります。

  • 検出 — ユーザーのAlexaアカウントに関連付けられたデバイスのエンドポイントを識別します。
  • 機能ディレクティブ — ディレクティブに応答してデバイスを制御します。
  • 状態レポート — Alexaが常にデバイスの最新ステータスを把握できるようにします。

次の図は、Alexaアプリを使うユーザー、Alexaサービス、スキル、デバイスの間の最も一般的な通信フローを示しています。この例では、Authorization code grantによるAlexaアプリのみのアカウントリンクのフローについて説明します。詳細については、スキルを有効にする際を参照してください。

クリックして拡大
  1. ユーザーがAlexaアプリでスキルを有効にします。
  2. Alexaサービスが、デバイス制御クラウドの認可サーバーでユーザーをログインページにリダイレクトすることで、アカウントリンクフローを開始します。アカウントリンクのフロー全体は記載していません。
  3. 成功すると、Alexaサービスは、システム内でユーザーアカウントにアクセスするためのアクセストークン(黒で表示)を受け取ります。Alexaは、スキルへの後続のディレクティブにトークンを含めます。
    アカウントリンクが完了します。
  4. Alexaサービスが、スキルにAlexa.Authorization.AcceptGrantディレクティブを送信することで、Alexaイベントゲートウェイ認可フローを開始します。それに応じて、スキルが、スキルとAmazon LWA認可サーバーとの間のAuthorization code grantフローを開始します。スキルが、Amazonユーザー用のアクセストークン(青で表示)を取得し、スキルのバックエンドにトークンを保存します。このトークンを使って、イベントをAlexaイベントゲートウェイに送信します。
  5. ユーザーが、スキルにユーザーのデバイスを探すようリクエストします。
  6. Alexaサービスが、ユーザーデバイスのアカウントに関連付けられたエンドポイントを識別するAlexa.Discovery.Discoverディレクティブを、スキルに送信します。各エンドポイントについて、スキルは、Discover.Responseにデバイスのエンドポイント情報とエンドポイントの機能を含めます。
  7. Alexaサービスが、Alexa.ReportStateディレクティブを送信してデバイスの現在の状態をリクエストします。
    スキルが、キャッシュした状態データを返します。スキルがデバイスに照会する場合もあります。
  8. ユーザーが、Alexaアプリでデバイスをオンにします。
  9. AlexaがAlexa.PowerController.TurnOnディレクティブをスキルに送信します。スキルが、デバイス制御クラウドまたは直接デバイスからAPIを呼び出して、デバイスをオンにします。
  10. ユーザーが、デバイスを手動でオフにします。デバイスがスキルに通知を送ります。
  11. それに応じて、スキルはAlexa.ChangeReportをAlexaサービスに送信し、Alexaに状態の変更を通知します。Alexaサービスが、Alexaアプリでデバイスの状態を更新します。

検出を実装する

Alexa.Discovery.Discoverディレクティブを受け取ったら、ユーザーデバイスのアカウントに関連付けられた各エンドポイントの識別情報と機能を応答として返します。利用可能なAlexaの機能インターフェースについては、Alexaインターフェースの一覧を参照してください。各機能インターフェースについて、retrievableプロパティとproactivelyReportedプロパティをtrueに設定することで、状態レポートのサポートを指定します。バッテリー容量の低下や接続の問題など、デバイスの健全性に問題が発生したときにユーザーに通知できるよう、Alexa.EndpointHealthのサポートを含めるようにしてください。また、すべてのエンドポイントに対してAlexaインターフェースを含める必要があります。

検出応答の例については、サポートする各インターフェースのドキュメントを参照してください。

機能ディレクティブを実装する

Alexaは、検出応答に含める各エンドポイントの機能に対して、ユーザーのデバイス制御リクエストに応じたディレクティブを送信できます。ディレクティブにすぐに応答し、応答にはすべてのデバイス機能の状態を含めてください。ディレクティブの詳細については、Alexaスキルでサポートする各インターフェースのドキュメントを参照してください。

状態レポートを実装する

状態レポートを実装すると、Alexaがデバイスの現在の状態を把握できます。状態レポートの詳細については、状態および変更レポートについてを参照してください。

Alexaに状態をレポートする方法は3つあります。

  • AlexaがAlexa.ReportStateディレクティブを使って状態をリクエストします。すべてのプロパティ値のスナップショットを含むAlexa.StateReport応答を返します。
  • ディレクティブのAlexa.Responseですべてのプロパティの状態をプロアクティブに送信します。たとえば、TurnOnディレクティブにすべてのプロパティ値のスナップショットを含めることができます。
  • プロアクティブに非同期のAlexa.ChangeReportイベントを送信して1つ以上のプロパティが変更されたことを知らせます。イベントには、その他すべてのプロパティ値のスナップショットを含めることもできます。

Alexa.ChangeReportイベントと非同期のAlexa.ResponseメッセージをAlexaイベントゲートウェイに送信します。このメッセージフローでは、Alexa開発者コンソールでイベントを有効にし、ユーザーごとにアクセストークンを取得する必要があります。詳細については、イベントゲートウェイにイベントを送信するを参照してください。

アカウントリンクを設定する

すべてのビデオスキルは、アカウントリンクを有効にしてAlexaユーザーのIDとシステム内のユーザーIDを紐づける必要があります。ビデオサービス用に、システムで、どのビデオが無料かなどのユーザーのサービスレベルがユーザーアカウントに格納されている可能性があります。ユーザーがAlexaアプリでスキルを有効にすると、Alexaはアカウントリンクプロセスを開始し、システムからアクセストークンを受け取ります。その後、ユーザーがAlexaにビデオの再生をリクエストすると、Alexaはそのアクセストークンをスキルに送信します。トークンにより、スキルはシステム内のユーザーアカウントにアクセスして、ビデオを視聴できるかどうかを把握できます。

Alexaでは、スマートホームスキルとビデオスキルにOAuth 2.0のAuthorization code grant種別を使用しています。アカウントリンクを設定するには、OAuthプロバイダーから以下の情報を取得する必要があります。これらのフィールドの詳細については、Authorization Code Grantを設定するを参照してください。

  • 認可サーバーのログインページのURI — ユーザーがAlexaアプリでスキルを有効にすると、Alexaはユーザーを、ログイン認証情報を入力するこのURIにリダイレクトします。ログインに成功すると、サーバーは認可コードをAlexaに返します。
  • アクセストークンサーバーのURI — 認可コードとアクセストークンを交換できる認可サーバーのエンドポイントです。
  • クライアントID — Alexaサーバーに代わってリソースサーバーにリクエストを行うスキルを識別する一意の文字列です。
  • クライアントシークレット — Alexaは、クライアントIDとクライアントシークレットを使って、アクセストークンURIの認証を行います。これらの認証情報により、Alexaからのリクエストを識別します。
  • 認証スキーム — Alexaがアクセストークンサーバーからアクセストークンや更新トークンをリクエストするのに使う認証の種類を識別します。
  • スコープ — (オプション)ユーザーIDとパスワードなど、スキルユーザーからリクエストする認証情報のリストです。最大15個まで指定できます。
  • ドメイン — (オプション)認可サーバーがコンテンツをリクエストするドメインのリストです。最大30個まで指定できます。
  • デフォルトのアクセストークン有効期限 — (オプション)サーバーでメッセージにおけるアクセストークンの有効期限が指定されていない場合、アクセストークンの有効期限を秒数で指定する必要があります。

スキルの認可サーバーとセキュリティプロファイルは、Alexa開発者コンソールで設定します。ビルドページの左側のメニューで、アカウントリンクをクリックします。必要な情報を入力し、保存をクリックします。Alexaが使用するリダイレクト先のエンドポイントは、Alexaのリダイレクト先のURLフィールドで確認できます。これらのリダイレクト先URLを認可サーバーに登録します。

Login with Amazon(LWA)というAmazonのOAuth認可サーバーを使うことも、独自のOAuth 2.0プロバイダーを使うこともできます。LWA認可サーバーとのアカウントリンクを設定する方法については、スマートホームスキル作成のチュートリアル: ステップ4: アカウントリンクの設定を参照してください。

スキルをテストする

スキルコードを作成する際、Lambdaコンソールでテストケースを作成して、Alexaからのリクエストをテストできます。詳細については、スマートホームスキル作成のチュートリアル: ステップ2e: Lambda関数のテストを参照してください。

実装が完了したら、スキルを有効にしてテストを開始できます。

スキルを有効にしてテストを開始する

  1. Alexaアプリで、スキルを有効にします。Alexaは、アカウントリンクを実行し、Alexa.Authorization.AcceptGrantをスキルに送信してスキルをユーザーのAmazonアカウントに接続してから、Alexa.Discoverリクエストをスキルに送信してデバイスの検出をリクエストします。
  2. スキルがデバイスの検出に成功した場合、開発者コンソールで、テスト用にスキルを有効にする手順を実施します。
  3. 開発者コンソールでテストタブを開き、Alexaシミュレーターでスキルをテストします。
    検出応答およびAlexaアプリにあるフレンドリー名を使って、Alexaにコマンドを送ります。スキルがサポートするデバイスの機能固有の発話を使用します。有効な発話と無効な発話の両方でスキルをテストしてください。変更レポートとエンドポイントの健全性を確認するには、デバイスの電源をオフにしてからオンにします。

スキルコードを繰り返し、テストを続行します。アカウントリンクの設定を変更した場合、Alexaアプリでスキルを無効にしてから再度有効にし、新規の変更点をテストします。検出応答のコードを変更した場合、Alexaアプリでスキルを無効にしてから再度有効にしてください。スキルのテストとデバッグのオプションについては、スマートホームスキルのテストとデバッグを参照してください。

スキルのテストが完了したら、スキルの公開情報を設定できます。

スキルの公開方法を設定する

スキルをAmazon Alexaスキルストアに配信するには、必須のスキルのメタデータを開発者コンソールの公開タブで入力します。ここで設定した情報が、Alexaアプリのスキルに表示されます。

スキル情報を入力してスキルを保存したら、ベータテスト用にスキルを公開するか、認定を申請します。詳細については、スマートホームスキル公開のガイドを参照してください。

スキルのベータテストを行う(オプション)

スキルのベータテストを行うというオプションもあります。ベータテストでは、広く一般にではなく、個人的に選択した限定的なテストグループにのみスキルを公開できます。詳細については、スキルのベータテストを参照してください。

スキルの認定を申請する

スキルを公開する準備ができたら、認定を申請します。スキルの認定について詳しくは、スキルをテストして認定を申請するを参照してください。

  • 開発者コンソールの認定ページで検証テストを実行します。これらのテストにより、スキルの認定を申請する前に修正する必要のある問題を特定できます。
  • スキルがAlexaポリシーガイドラインを満たしていることを確認します。これらのガイドラインを満たしていれば、スキルがすべてのユーザーにとって適切なものであると確認できます。これらのガイドラインに従うことで、Alexaユーザーのプライバシーと公益を守ることができます。
  • スキルがAlexaのセキュリティ要件を満たしていることを確認します。ユーザーからの信頼は非常に重要です。スキルは、ユーザーデータを保護するためにこれらのセキュリティ要件を満たしている必要があります。

公開後にスキルの修正やアップデートを行う

Amazonがエンドユーザーにスキルを公開すると、スキルのステータスは公開中に変わります。スキル設定やLambda関数に変更を行った場合、必ず認定を受け直す必要があります。スキルのステータスが公開中に変更されると、新しい開発中バージョンのスキルがAlexa開発者コンソールに自動作成されます。このバージョンには、元の公開中バージョンと同じ情報が格納されています。変更は、開発中バージョンに対して行います。更新したスキルを申請する場合、開発者コンソールのテストの手順にすべての変更についての詳細説明を記載した変更ログを追加します。詳細については、公開後にスキルの修正やアップデートを行うを参照してください。

Lambda関数のスキルコードを変更する

  1. 新しいARNで、新規にLambda関数を作成します。
  2. 公開中のLambda関数スキルコードを新しいLambda関数にコピーします。
  3. 新しいLambda関数で、スキルコードを更新します。
  4. 開発中のスキルで、Lambda ARNの設定を新しいLambda関数のARNに更新します。

Amazonが更新されたスキルを認定したら、Alexaは新しいLambda ARNにリクエストを送信します。前のLambda関数は削除することもできますし、将来の開発や更新のために使用することもできます。