DRS - スキルのテスト
ステップ1. デバイスディスカバリーのテスト
Lambda関数のテスト
最も簡単なDiscoveryリクエストに対するLambda関数のテストは、Lambdaコンソール上で行うことができます。
- デフォルトの状態で右上のテストをクリックします。 テストイベントの設定画面が開きます。
 - 新しいテストイベントの作成が選択されたままにし、イベントテンプレートもHello Worldのままにします。イベント名に
discoveryと入力し、その下のエディタで既存のコードをすべて下記のJSONに置き換えます。 
{
    "directive": {
        "header": {
            "namespace": "Alexa.Discovery",
            "name": "Discover",
            "payloadVersion": "3",
            "messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
        },
        "payload": {
            "scope": {
                "type": "BearerToken",
                "token": "access-token-from-skill"
            }
        }
    }
}
- 作成をクリックし、右上のテストをクリックします。成功すると、実行結果に下記のような表示がされます:
 
{
  "event": {
    "header": {
      "correlationToken": "12345692749237492",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "name": "Discover.Response",
      "namespace": "Alexa.Discovery",
      "payloadVersion": "3"
    },
    "payload": {
      "endpoints": [{
          "endpointId": "appliance-001",
          "friendlyName": "プリンター",
          "description": "プリンター by XYZ株式会社",
          "manufacturerName": "XYZ株式会社",
          "displayCategories": [
            "OTHER"
          ],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InventoryLevelSensor",
              "version": "3",
              "instance": "InventoryLevelSensor-1",
              "properties": {
                "supported": [{
                  "name": "level"
                }],
                "proactivelyReported": true,
                "retrievable": true
              },
                // Other Capabilities here
            }
          ]
        }]
    }
  }
}
コネクテッドデバイスのテスト
実装が完了し、Lambda関数のテストも完了したら、コネクテッドデバイスが設計通り、スマートホームスキルによりディスカバリーされるかをテストします。
- Lambda関数のトリガーにスマートホームが正しく追加され有効化されていることを確認します。Lambdaコンソールでスマートホームスキルを選択し、"Alexa Smart Home"がトリガーに設定されていることを確認してください。もしも設定されていない場合はステップ5のLambda関数の設定に戻って設定を行ってください。
 - Alexa Appにサインインします (Android, iOS あるいは web。スキルを作成した開発者アカウントを使用してください。
 - Alexa Appでメニューからスキルを選択し、有効なスキルをクリック、開発スキルをクリックして、作成したスキルを選択します。
 - 有効にするボタンを押すと、アカウントリンクのページが表示され、デバイスメーカーのアカウントを入力します。もしもアカウントリンクがうまく行かない場合はデバイスメーカーのアカウントが有効であるか確認してください。問題ない場合、アカウントリンクの設定に誤りがある可能性があります。この場合のデバッグには、Alexa: Debugging account linkingが参考になります。アカウントリンクを無効にするにはスキルそのものを無効化してください。
 - デバイスを検出をクリックします。
 - もしもデバイスが検出されない場合は、Lambda関数のログをチェックして、AlexaからDiscoverディレクティブが届いているかを確認してください。よくあるミスの例としては、JSONのフォーマットにエラーがあるため、イベントがAlexa側で正しく理解されないケースです。
 - デバイスが正しく検出された場合は、スキルの他の機能(あれば)のテストに移行できます。
 
ステップ2. End-to-Endでの機能テスト
認証テストケースの実行
Levelセンサー
- 
    
Alexa Appを開いて、デバイスディスカバリーを行ってデバイスをセットアップしてください。通知および再発注の設定では、残量少時に再発注する (Automatic reorder when supply is low)を選択してください。
 - 
    
デバイスが正しく残量を計測し、正しく報告できているかチェックします。もしもデバイスのアプリにも残量を表示している場合、その残量と一致しているか確認します。
最新の消耗品レベルを確認するには、Device Settings > Supplyを選択します。
残量少の通知
消耗品の残量が少なくなり閾値を下回ると、Eメールでの通知が行われます。いくつかのケース、例えば電池のような誤差変動がある場合、変動を考慮し、3回閾値を下回ってから通知を行っています。 - 
    
スロット(
replenishmentId)ごとの残量少検知デバイスを動作させ、消耗品の残量が閾値を下回るレベルまで低下させます。(注:再発注が行われるためには、閾値を下回る報告を3回連続レポートする必要があります)
 - 
    
スロット(
replenishmentId)ごとの残量リセット消耗品の交換(例えば、電池やインクの交換)を行い、交換後の消耗品レベルの
ChangeReportが少なくとも1回Alexaに送信されるようにします。 - 
    
選択消耗品の確認
Device Settings > Supply を選択し、選択されているASINを確認します。ここにはデバイスで再発注可能なASINの一覧が表示されます。
 - 
    
スロット(
replenishmentId)ごとの残量少検知- Device Settingsで、Status (Supply)の中のChangeを選択します。
 - Supply Settingsの"Notification and reorder settings"ページを開きます。
 - Notify me when supply is lowを選択し、Continueを押します。
 - デバイスを動作させ、消耗品の残量が閾値を下回るレベルまで低下させます。
 
 
Usageセンサー
- 
    
スキルを有効化し、デバイスのディスカバリーを行った上で、Alexa Appを開き、デバイス > (認証を行うデバイス) > サプライ > 消費財の低残量時設定 > スマートリオーダー に設定します。お客様が選択できるASINを設定してください。
 - 
    
現在の在庫設定から、手元の在庫量をしきい値から+ 1の値に設定します (例えば、しきい値が10個の場合、11に設定してください)。そのデバイスで初めて設定を行う場合、デバイス設定 > サプライ > 追加サプライの設定 を行います。既に設定されている場合、 > 現在の使用状況と在庫 > 手元の在庫量 を設定します。
 - 
    
少なくとも3回の消費イベントを送信し、デバイス設定 > サプライ で消費量が正しく反映されているかを確認します。消費イベントの受信に伴い、手元の在庫量が報告した消費量だけ減少していることを確認します。 注意: それぞれの消費イベントに含むMessage Idは、一意である(毎回異なるものである)必要があります。
 - 
    
3回の送信後、手元の在庫量 がしきい値を下回っていることを確認します。
 
消耗品の在庫量が少なくなり、しきい値を下回ると、Eメールでの通知が行われます。これはしきい値を下回った後即座には通知されず、およそ6時間経ってから行われます。
次のステップ
テストの結果、作成したスキルが2つのDRSの主要な機能(Discoveryと消耗品の通知) について満足できる動作が確認できたら、認証プロセスに移行することができます。Amazon DRSの担当者またはdrs-support@amazon.comにコンタクトし、次のステップの認証プロセスについて議論を開始してください。通常1-5営業日に次のステップについて返信いたします。
認証に際し、Amazonの担当者に対し下記の情報をお知らせください:
- Vendor Code (DRS developer consoleに表示されます)
 - 作成したSkill ID
 - テストを実行したデバイスのEndpoint ID (デバイス固有シリアル番号)
 - 上記テストを実行した際に使用したAmazonアカウントのCustomer ID
 
Customer IDは、Developer Consoleにログイン後、こちらdeveloper.amazon.com/mycid.htmlにアクセスしてください。
Last updated: Mar 08, 2021

