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 日