Alexa.LockControllerインターフェース3
AlexaスキルにAlexa.LockController
インターフェースを実装すると、ユーザーがロック可能なデバイスをロック/ロック解除できます。セキュリティスキルの詳細については、スマートホームセキュリティの概要を参照してください。
LockController
インターフェースがサポートする言語については、Alexaインターフェースとサポートしている言語の一覧を参照してください。メッセージプロパティの定義については、Alexaインターフェースのメッセージとプロパティを参照してください。
発話
Alexa.LockController
インターフェースを使用する場合、Alexaサービスが開発者に代わって音声対話モデルを提供します。ユーザーがこのような発話をすると、Alexaがそれに対応するディレクティブまたは状態レポートリクエストをスキルに送信します。
以下に、ユーザーの発話の例を示します。
アレクサ、玄関に鍵をかけて。
アレクサ、裏口の鍵を開けて。
Alexa, is my door locked?
Alexa, is my door unlocked?
Alexa, verrouille la porte d'entrée.
Alexa, déverrouille la porte arrière.
Alexa, est-ce que la porte est verrouillée?
Alexa, est-ce que la porte est déverrouillée?
Alexa, schließe meine Haustür ab.
Alexa, entsperre die Hintertür.
Alexa, ist meine Tür verschlossen?
Alexa, ist meine Tür aufgeschlossen?
Alexa, मेरे सामने के दरवाजे को बंद कर दो।
Alexa, पिछले दरवाजे को खोलो।
Alexa, क्या मेरा दरवाजा बंद है?
Alexa, क्या मेरा दरवाजा खुला है?
Alexa, chiudi a chiave la mia porta d'ingresso.
Alexa, sblocca la porta sul retro.
Alexa, la mia porta è chiusa a chiave?
Alexa, la mia porta è aperta?
アレクサ、玄関をロックして
アレクサ、裏口を開けて
アレクサ、玄関の鍵は閉まっている?
アレクサ、玄関の鍵は開いている?
Alexa, tranque minha porta da frente.
Alexa, destranque a porta traseira.
Alexa, a minha porta está trancada?
Alexa, a minha porta está destrancada?
Alexa, bloquea la puerta de mi casa.
Alexa, desbloquea la puerta trasera.
Alexa, ¿mi puerta está bloqueada?
Alexa, ¿mi puerta está desbloqueada?
Alexa, doe de voordeur op slot.
Alexa, haal de achterdeur van het slot.
Alexa, is mijn deur op slot?
Alexa, is mijn deur van het slot?
出力可能なプロパティ
Alexa.LockController
インターフェースは、lockState
プロパティを使用してロックの状態を表します。次の表にlockStateの有効な値をまとめています。
値 | 説明 |
---|---|
LOCKED |
デバイスは現在ロックされています。 |
UNLOCKED |
現在、デバイスのロックは解除されています。 |
JAMMED |
ロック機構で不具合が発生したため、ロックがロック状態またはロック解除状態に遷移できません。 |
検出
Alexa.LockController
をサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。
Alexaからスキルに状態レポートリクエストが送信されるときにレポートするすべてのインターフェースとプロパティのretrievable
をtrueに設定します。変更レポートでAlexaにプロアクティブにレポートするインターフェースとプロパティのproactivelyReported
をtrueに設定します。
表示カテゴリーにはSMARTLOCK
を使用します。表示カテゴリーの一覧は、表示カテゴリーを参照してください。
Alexa user identificationを使用するConnected Vehicleの場合は、検出レスポンスにdirectiveConfigurations
を含めて、認証の信頼レベルとポリシー名を設定します。詳細については、directiveConfigurationsを参照してください。
Alexaにデバイスの健全性を通知する場合、Alexa.EndpointHealth
インターフェースも実装してください。
検出応答の例
以下は、Alexa.LockController
インターフェースをサポートする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": ["SMARTLOCK"],
"cookie": {},
"capabilities": [
{
"type": "AlexaInterface",
"interface": "Alexa.LockController",
"version": "3",
"properties": {
"supported": [
{
"name": "lockState"
}
],
"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は次のAlexa.LockController
インターフェースディレクティブをスキルに送信します。
Lockディレクティブ
Lock
ディレクティブをサポートすると、ユーザーはエンドポイントをロックするようリクエストできます。
以下に、ユーザーの発話の例を示します。
Alexa, lock my front door.
Alexa, verrouille la porte d'entrée.
Alexa, schließe meine Haustür ab.
Alexa, मेरे सामने के दरवाजे को बंद कर दो।
Alexa, chiudi a chiave la mia porta d'ingresso.
アレクサ、玄関をロックして
Alexa, tranque minha porta da frente.
Alexa, bloquea la puerta de mi casa.
Alexa, doe de voordeur op slot.
Lockディレクティブの例
以下は、Alexaがスキルに送信するLock
ディレクティブの例です。
{
"directive": {
"header": {
"namespace": "Alexa.LockController",
"name": "Lock",
"messageId": "一意のバージョン4 UUID",
"correlationToken": "opaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "OAuth2.0ベアラートークン"
},
"endpointId": "エンドポイントID",
"cookie": {}
},
"payload": {}
}
}
Lock応答
Lock
ディレクティブを正しく処理したら、ハードウェアでタスクを完了できる速度に応じて応答します。
- ハードウェアが5秒以内にロックを完了できる場合は、Responseイベントを送信します。
- ハードウェアがロックを完了するまでの時間が5秒より長い場合、まず同期DeferredResponseイベントを送信してから、ロックが完了した時点で
Response
イベントを送信します。
いずれの場合も、Response
イベントは同期的にも非同期的にも送信できます。Response
を非同期で送信する場合、相関トークンと、認可トークンを含めたスコープを含めます。
応答のコンテキストでlockStateプロパティの値を指定します。
Lock応答の例
{
"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.LockController",
"name": "lockState",
"value": "LOCKED",
"timeOfSample": "2017-02-03T16:20:00.00Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
遅延応答と応答を行う低速ロックの例
次の例では、完了に5秒以上かかるLockディレクティブに対する2つの応答を示します。最初に同期DeferredResponse
イベントを送信します。オプションで、2番目の応答を送信する前のおおよその時間であるestimatedDeferralInSeconds
(単位:秒)を含めます。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "DeferredResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"payload": {
"estimatedDeferralInSeconds": 15
}
}
}
次に、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.LockController",
"name": "lockState",
"value": "LOCKED",
"timeOfSample": "2017-02-03T16:20:00.00Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
Lockディレクティブのエラー処理
Lock
ディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。
Unlockディレクティブ
Unlock
ディレクティブをサポートすると、ユーザーはエンドポイントのロックを解除するようリクエストできます。デフォルトでは、デバイスのロックを解除できません。ロック可能なエンドポイントスキルをテストする場合は、Alexaアプリでデバイスを編集することで、まずロック解除機能を有効にします。
以下に、ユーザーの発話の例を示します。
Alexa, unlock the back door.
Alexa, déverrouille la porte arrière.
Alexa, entsperre die Hintertür.
Alexa, पिछले दरवाजे को खोलो।
Alexa, sblocca la porta sul retro.
アレクサ、裏口を開けて
Alexa, destranque a porta traseira.
Alexa, desbloquea la puerta trasera.
Alexa, haal de achterdeur van het slot.
Unlockディレクティブの例
以下は、Alexaがスキルに送信するUnlock
ディレクティブの例です。
{
"directive": {
"header": {
"namespace": "Alexa.LockController",
"name": "Unlock",
"messageId": "一意のバージョン4 UUID",
"correlationToken": "opaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "OAuth2.0ベアラートークン"
},
"endpointId": "エンドポイントID",
"cookie": {}
},
"payload": {}
}
}
Unlock応答
Unlock
ディレクティブを正しく処理したら、ハードウェアでタスクを完了できる速度に応じて応答します。
- ハードウェアが5秒以内にロック解除を完了できる場合は、Responseイベントを送信します。
- ハードウェアがロック解除を完了するまでの時間が5秒より長い場合、まず同期DeferredResponseイベントを送信してから、ロック解除が完了した時点で
Response
イベントを送信します。
いずれの場合も、Response
イベントは同期的にも非同期的にも送信できます。
応答のコンテキストでlockStateプロパティの値を指定します。
Unlock応答の例
{
"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.LockController",
"name": "lockState",
"value": "UNLOCKED",
"timeOfSample": "2017-02-03T16:20:00.00Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
遅延応答と応答を行う低速ロック解除の例
次の例では、完了に5秒以上かかるunlockディレクティブに対する2つの応答を示します。最初に同期DeferredResponse
イベントを送信します。オプションで、2番目の応答を送信する前のおおよその時間であるestimatedDeferralInSeconds
(単位:秒)を含めます。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "DeferredResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"payload": {
"estimatedDeferralInSeconds": 20
}
}
}
次に、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.LockController",
"name": "lockState",
"value": "UNLOCKED",
"timeOfSample": "2017-02-03T16:20:00.00Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
Unlockディレクティブのエラー処理
Unlock
ディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。
状態レポート
Alexaはエンドポイントの状態についての情報をリクエストするために、ReportState
ディレクティブを送信します。AlexaがReportState
ディレクティブを送信したら、それに対する応答としてStateReport
イベントを送信します。この応答には、contextオブジェクトのすべてのretrievableプロパティの現在の状態を含めます。retrievableプロパティは検出応答で特定します。状態レポートの詳細については、状態および変更レポートについてを参照してください。
以下に、ユーザーの発話の例を示します。
Alexa, is my door locked?
Alexa, is my door unlocked?
Alexa, est-ce que la porte est verrouillée?
Alexa, est-ce que la porte est déverrouillée?
Alexa, ist meine Tür verschlossen?
Alexa, ist meine Tür aufgeschlossen?
Alexa, क्या मेरा दरवाजा बंद है?
Alexa, क्या मेरा दरवाजा खुला है?
Alexa, la mia porta è chiusa a chiave?
Alexa, la mia porta è aperta?
アレクサ、玄関の鍵は閉まっている?
アレクサ、玄関の鍵は開いている?
Alexa, a minha porta está trancada?
Alexa, a minha porta está destrancada?
Alexa, ¿mi puerta está bloqueada?
Alexa, ¿mi puerta está desbloqueada?
Alexa, is mijn deur op slot?
Alexa, is mijn deur van het slot?
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.LockController",
"name": "lockState",
"value": "JAMMED",
"timeOfSample": "2017-02-03T16:20:00.00Z",
"uncertaintyInMilliseconds": 1000
}
]
}
}
変更レポート
エンドポイントの状態の変化をプロアクティブにレポートするために、ChangeReport
イベントを送信します。プロアクティブにレポートするプロパティは検出応答で特定します。変更レポートの詳細については、状態および変更レポートについてを参照してください。
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": "PHYSICAL_INTERACTION"
},
"properties": [
{
"namespace": "Alexa.LockController",
"name": "lockState",
"value": "LOCKED",
"timeOfSample": "2017-02-03T16:20:5000.00ZZ",
"uncertaintyInMilliseconds": 1000
}
]
}
}
},
"context": {
"namespace": "Alexa.EndpointHealth",
"name": "connectivity",
"value": {
"value": "OK"
},
"timeOfSample": "2017-02-03T06:18:00.00Z",
"uncertaintyInMilliseconds": 0
}
}
関連トピック
最終更新日: 2024 年 12 月 09 日