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


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

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

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

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

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

前提条件

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

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

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

スマートホームデバッガーにアクセスするには、Alexa開発者コンソールを使用します。

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

  1. Alexa開発者コンソールにサインインします。

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

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

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

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

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

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

イベントを確認する

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

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

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

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

{
    "header": {
        "namespace": "SkillDebugger",
        "name": "CaptureDebuggingInfo",
        "messageId": "メッセージID"
    },
    "payload": {
        "skillId": "skill 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": "skill 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": "skill 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": "skill 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 接続の確立中に内部エラーが発生しました。


このページは役に立ちましたか?

最終更新日: 2024 年 12 月 20 日