カメラ用のスマートホームスキルを作成する



カメラ用のスマートホームスキルを作成する

クラウド対応カメラで機能するスマートホームスキルでは、「アレクサ、玄関のカメラを見せて」と話しかけると、ビデオストリーミングをサポートするAlexa搭載デバイスに指定したカメラのビデオフィードが表示されます。また、任意でカメラ履歴をサポートすることもできます。これによりユーザーが過去の録画を表示するように指示できます。

スマートホームスキルを作成するには、Alexa Skills Kit開発者コンソールでコンフィギュレーション情報を指定し、コードを追加します。このコードはAWS Lambda関数(アマゾンウェブサービスの提供サービスのひとつ)としてホストされます。スキルがAlexaから送られてくるディレクティブに応答して、カメラなどのコネクテッドデバイスと通信し、イベントをAlexaに送信します。

スマートホームスキルを作成したことがない場合は、このドキュメントを読み進める前に、関連するドキュメントを確認してください。スマートホームスキルの作成方法とLambda関数コードの記述方法を理解しておく必要があります。詳細については、スマートホームスキルの作成手順を参照してください。

ビデオやオーディオをストリーミングするクラウド対応カメラ用のAlexaスキルを構築するには、Web Real-Time Communication(WebRTC)またはReal Time Streaming Protocol(RTSP)を使用します。できる限りWebRTCを使用することをお勧めします。詳細については、以下のAPIドキュメントを参照してください。

既存のスマートホームスキルにサポートされる言語を追加したり、複数言語をサポートするスマートホームスキルを作成したりするには、所定の手順を踏む必要があります。詳細については、スマートホームスキルを複数の言語で開発するを参照してください。

デバイスサポートと地域

クラウド対応カメラ向けのスキルは、メディアをストリーミングするためのURIを指定します。ユーザーのAlexa搭載デバイスは、そのURIで見つかったコンテンツをストリーミングします。

カメラスキルがカメラフィードを表示できるデバイスの種類とロケールは次のとおりです。

言語(ロケール) サポートデバイス
英語(米国)、英語(英国)、ドイツ語、日本語 Echo Show、Echo Spot、全世代のFire TV、第2世代のFire TV Stick
英語(カナダ)、英語(オーストラリア)、英語(インド) Echo Spot

技術、パフォーマンス、セキュリティの各要件

カメラは正しい形式でビデオフィードを送信する必要があります。また、セキュリティ要件とパフォーマンス要件も満たす必要があります。要件は、カメラがサポートするプロトコルとデバイスの機能によって異なります。

カメラスキルのパフォーマンス要件

スキルに実装されているAPIの種類にかかわらず、ユーザーエクスペリエンスを最適化するには、待機時間を短くすることが重要です。Alexaからカメラストリームのリクエストが送信されたときのスキルの応答性と、いかにすばやくカメラが応答してカメラストリームをレンダリングできるかが、ユーザーエクスペリエンスにもっとも影響を及ぼします。

カテゴリー 要件 推奨事項
Lambdaスキルの応答性 応答はリクエストを受信してから6秒以内に発生する必要があります。ただし、最高のユーザーエクスペリエンスを提供するには、リクエストを受信してから1秒経過するまでに応答が発生することが望ましいです。 ストリーミングを開始するためにカメラを起動する等の操作は、バックグラウンドのタスクとして非同期的に実行することをお勧めします。
URIストリームの応答性 良好なネットワーク条件下では、TLSハンドシェイクが完了してから6秒以内に最初のフレームがAlexa搭載デバイスにレンダリングされることが望ましいです。 ストリームのキーフレームレートとバッファー時間を調節することで、起動の待機時間を最適化できます。

ローカルおよびリモート実行の推奨事項

Alexa搭載デバイスと同じローカルネットワークにあるURIを返すべきか、インターネット接続があればどこからでもアクセスできるリモートURIを返すべきかということについて、特に要件はありません。各自のデバイス制御クラウドコンフィギュレーションに合うURIを返すようにします。どちらのURIを選んだ場合でも、TLS 1.2の使用も含め、すべての技術要件を満たしている必要があります。

一般的に、デフォルトでは、URIにはローカルでもリモートでもアクセスできません。ローカルおよびリモートでURIにアクセスできるようにするには、ドメインを購入するかポートを転送します。しかしこれらの解決策は技術的にも難しいため、ユーザーがローカルとリモートの両方でURIにアクセスする必要がある場合にのみ、実行するようにします。

カメラスキルの実装

スキルは、Alexaから送信されるディレクティブを処理できる必要があります。また、セキュリティ要件を満たしている必要もあります。スキルコードの動作は次のとおりです。

  • Alexaから送信される検出リクエストやカメラストリームURIリクエストといったカメラ関連のディレクティブを、RTCSessionControllerまたはCameraStreamController機能で定義された内容にしたがって処理します。
  • 指定のトークンを使用してデバイス制御クラウド(この場合はカメラ)と通信します。
  • 必要に応じて、MediaMetadata機能で定義された内容に従って、新規のメディア録画または録画の削除をAlexaに通知します。
  • 応答イベントやエラーイベントをAlexaに返します。

ユーザー認可

スマートホームスキルAPIは、OAuth2.0の仕様に準拠しています。スマートホームスキルAPIからスマートホームスキルに送信されるリクエストにはすべて、OAuthアクセストークンが含まれています。これにより、ユーザーのデバイス制御クラウドにアクセスできるようになります。デバイス制御クラウドはAuthorization Code Grantのフロータイプをサポートしている必要があります。スキル認証とユーザーのアカウントリンクの詳細については、スマートホームなどのドメインのアカウントリンクを参照してください。

また、スキルがカメラ履歴をサポートする場合、Alexaイベントを送信する権限をリクエストする必要があります。これによって、メッセージに紐づけられたユーザーを識別できます。詳細については、アクセス権限を設定してAlexaのユーザー認証を実現するを参照してください。

メッセージの構造

カメラを対象としたスマートホームスキルのメッセージの構造は、カメラがサポートするプロトコルとデバイス機能によって異なります。

  • WebRTC(推奨)を使用するカメラのメッセージの構造の詳細については、Alexa.RTCSessionControllerドキュメントを参照してください。
  • RTSPを使用するカメラのメッセージの構造の詳細については、Alexa.CameraStreamControllerドキュメントを参照してください。

カメラ履歴とメディアの録画

ほとんどのセキュリティカメラは、物の動きや物音が検出されたときなどに録画イベントを作成します。これらをAlexa経由でユーザーが使用できるようにするには、MediaMetadata機能を実装します。この機能は、新規のメディア録画または録画の更新や削除をAlexaに通知するメッセージを定義します。Alexaは録画のリストを保存し、要求に応じてこれを表示します。詳細については、Alexa.MediaMetadataドキュメントを参照してください。

エラーメッセージ

認証やユーザーエラー、ハードウェアなどの問題でスキルがディレクティブに応答できない場合、適切なエラーメッセージを使って応答する必要があります。適切なエラータイプを示すErrorResponseを返します。各シナリオと送信すべきエラータイプを次の表に示します。

シナリオ 適切なエラーメッセージタイプ
対象のカメラエンドポイントは検出されるが、ユーザーが設定していません。 currentDeviceModeの値がNOT_PROVISIONEDNOT_SUPPORTED_IN_CURRENT_MODE
対象のカメラのバッテリー残量が少なく、コンテンツをストリーミングできません。 ENDPOINT_LOW_POWER
tokenが有効でない、取り消されている、またはリクエストに含まれていません。 INVALID_AUTHORIZATION_CREDENTIAL
tokenの有効期限が切れています。 INVALID_AUTHORIZATION_CREDENTIAL
エンドポイントがオフラインになっているなどの理由でスキルが対象のカメラに接続できませんでした。 ENDPOINT_UNREACHABLE
対象のカメラエンドポイントが一時的に利用できません。 NOT_SUPPORTED_IN_CURRENT_MODE
対象のカメラエンドポイントが見つかりません。 NO_SUCH_ENDPOINT
ランタイムエラーでスキルが失敗しました。可能であれば、より具体的なエラーを返すことをお勧めします。 INTERNAL_ERROR

その他のリソース