Alexa.WakeOnLANControllerインターフェース 3
Wake-on-LAN(WoL)またはWake on Wireless LAN(WoWLAN)による電源オンをサポートしているスマートホームデバイス用のAlexaスキルにAlexa.WakeOnLANControllerインターフェースを実装します。このインターフェースは、Alexa.PowerControllerインターフェースのみでは電源をオンにできないエンドポイントに便利です。低電力モードでは、クラウドがインターネット経由でエンドポイントに到達できないためです。このインターフェースを使用することで、ユーザーのサポートされているAlexaデバイスから、Alexaによりローカルネットワークでエンドポイントに直接Wake-on-LANメッセージが送信されます。エンターテイメントデバイスのスキルの詳細については、エンターテイメントデバイス用のスマートホームスキルを作成するを参照してください。
Alexa.WakeOnLANControllerインターフェースがサポートする言語については、Alexaインターフェースとサポートしている言語の一覧を参照してください。メッセージプロパティの定義については、Alexaインターフェースのメッセージとプロパティを参照してください。
発話
Alexa.WakeOnLANControllerインターフェースではプリビルド音声対話モデルを使用します。ユーザーがこのような発話をしたら、Alexaがそれに対応するディレクティブをスキルに送信します。
以下に、ユーザーの発話の例を示します。
Alexa, turn on the TV.
Alexa, schalte den Fernseher ein.
Alexa, accendi la TV.
アレクサ、テレビをつけて
Alexa, enciende la televisión.
ディレクティブワークフロー
Alexa.WakeOnLANControllerインターフェースは、Alexa.PowerControllerインターフェースと共に実装します。WakeOnLANControllerインターフェースをサポートするには、次の手順に従います。
- 
    
デバイスの検出中に、スキルで
WakeOnLANControllerインターフェースとPowerControllerインターフェースの両方のサポートを宣言します。 - 
    
ユーザーがAlexaに
WakeOnLANControllerインターフェースを実装したデバイスの電源をオンにするよう話しかけます。 - 
    
AlexaがPowerController.TurnOnディレクティブをスキルに送信します。
 - 
    
スキルから次の3つの応答イベントを送信します。
- 
        
DeferredResponseイベントをAlexaに送信します。
 - 
        
WakeOnLANController.WakeUpイベントをAlexaイベントゲートウェイに送信します。
Alexaは
WakeUpイベントを処理し、サポートしているデバイスのいずれかに、エンドポイントの検出応答で提供されたMACアドレスにWake-on-LAN(WoL)メッセージを配信するよう指示します。その後、Alexaイベントゲートウェイからスキルに成功応答またはエラー応答が送信されます。 - 
        
最終的なResponseまたはErrorResponseイベントをスキルからAlexaに送信します。
 
 - 
        
 
サポートされているAlexa搭載デバイス
スキルのユーザーは、電源をオンにするデバイスと同じローカルネットワークにAlexaデバイスを接続している必要があります。Wake-on-LAN機能をサポートしているAlexaデバイスは以下のとおりです。
- Amazon Tap、Echo(全世代)
 - Echo Dot(全世代)
 - Echo Input
 - Echo Plus(全世代)
 - Echo Show(全世代)
 - Echo Spot
 
出力可能なプロパティ
Alexa.WakeOnLANControllerインターフェースでは、レポート可能なプロパティを定義しません。
検出
Alexa.WakeOnLANControllerをサポートするエンドポイントを示すには、Alexa.Discoveryで説明されている標準の検出メカニズムを使用します。
Alexaからスキルに状態レポートリクエストが送信されるときにレポートするすべてのインターフェースとプロパティのretrievableをtrueに設定します。変更レポートでAlexaにプロアクティブにレポートするインターフェースとプロパティのproactivelyReportedをtrueに設定します。
表示カテゴリーの一覧は、表示カテゴリーを参照してください。
Alexa.WakeOnLANControllerには、標準の検出応答フィールドのほかに、次のフィールドを含むconfigurationオブジェクトを含めます。
| プロパティ | 説明 | 型 | 必須 | 
|---|---|---|---|
MACAddresses | 
        起動するデバイスのMACアドレスです。 | 配列 | ◯ | 
検出応答の例
以下は、WakeOnLANControllerインターフェースとPowerControllerインターフェースをサポートする1つのエンドポイントに対するDiscover.Responseメッセージの例です。
{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "エンドポイントの一意のID",
          "manufacturerName": "エンドポイントのメーカー名",
          "description": "Alexaアプリに表示される説明",
          "friendlyName": "Alexaアプリに表示されているデバイス名",
          "displayCategories": ["TV"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.WakeOnLANController",
              "version": "3",
              "properties": {},
              "configuration": {
                "MACAddresses": ["00-14-22-01-23-45"]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },            
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}
ディレクティブ
Alexa.WakeOnLANControllerインターフェースではディレクティブを定義しませんが、Alexa.PowerControllerインターフェースのTurnOnディレクティブとの組み合わせで動作します。
TurnOnディレクティブ
ユーザーがデバイスの電源をオンにできるように、Alexa.PowerControllerインターフェースのTurnOnディレクティブをサポートします。Alexa.WakeOnLANControllerインターフェースを実装する場合、TurnOnディレクティブに対する応答は、通常の応答とは異なります。
TurnOnディレクティブの例
以下は、Alexaがスキルに送信するTurnOnディレクティブの例です。
{
  "directive": {
    "header": {
      "namespace": "Alexa.PowerController",
      "name": "TurnOn",
      "messageId": "一意のバージョン4 UUID",
      "correlationToken": "opaque相関トークン",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID",
      "cookie": {}
    },
    "payload": {}
  }
}
TurnOnディレクティブの応答
通常、PowerControllerインターフェースのTurnOnディレクティブをサポートする場合は、1つの応答を送信します。Alexa.WakeOnLANControllerインターフェースを実装するには、3つの応答を送信します。
DeferredResponseイベント
次の例は、TurnOnディレクティブに対する1番目の応答を示しています。同期的なDeferredResponseイベントをAlexaに送信します。オプションで、WakeUpイベントを送信するまでのおおよその時間であるestimatedDeferralInSeconds(単位:秒)を含めます。詳細については、DeferredResponseを参照してください。
{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "DeferredResponse",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "correlationToken": "リクエストに一致するopaque相関トークン",
      "payloadVersion": "3"
    },
    "payload": {
      "estimatedDeferralInSeconds": 15
    }
  }
}
WakeUpイベント
次の例は、TurnOnディレクティブに対する2番目の応答を示しています。WakeUpイベントをAlexaイベントゲートウェイに非同期的に送信します。詳細については、イベントゲートウェイにイベントを送信するを参照してください。
{
  "event": {
    "header": {
      "namespace": "Alexa.WakeOnLANController",
      "name": "WakeUp",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "correlationToken": "リクエストに一致するopaque相関トークン",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "OFF",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 500
      }
    ]
  }
}
ResponseイベントまたはErrorResponseイベント
AlexaイベントゲートウェイにWakeUpイベントを送信すると、イベントゲートウェイからスキルに成功応答またはエラー応答が送信されます。TurnOnディレクティブに対する3番目の応答は、対応するResponseイベントまたはErrorResponseイベントである必要があります。
次の例は、TurnOnディレクティブに対する3番目の応答としてのResponseイベントを示しています。
{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "correlationToken": "リクエストに一致するopaque相関トークン",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "ON",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 500
      }
    ]
  }
}
TurnOnディレクティブのエラー処理
TurnOnディレクティブを正しく処理できなかった場合は、TurnOnディレクティブに対する3番目の応答として、Alexa.ErrorResponseイベントを使用して応答します。
状態レポート
Alexaはエンドポイントの状態についての情報をリクエストするために、ReportStateディレクティブを送信します。AlexaがReportStateディレクティブを送信したら、それに対する応答としてStateReportイベントを送信します。この応答には、contextオブジェクトのすべてのretrievableプロパティの現在の状態を含めます。retrievableプロパティは検出応答で特定します。状態レポートの詳細については、状態および変更レポートについてを参照してください。
Alexa.WakeOnLANControllerインターフェースでは、取得可能なプロパティを定義しません。ただし、スキルでデバイス用にほかのインターフェースも実装している場合、それらのインターフェースのプロパティについて状態レポートを行う必要があります。たとえば、Alexa.PowerControllerインターフェースからのプロパティをレポートする必要があります。StateReport応答の例
{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "StateReport",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "correlationToken": "リクエストに一致するopaque相関トークン",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "OFF",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}
変更レポート
エンドポイントの状態の変化をプロアクティブにレポートするために、ChangeReportイベントを送信します。プロアクティブにレポートするプロパティは検出応答で特定します。変更レポートの詳細については、状態および変更レポートについてを参照してください。
Alexa.WakeOnLANControllerインターフェースでは、プロアクティブにレポート可能なプロパティを定義しません。ただし、スキルでデバイス用にほかのインターフェースも実装している場合、それらのインターフェースのプロパティについて変更レポートを行う必要があります。たとえば、Alexa.PowerControllerインターフェースからのプロパティをレポートする必要があります。ChangeReportイベントの例
{  
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "ChangeReport",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID"
    },
    "payload": {
      "change": {
        "cause": {
          "type": "VOICE_INTERACTION"
        },
        "properties": [
          {
            "namespace": "Alexa.PowerController",
            "name": "powerState",
            "value": "ON",
            "timeOfSample": "2017-02-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  },
  "context": {
    "namespace": "Alexa.EndpointHealth",
    "name": "connectivity",
    "value": {
      "value": "OK"
    },
    "timeOfSample": "2017-02-03T16:20:50.52Z",
    "uncertaintyInMilliseconds": 0
  }
}
関連トピック
最終更新日: 2023 年 05 月 15 日