WebRTCスキル向けスマートホームデバッガーを使用する



WebRTCスキル向けスマートホームデバッガーを使用する

AlexaスマートホームスキルにAlexa.RTCSessionControllerインターフェースを実装している場合、スマートホームデバッガーを使ってスキルのテストやデバッグができます。RTCSessionControllerインターフェースのシナリオ例としては、スキルでスマートホームセキュリティカメラを制御する場合が挙げられます。ユーザーが「アレクサ、玄関のカメラを見せて」と言うと、カメラのビデオフィードがAlexaデバイスに表示されます。

Alexaスキルの開発やテストを行う際、スマートホームデバッガーを使ってWebRTCセッションのログをリアルタイムに確認できます。たとえば次のような項目で、正しい動作を確認したり、問題を検出したりできます。

  • 不正なDTLSバージョン
  • 無効なSDPアンサー
  • ICE候補が無効な場合やICE候補が存在しない場合
  • サポートされていないコード
  • JSON形式の誤り

ChangeReportAddOrUpdateReportDeleteReportの各イベントで問題をデバッグする方法の詳細については、スマートホームデバッガーを使用するを参照してください。

前提条件

WebRTCセッション中にスマートホームデバッガーを使用するには、以下が必要です。

  • スキルがリアルタイム通信(RTC)可能なデバイスと通信できること。
  • スキルがAlexa.RTCSessionControllerインターフェースを実装していること。
  • FireTVやEchoデバイス(例:Echo Dot、Echo Plus、Echo Show、Echo Spot)など、スキルのテストに使用できるAlexaデバイスを持っていること。

スマートホームデバッガーにアクセスする

スマートホームデバッガーの使用方法

  1. Alexa開発者コンソールを開いて、ログインします。

  2. スマートホームデバイスに関連付けられたスマートホームスキルを開きます。

  3. テストページを開きます。

  4. スキルのテストを有効にします。

  5. ページ上部で、デバイスのログスマートホームデバッガーを選択します。

  6. ページのスマートホームデバッガーセクションで、スマートホームデバッガーをオンに切り替えます。

手順を完了したら、RTCデバイスとの対話によりスキルのテストを開始します。イベント情報がデバイスログに表示されます。

イベントを確認する

スマートホームデバッガーには、Alexaがスキルから受け取るイベントと、Alexa開発者コンソールへのサインインに使用したAmazonアカウントのログが表示されます。デバイスログの各イベントには、Alexaが受信したイベントに関する詳細が記載されたJSONドキュメントが含まれています。

スマートホームデバッガーで問題が発生した場合は、Alexa開発者向け問い合わせ窓口ページから問い合わせてください。

イベントが正常に処理された例

以下は、スマートホームデバッガーに、Alexaが正常に処理できたSessionDisconnectedイベントのログが表示された例です。eventフィールドには、Alexaに送信したイベントのJSONドキュメントが含まれます。

{
    "header": {
        "namespace": "SkillDebugger",
        "name": "CaptureDebuggingInfo",
        "messageId": "<メッセージID>"
    },
    "payload": {
        "skillId": "<スキルID>",
        "timestamp": "2020-09-29T19:08:14.545Z",
        "dialogRequestId": null,
        "skillRequestId": null,
        "type": "RTCSessionControllerSuccess",
        "content": {
            "eventType": "SessionDisconnectedResponse",
            "event": {}
        }
    }
}

接続されたセッションで正常に処理されたイベントの例

以下は、スマートホームデバッガーに、Alexaが正常に処理できた接続状態の変更ログが表示された例です。

{
    "header": {
        "namespace": "SkillDebugger",
        "name": "CaptureDebuggingInfo",
        "messageId": "<メッセージID>"
    },
    "payload": {
        "skillId": "<スキルID>",
        "timestamp": "2020-09-29T19:08:14.545Z",
        "dialogRequestId": null,
        "skillRequestId": null,
        "type": "RTCSessionControllerSuccess",
        "content": {
            "eventType": "ConnectionStateEvent",
            "event": {
                "oldState": "DISCONNECTED",
                "newState": "CONNECTED"
            }
        }
    }
}

メディアフローで正常に処理されたイベントの例

以下は、スマートホームデバッガーに、AlexaがRTCメディアを正常に処理できた場合のログが表示された例です。stateフィールドは、FLOWINGNOT_FLOWINGのいずれかになります。mediaTypeフィールドは、AUDIODATAVIDEOのいずれかになります。

{
    "header": {
        "namespace": "SkillDebugger",
        "name": "CaptureDebuggingInfo",
        "messageId": "<メッセージID>"
    },
    "payload": {
        "skillId": "<スキルID>",
        "timestamp": "2020-09-29T19:08:14.545Z",
        "dialogRequestId": null,
        "skillRequestId": null,
        "type": "RTCSessionControllerSuccess",
        "content": {
            "eventType": "MediaFlowOutStateChangeEvent",
            "event": {
                "state": "FLOWING",
                "mediaType": "VIDEO"
            }
        }
    }
}

エラーになったイベントの例

以下は、スマートホームデバッガーに、Alexaが正常に処理できなかったSessionDisconnectedイベントのログが表示された例です。eventフィールドには、Alexaに送信したイベントのJSONドキュメントが含まれます。

{
    "header": {
        "namespace": "SkillDebugger",
        "name": "CaptureDebuggingInfo",
        "messageId": "<メッセージID>"
    },
    "payload": {
        "skillId": "<スキルID>",
        "timestamp": "2020-09-29T19:08:14.545Z",
        "dialogRequestId": null,
        "skillRequestId": null,
        "type": "RTCSessionControllerFailure",
        "content": {
            "eventType": "SessionDisconnectedException",
            "errorCode": "LAMBDA_GENERAL_ERROR",
            "errorMessage": "Lambdaの一般的なエラーメッセージです。",
            "event": null
        }
    }
}

RTCSessionControllerのエラーコード

次の表は、スマートホームデバッガーに表示される可能性のあるRTCSessionControllerイベントのエラーコードのリストです。

エラーコード エラーメッセージ
SETUP_EVENT_ERROR 同時リクエストが多すぎます。
NO_VIDEO_ERROR ビデオの待機中にタイムアウトになったため接続を確立できませんでした。
CONNECTION_ERROR 接続の確立に失敗しました。
INTERNAL_ERROR 接続の確立中に内部エラーが発生しました。