Alexa.LockControllerインターフェース3


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 日