手順2: Echoデバイスでビデオスキルを有効化してテストする


手順2: Echoデバイスでビデオスキルを有効化してテストする

ビデオスキルとLambda関数のセットアップが完了したので、今度はアプリをテストして、Alexaからスキル経由で送られてくるディレクティブを確認します。スキルのテストには、Echo Dotをできる限り使用することをお勧めします。Echo Dotがない場合は、Alexa Skillテストツールを使用できます(fr-FR、it-IT、es-ESロケールを除く)。スキルのテストにFire TV Cubeは使用しないでください。

Fire TV対応サンプルアプリに関する注意点

Fire TV対応サンプルアプリを使用する場合でも、このトピックで説明する全タスクを完了させる必要があります。

手順A: Alexaデバイスでスキルを有効にする

Alexa搭載デバイスでスキルをテストするには、次の手順に従います。

  1. ビデオスキルの作成に使用した開発者アカウントを使用して、Echoデバイスをセットアップして登録します。Echo Dotのセットアップについては、Echo Dotをセットアップするを参照してください。Echoデバイスをセットアップするには、スマートフォンにAlexaアプリをインストールしておく必要があります。注: AlexaスマートフォンアプリとEcho Dotの両方が同じWi-Fiネットワーク上にあることを確認してください。

    Echoデバイスがない場合は、ビデオスキルの作成に使用した開発者アカウントでAlexa Skillテストツールにログインします。このツールにログインするだけで、アカウントに関連付けられているAmazonデバイスのリストに仮想Echoデバイス(「echosim_BETA」)が追加されます。

  2. スマートフォンでAlexaスマートフォンアプリを開き、上記の開発者アカウントでログインします。
  3. 下部のナビゲーションバーの [デバイス] Alexaアプリのデバイスボタンをタップし、 [すべてのデバイス] を選択します。アプリ画面にEchoデバイスが表示されていることを確認します(Alexa Skillテストツールにログインしている場合は、「echosim_BETA」などのデバイス名になります)。

    Alexaスマートフォンアプリに登録しているデバイスのリスト
    Alexaスマートフォンアプリに登録しているデバイスのリスト
  4. アプリのホーム画面の [メニュー] ボタン(左上隅)Alexaアプリのメニューボタン > [設定] > [TV・ビデオ] をタップします。リストを下にスクロールし、下部にに「有効」と表示されているスキルを探します。「有効」と表示されているスキルがあればクリックし、[スキルを無効にする] をクリックしして、TV・ビデオのスキルをすべて無効にします。

    ビデオスキルを無効にする
    ビデオスキルを無効にする
  5. 上と同じ画面で [Fire TV] をタップし、表示画面に「Alexaデバイスをリンク」と表示されていることを確認します(これでデバイスがFire TVにリンクされていないことがわかります)。デバイスがFire TVにリンクされている場合は、[デバイスを管理] > [デバイスのリンクを解除] をクリックします。

    Fire TVがビデオスキルにリンクされていないことを確認する
    Fire TVがビデオスキルにリンクされていないことを確認する

    次に、上部の戻る矢印をクリックして、[TV・ビデオ] のスキルリストに戻ります。

  6. リストを下にスクロールして、前の手順で作成したビデオスキル(「Streamz」など)を探します。これは一番下に表示されます。スキルの横にあるプラス記号ボタンをクリックします。

    Alexaアプリのビデオスキル
  7. スキルをクリックして詳細を表示したら、[スキルを有効にする] をクリックします。ブラウザで新しいページが開き、スキルがリンクされたことが示されます。

    ビデオスキルを有効にする
    ビデオスキルを有効にする
  8. 左上隅にある [X] をクリックして、通知ウィンドウを閉じます。ウィンドウを閉じると、別のウィンドウにAlexaアプリがデバイスを検索中であることが表示されます。Echo Dotのライトリングも青色で回転し始めます。

    Alexaがデバイスを検索中
    Alexaがデバイスを検索中

    スキルをVSKTVにリンクするように求められたら、次の手順に従います。

    Alexaアプリがビデオスキル対応デバイスを検出できない場合は、「トラブルシューティング」セクションの問題: AlexaスマートフォンアプリでVSKTVデバイスを検出できませんを参照してください。

  9. [VSKTV] ラジオボタンをクリックし、[続行] をクリックします。

    ビデオスキルをデバイスにリンクする
    ビデオスキルをデバイスにリンクする

    「VSKTV」は「Video Skills Kit TV」の略です(Video Skills Kit TVは、Fire TV対応アプリ用ビデオスキルを指す別名です)。 VSKTVは、ビデオスキルAPIがLambda関数に情報を送る場合に使用するエンドポイント名です。後述のセクションCloudwatchに送信されたディレクティブを表示するの説明にもある通り、Alexaからのディレクティブのコードに"endpointId": "VSKTV"と表されています。

  10. アカウントに関連付けられているデバイスが表示されます(Alexa Skillテストツールにログインしている場合は、デバイスとして「echosim_BETA」が表示されます)。 Echoデバイス名の横にあるチェックボックスをオンにして、[デバイスを接続] をクリックします。

    Echoデバイスでビデオスキルを有効にする
    Echoデバイスでビデオスキルを有効にする

    スキルにリンクすると、[接続済みデバイス] という画面(下図)が表示されますが、デバイスが表示されません。これはAlexaアプリのバグです。実際にはデバイスはリンクされています。次のステップでこれを確認します。

    デバイスをリンクしても画面に表示されない
    デバイスをリンクしても画面に表示されない

    これでAlexaスマートフォンアプリでの設定は完了です。ホームボタンをクリックするか、アプリを閉じます。

  11. Echoに向かって(Alexa Skillテストツールを使用している場合はAlexa Skillテストツールにアクセスし、マイクボタンを押しながら)「アレクサ、『ボッシュ』(またはほかのテレビ番組や映画)を検索して」と言います。

    Alexaは「<有効にしたスキル名>から『ボッシュ』を取得しています」と応答します。

    たとえば、スキル名が「Streamz」の場合、Alexaは「Streamzから『ボッシュ』を取得しています」と応答します。

    現在、Gracenoteに登録されているメディアはすべて検索できます。ビデオスキルAPIの統合の後半では、Gracenoteの全情報ではなく、自分のアプリのカタログだけを検索するようにLambda関数をカスタマイズします。

    これでAlexaアプリでのスキルの設定が完了しました。ホームボタンをクリックしてホーム画面に移動するか、アプリを閉じます。

手順B: Cloudwatchに送信されたディレクティブを表示する

Alexa搭載デバイスに言ったフレーズは、(Alexa自然言語サービスを通じて)意味が解析され、ディレクティブに変換されます。ディレクティブはJSON形式の情報ブロックで、Lambdaに送信され、処理されます。

AlexaからLambda関数に送信されたディレクティブはCloudwatchで表示できます。Cloudwatchは、Lambda(およびその他のサービス)のモニタリングデータと運用データをログ、指標、イベントの形で収集するAWSサービスです。Cloudwatchでは、Lambda関数がAlexaから受信したディレクティブと他のログを、受信ごとに表示できます。

Alexaによって送信されるディレクティブと、アプリに実装すべきアクションを理解することは、ビデオスキルの構成において重要なタスクです。

CloudwatchでLambda関数が受信したディレクティブを表示するには、次の手順に従います。

  1. Cloudwatchにアクセスし、左側のサイドバーの [ログ] をクリックします。デフォルトでは、ログはLambda関数に基づいた名前で表示されます。
  2. 目的のLambda関数を含むログを選択し、最新のログストリームを選択します(ストリームはログをグループ化したもので、一番上に最新のものが表示されます)。
  3. 前のセクション(手順A: Alexaデバイスでスキルを有効にする)では、『ボッシュ』を検索しました。 この検索を行っていなかった場合は、(ログにディレクティブを表示できるように)ここで行います。
  4. Lambdaログを見やすくするには、[テキスト] ラジオボタンをクリックします。次のスクリーンショットに示すようなPlayディレクティブを含むログメッセージを探します。ディレクティブには、検索したメディアタイトルの名前とpayloadが含まれています。

    Cloud Watchログ
    Cloud Watchログ

    ディレクティブはJSON形式で表されます。スクリーンショットのコードの全体は次のとおりです。

    {
      "directive": {
        "payload": {
          "entities": [
            {
              "type": "Video",
              "uri": "entity:\/\/provider\/program\/amzn1.p11cat.merged-video.858df979-c070-5533-9b1f-ecae15e9f139",
              "value": "Bosch",
              "externalIds": {
                "avc_vending_de": "amzn1.dv.gti.e0a9f6b7-ca7e-dc0c-c80e-f5801c580da8",
                "ENTITY_ID": "amzn1.p11cat.merged-video.858df979-c070-5533-9b1f-ecae15e9f139",
                "avc_vending_us": "amzn1.dv.gti.56a9f78c-4cfe-36f0-663d-9104c6dd6595",
                "asin_row_na": "B01M32CYV3",
                "asin_row_fe": "B01MCYRKGY",
                "avc_vending_jp": "amzn1.dv.gti.fea9f575-39fd-7a77-622b-a400f9b511f8",
                "asin_us": "B00S45ZDVE",
                "avc_vending": "amzn1.dv.gti.8cac011f-78c3-114b-b3f8-246a48f23ec0",
                "asin_roe_eu": "B01MCYRQHG",
                "imdb": "tt3502248",
                "ontv": "SH018737530000",
                "asin_gb": "B00IGQC64I",
                "asin_row_eu": "B01MDRHYR2",
                "asin_jp": "B014QF5HMU",
                "avc_vending_gb": "amzn1.dv.gti.10a9f690-1c9c-8c4e-5f67-2007ea0c5ceb",
                "tms": "SH018737530000",
                "cravetv": "m32254",
                "asin_de": "B00ZWBWZXW",
                "gti": "amzn1.dv.gti.10a9f690-1c9c-8c4e-5f67-2007ea0c5ceb",
                "ontv_de": "SH026719310000"
              }
            },
            {
              "type": "Video",
              "uri": "entity:\/\/provider\/program\/amzn1.p11cat.merged-video.a63315af-c728-56bc-90bb-0b8cbdcdad86",
              "value": "Bosch",
              "externalIds": {
                "ENTITY_ID": "amzn1.p11cat.merged-video.a63315af-c728-56bc-90bb-0b8cbdcdad86",
                "imdb": "tt2773036"
              }
            },
            {
              "type": "Video",
              "uri": "entity:\/\/provider\/program\/amzn1.p11cat.merged-video.d9ceb2e4-4802-557d-9461-24e19a438aad",
              "value": "Bosch",
              "externalIds": {
                "gvd": "GN2EAWZBASRC1PJ",
                "ENTITY_ID": "amzn1.p11cat.merged-video.d9ceb2e4-4802-557d-9461-24e19a438aad"
              }
            },
            {
              "type": "Video",
              "uri": "entity:\/\/provider\/program\/amzn1.p11cat.merged-video.75f0a242-6a4c-5912-97be-a06a3a0d5e05",
              "value": "Bosch",
              "externalIds": {
                "ENTITY_ID": "amzn1.p11cat.merged-video.75f0a242-6a4c-5912-97be-a06a3a0d5e05",
                "tms": "SH018739470000",
                "ontv_gb": "SH018739470000"
              }
            },
            {
              "type": "Video",
              "uri": "entity:\/\/provider\/program\/amzn1.p11cat.merged-video.ca646a58-8e1d-55f3-acc7-30245f8ac202",
              "value": "Bosch",
              "externalIds": {
                "gvd": "GN794XKHCHGKGJZ",
                "ENTITY_ID": "amzn1.p11cat.merged-video.ca646a58-8e1d-55f3-acc7-30245f8ac202"
              }
            }
          ]
        },
        "header": {
          "payloadVersion": "3",
          "messageId": "20d83e2d-6b20-4590-92ee-f252c2f607a9",
          "namespace": "Alexa.RemoteVideoPlayer",
          "name": "SearchAndPlay",
          "correlationToken": "cf662810-879e-4d8f-afb7-7488b778cd35"
        },
        "endpoint": {
          "cookie": {
    
          },
          "endpointId": "VSKTV",
          "scope": {
            "token": "452d41e7-8e4a-71ed-e8fb-dd31b126bf2e",
            "type": "BearerToken"
          }
        }
      }
    }
    
  5. ほかのメディアタイトルをいくつか検索して、Lambdaログで結果を確認します。後でLambdaコードをカスタマイズすると、Lambda関数でディレクティブを処理できるようになります。

Lambda関数は、Alexaへのレスポンスも返します。「Sending Discover response back to Alexa」という行を探してください。 基本的なLambda関数は、次のような確認レスポンスをAlexaに返します。

{
    "event": {
        "header": {
            "messageId": "5eb7cde5-023d-4022-aa12-458fd85f9a63",
            "name": "Discover.Response",
            "namespace": "Alexa.Discovery",
            "payloadVersion": "3"
        },
        "payload": {
            "endpoints": [
                {
                    "capabilities": [
                        {
                            "interface": "Alexa.RemoteVideoPlayer",
                            "type": "AlexaInterface",
                            "version": "1.0"
                        },
                        {
                            "interface": "Alexa.PlaybackController",
                            "type": "AlexaInterface",
                            "version": "1.0"
                        },
                        {
                            "interface": "Alexa.SeekController",
                            "type": "AlexaInterface",
                            "version": "1.0"
                        },
                        {
                            "interface": "Alexa.ChannelController",
                            "type": "AlexaInterface",
                            "version": "1.0"
                        }
                    ],
                    "endpointId": "VSKTV",
                    "description": "VSKTVは、Fire TVに組み込むために開発されたビデオスキル用デフォルトデバイスです",
                    "friendlyName": "VSKTV",
                    "manufacturerName": "Amazon"
                }
            ]
        }
    }
}

Lambda関数は、Alexaにレスポンスは返しますが、ユーザーに向けた音声フィードバックは提供しません。たとえば、ユーザーが「『ボッシュ』を再生して」と言った後のAlexaの応答をカスタマイズすることはできません。 Alexaはこのコミュニケーションを排他的に処理します。アプリで実行できるアクションは、メディアを検索して再生する(または別の適切なアクションを実行する)ことだけです。

ディレクティブに関する注意事項

前述のように、一般的なLambdaコードは、Gracenoteのすべての検索結果を返します。たとえば、テレビ番組『スーパーナチュラル』を検索すると、そのメディアを提供しているさまざまなベンダーが表示されます。

{
    "directive": {
        "payload": {
            "entities": [
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.123456789",
                    "value": "Supernatural",
                    "externalIds": {
                        "avc_vending_de": "123456789",
                        "ENTITY_ID": "123456789",
                        "avc_vending_us": "123456789",
                        "provider1": "123456789",
                        "provider2": "123456789",
                        "provider3": "123456789",
                        "provider4": "123456789",
                        "imdb": "123456789",
                        "provider5": "123456789",
                        "ontv": "123456789",
                        "provider6": "123456789",
                        "provider7": "SHOW-supernatural",
                        "tms": "123456789",
                        "avc_vending_gb": "123456789",
                        "gti": "123456789",
                        "provider8": "123456789",
                        "provider9": "123456789"
                    }
                }
                ...
              ]
            }
          }
          }

(上記のコードでは、プロバイダーとIDの値は汎用的なものになっています)

後の手順では、自分のアプリのカタログだけが表示されるように、結果をカスタマイズします。

また、Alexaの自然言語処理知能がユーザーの発話を解析して適切なディレクティブに変換することにも注意してください。Lambda関数が検出するディレクティブはさまざまです。ディレクティブの識別には、headerブロックのnameプロパティが使用されます。たとえば、次に示すのはSearchAndPlayディレクティブです。

{
  "directive": {
      "payload": {
        ...
        "header": {
                 "payloadVersion": "3",
                 "messageId": "56baf542-6dbb-4803-8387-8370757cff0b",
                 "namespace": "Alexa.RemoteVideoPlayer",
                 "name": "SearchAndPlay",
                 "correlationToken": "ddd36869-36b8-4d75-aa78-268610c5e8b6"
             }
          ...
        }
      }
    }

最後に、Cloudwatchログで次のようなメッセージに気付いたかもしれません。

REPORT RequestId: f6ddb389-00d1-11e9-9bf9-b3d4aae40293
Duration: 59.08 ms
Billed Duration: 100 ms
Memory Size: 128 MB	Max
Memory Used: 31 MB

この時点では、Cloudwatchサービスで課金される心配はありません。無料利用枠として、5GBが用意されているためです。これにより、ほとんどのアプリで必要なメモリをカバーできます。

トラブルシューティング

ここまでの手順で問題があった場合は、以下のセクションを参照してください。このセクションでは、トラブルシューティングのためのヒントを説明します。

問題: AlexaスマートフォンアプリでVSKTVデバイスを検出できません。代わりに、「すみません。リンク可能なデバイスが見つかりませんでした」と表示されます。 これは、スマートホームデバイスの検出に関連する問題です。

解決策: 次の手順に従います。

  1. ビデオスキルのサポート対象国にいることを確認します。
  2. ビデオスキルが正しいLambda ARNで構成されていることを確認します。
  3. LambdaのビデオスキルIDが正しいことを確認します。
  4. LambdaでAlexaのスマートホーム用トリガーが選択されていることを確認します。
  5. AlexaスマートフォンアプリとEcho Dot(またはその他のスマートホーム対応デバイス)が同じWi-Fiネットワーク上にあることを確認します。
  6. Echo Dotとスマートフォンアプリを再起動します。
  7. 手順A: Alexaデバイスでスキルを有効にするのすべての手順を繰り返します(たとえば、手順Aに従って、https://alexa.amazon.comにログインし、すべてのスマートホームデバイスの登録を解除していることを確認します。さらに、アプリ内のすべてのスキルを無効にして、再度有効にするなどを行います)。
  8. これらの手順をすべて実行してもビデオスキルが機能しない場合は、手順1手順2をもう一度実行(Lambdaを作成するなど)して、新しいビデオスキルを最初から作成し直すことを検討してください。
  9. それでも問題が解決しない場合は、スマートホーム端末の検出の問題に関するトラブルシューティングも参照してください。
  10. 解決できない場合は お問い合わせから事例を送信してください。

問題: スキルにリンクしたデバイスがAlexaアプリに表示されません。

解決策: スキルにリンクすると、[接続済みデバイス] という画面が表示されますが、デバイスが表示されません。これはAlexaアプリのバグです。実際にはデバイスはリンクされています(このバグは今後のリリースで修正されます)。 「アレクサ、『ボッシュ』を再生して」と言ったときに、Alexaが「<ビデオスキル名>から『ボッシュ』を取得しています」と応答した場合は、デバイスはスキルにリンクされています。

次のステップ

ここまではLambda関数に送信されたディレクティブの確認だけを行いました。次はFire TV対応アプリとの統合です。Fire TV対応アプリと統合するための最初の手順は、Alexa Client LibraryをFire TV対応アプリに組み込むことです。次の手順の 手順3: Alexa Client Libraryを統合するを参照してください。