TVでアプリを実行できるようになったので、AlexaビデオスキルAPIから受け取ったディレクティブをアプリに渡す機能を追加するため、Lambda関数を更新する必要があります。Messaging(ADM)を使用します。TV対応サンプルアプリを使用する場合でも、このトピックで説明する全タスクを完了させる必要があります。ビデオスキルとLambda関数を作成する」のサブタスク)では、基本的なLambdaコードをLambdaエディターにコピーしてLambda関数を構成しました。ビデオスキルAPIから受信するディレクティブを処理するには、より多くの機能を備えたLambdaコードを開発する必要があります。この手順では、ADM構成を含む、より堅牢なLambda関数を使用します。Lambdaデプロイパッケージを作成するこの手順では、まずNode.jsアプリ内のindex.jsファイルを使用します。TV対応アプリでビデオスキルAPIを統合する際に使用するLambda関数のサンプルコードで、Discovery、SearchAndPlay、FastForward、ChangeChannelなどのディレクティブに対するレスポンスが含まれています。以前にコピーした基本的なLambdaコードに似ていますが、ADM構成など、より多くのロジックが記述されています。このindex.jsコードを基にして、独自のロジックを追加していきます。このLambda関数は、クライアントシークレット、クライアントID、登録IDを実際の値で更新する必要があります。Lambdaにアップロードします。後ほど、受信したディレクティブを処理してアプリに渡すロジックを記述し、この関数をカスタマイズします。Lambda関数を仕上げるには、次の手順を実行します。sample-nodejs-vsk-with-admプロジェクトのzipファイルをダウンロードして解凍します。sample-nodejs-vsk-with-admフォルダ内のindex.jsをテキストエディターで開きます。CLIENT_IDとCLIENT_SECRETの値を入力します。アプリに署名してセキュリティプロファイルを構成するでコピーした値です。ダウンチャンネルサービスを初期化するで説明しています)。展開し、デバイスとアプリを選択します。Idというテキストで絞り込みます。一致するものがない場合は、アプリを停止して再度実行してください。アプリが起動すると、Logcatに登録IDが表示されます。この値は次の手順で必要になるため、アクセスしやすい場所に保存しておいてください。Logcatで登録IDを取得するsample-nodejs-vsk-with-admアプリのindex.jsファイルで、admRegistrationIdに(先ほど取得した)登録IDの値を入力します。'<アプリのADM登録IDを入力>';Lambda関数はADM経由でアプリにメッセージを送信します。登録IDは、アプリへの通信を認証するために必要になります。ファイルを保存します。Node.jsとNPMがインストールされていない場合は、インストールします。-vを実行することで確認できます。ターミナルウィンドウを開き、sample-nodejs-vsk-with-admアプリが含まれているディレクトリに移動します。installコマンドを実行します。node_modulesというフォルダがない場合は作成され、そこにすべての依存パッケージが保存されます。high)といった警告が表示されても対応は不要です。選択して作成することもできます)。.ディレクトリにsample-nodejs-vsk-with-adm.zipというパッケージが作成されました。次の手順でこのパッケージをアップロードします。Lambdaデプロイパッケージを作成する)で作成したzipファイルをAWSのLambda関数にアップロードします。https://aws.amazon.com/jp/にログインします。ビデオスキルのLambda関数を作成するで)作成した関数名をクリックします。Lambdaデプロイパッケージを作成するを参照)を選択します。TV対応アプリでビデオスキルをテストするアプリがLambda関数からディレクティブを受信していることを確認するために、簡単なテストを行います。Echoに向かって、「アレクサ、<ビデオ名>を再生して」または「アレクサ、<ビデオ名>を探して」と話しかけてください(ビデオ名は「ボッシュ」など、IMDbにあるタイトルに置き換えます)。TV対応アプリが実行中の状態でLogcatを開くと、ADMでディレクティブを受信したことがADMメッセージハンドラーに表示されます(検索したタイトルで絞り込んでください)。Messaging(ADM)を統合するでADMを統合した際に記述したコードによって決まります。「『ボッシュ』を再生して」というフレーズで配信されるメッセージは次のようになります。統合プロセスのこの段階では、ビデオスキルはIMDbのすべてのカタログコンテンツの結果を返します。したがって、多数のカタログで利用できるタイトルの場合は、ログに複数のプロバイダーが表示されます。スキルの自動ペアリングを設定して仕上げる)でビデオスキルを自動でペアリングして、自分のカタログの結果だけが表示されるようにします。TV対応サンプルアプリで作業している場合は、カタログに3つのオープンソースビデオが統合されています。「アレクサ、『ビックバックバニー』を見せて」、「アレクサ、『コスモスローンドロマット』を見せて」、「アレクサ、『ティアーズ・オブ・スティール』を見せて」などと話しかけると、アプリが開き、それぞれのビデオが再生されます。以下は統合されている3つのビデオのスクリーンショットです。Logsに表示される全体のやり取りについてここまでのやり取りについての理解をより深めるために、CloudWatchでログを開いて、通信全体を確認しましょう。CloudWatchでログを表示するには、次の手順を実行します。作成したLambda関数を選択します。最新のログストリームを選択します。ラジオボタンをクリックして、詳細を展開します。Alexaなど、ワークフローの始まりを示すログを探します。Cloudwatchに送信されたディレクティブを表示するを参照してください。Cloudwatchログは次のように表示されます。各ログメッセージの意味については、インラインコメントを参照してください。TVデバイスにコマンド(「『ボッシュ』を再生して」)を発話しました。発話はAlexaによってクラウドで解析され、ディレクティブが生成されました。ビデオスキルAPIを通じて、AlexaからLambda関数にディレクティブが送信されます。コンテンツ(ここでは「ボッシュ」)を指定しています。『Bosch』のインスタンスが含まれています。自動ペアリングの手順を実行して、ペイロードが自分のカタログだけにペアリングされるようにします。Lambda関数がディレクティブを受信しました。ADMは、認証情報を使用してaccessTokenを取得します。関数は、sendMessageToDevice()関数を呼び出します。アクセストークンは付与されません。ADMはsendMessageToDevice()関数を呼び出して、APIキーで識別したアプリにディレクティブを送信します。ディレクティブの送信にリクエストモジュールを使用します。https://developer.amazon.com/docs/adm/request-access-token.htmlを参照してください。Lambda関数は、通信を確認するために登録IDを返します。ディレクティブを受信したことを通知します。ディレクティブのリクエストIDです。リクエストの処理に要した時間とメモリです。この処理で請求対象となる実行時間です。ほとんどありません(https://aws.amazon.com/jp/lambda/pricing/?nc1=h_ls)。トラブルシューティング統合のこの段階で問題が発生した場合は、以下のトラブルシューティング情報を参照してください。Amazonとセキュリティプロファイルの関連付けが原因でアプリが失敗しています。Amazonをで有効にする必要があります)。Amazonと統合すると、さまざまなコンポーネントでやり取りが行われるため、ここでは多くの確認が必要です。次の点を確認してください。セキュリティプロファイルのパッケージ名が正しい。開発者コンソールにアップロードしたAPKとセキュリティプロファイルのパッケージ名が同じである。Lambdaコードで、セキュリティプロファイルのクライアントIDとクライアントシークレットを使用している。Alexaディレクティブを解釈して応答するを参照してください。無断複写·転載を禁じます。