状態レポートのテストツールを使用する方法



状態レポートのテストツールを使用する方法

状態レポートのテストツールを使用すると、エンドポイントプロパティの現在の状態がいつスキルに照会されるか、また、AlexaがプロアクティブなChangeReportイベントを使用していつエンドポイントプロパティをレポートするかを確認できます。この情報は、スマートホームスキルのデバッグに使用できます。

前提条件

このドキュメントに掲載されているトラブルシューティングおよびテストに関するヒントを使用するには、以下の前提条件を満たす必要があります。

  • 状態の更新(ChangeReport)イベントをAlexaイベントゲートウェイに送信するスマートホームスキルを実装していること。

  • エンドポイントのプロパティが変更されたときにChangeReportイベントを送信すること。つまり、エンドポイントがサポートする機能に定義されているすべてのプロパティについて、検出の応答でproactivelyReported=trueと指定されていること。プロアクティブなレポートがエンドポイントの一部のプロパティでしかサポートされていない場合、このツールとガイドは使用できません。

詳細については、以下のトピックを参照してください。

1.ツールにアクセスする

状態レポートのテストツールへのアクセスをリクエストするには、次の手順に従います。

アクセスが可能になった時点、またはさらに情報が必要な場合に、Amazonが連絡します。

2.サインインしてスキルを有効にする

このツールは、ウェブベースの既存のAlexaアプリのアドオンです。必ず該当する地域のAlexaアプリを使用し、テストツールへのアクセスをリクエストしたときと同じアカウントを使用し手サインインするようにしてください。

Alexaアプリの地域とURLの一覧は以下のとおりです。

スマートホームスキルの有効化とアカウントリンクが完了していない場合は、どちらも実行します。方法については、スマートホームスキルの作成手順を参照してください。

3.状態の情報を表示して把握する

Alexaアプリで、スマートホームデバイスの順に移動します。開発者アカウントでツールが正常に有効になっている場合は、各デバイスの詳細なデバッグ情報が表示されます。次の図は、サンプルのデバイスを示しています。

ツールで出力されたCapability statesの各行は、検出の応答でプロアクティブにレポート可能としてマークしたエンドポイントのプロパティ、プロパティの現在の設定、そのプロパティに対してクエリーが実行されたかどうかを表します。

たとえば、図に示されているWireless In_wall Dimmerエンドポイントのプロパティの値は以下のとおりです。

  • connectivity: OK
  • brightness: 0
  • powerState: OFF

以下の画像は、プロパティのレポートをさらに詳細に示したものです。

特にDeepQueryの値に注意してください。これは、プロアクティブな状態の更新イベントと他のイベントデータが使用されているかどうか、またはプロパティ値を照会するクエリーが発生したかどうかを示すブール値です。

  • DeepQuery=True: Alexaにキャッシュされた値がなかったか、あるいは、キャッシュされた値をレポートする前に、AlexaがスキルにReportStateディレクティブを送ることで値が更新されたことを示します。レポートされた値は、スキルからの応答で送信されるStateReportに含まれています。

  • DeepQuery= False: Alexaがキャッシュされたプロパティ値を提供したことを示します。

4.トラブルシューティング

プロアクティブな状態の更新が適切に実装されているにもかかわらず、DeepQuery=Trueと指定されている場合は、以下の項目を確認してください。

  • 新たに検出されたエンドポイントでは、状態のキャッシュが空になっている場合があります。ブラウザでAlexaアプリを更新してください。
  • エンドポイントの機能で定義されているすべてのプロパティでproactivelyReported=trueが指定されていること、すべてのプロパティ値がレポートされるようになっていることを確認します。EndpointHealthによって定義された接続プロパティもこれに含まれます。
  • 逆に、レポート対象が、エンドポイントの機能で定義されているプロパティの値のみになっていることも確認します。たとえば、エンドポイントがBrightnessControllerインターフェースを実装している場合、brightnessDeltaは機能のプロパティではないため、proactivelyReportedとしてレポートしません。
  • サーモスタットデバイスでは、デバイスの検出時にレポートされるすべてのサポート対象設定ポイントがキャッシュされていることを確認するため、冷房/暖房モードと自動モードの切り替えが必要になる場合があります。

5.その他のテストを実施する

すべてのプロパティでDeepQuery=Falseが指定されていることを確認したら、プロアクティブな状態の更新が行われる可能性のあるすべてのシナリオを実施して、プロパティ値が更新されることをデバッグツールで確認します。

  • Alexaを使用せずに、デバイスの状態を操作します。たとえば、別のアプリケーションや物理デバイスコントロールを使用して、デバイスのオン/オフを切り替えたり、設定を変更したりします。この操作によって、スキルからAlexaイベントゲートウェイにプロアクティブな状態の更新が送信されます。ブラウザでAlexaアプリを更新し、DeepQuery=Falseが指定されていること、およびプロパティにデバイスの状態が想定どおりに表示されることを確認します。
  • EndpointHealthのプロアクティブな状態が更新されるかどうか、必ずテストするようにしてください。方法としては、デバイスの電源を切り、デバイス接続の指定されたポーリング間隔が過ぎるまで待機します。ブラウザを更新して、Alexaアプリでデバイスの状態を確認します。また、再度デバイスの電源を入れて、Alexaアプリですべてのプロパティが正常に更新されることを確認します。
  • リンクする最初のアカウントや最近のアカウントだけでなく、スキルの有効化とアカウントリンクを行ったすべてのAmazonアカウントで、プロアクティブな状態の更新が送信されることを検証します。通常、家族のメンバーはスマートホームデバイスを共有しますが、それぞれがデバイスのスキルに関連付けられた個別のAmazonアカウントを所有しています。このシナリオをテストするには、同一のデバイスの資格情報を使用して、さまざまなAmazonアカウントからスキルの有効化とアカウントリンクを行います。その後、Alexaを使用せずにデバイスの状態を変更します。それぞれのAmazonユーザーとしてログインし、デバッグツールを使用して、プロパティの状態が正しいこと、DeepQueryがfalseであることを確認します。これにより、各ユーザーでChangeReportイベントが正しく送信されることを確認できます。トラブルシューティングツールを使用してこのテストを行うには、少なくとも2つのAmazonアカウントを有効にしておく必要があります。追加のアカウントを有効にする必要がある場合は、セクション1を参照してください。有効にするアカウントでログインしてから、お問い合わせフォームに入力してください。
  • ログの応答を確認して、プロアクティブな状態の更新がAlexaイベントゲートウェイに正しく送信されていることを確認します。

最後に、このデバッグ方法を使用して問題が発生した場合は、開発者サポート用のお問い合わせフォームを使用してください。