Responseインターフェース
Alexaディレクティブが正常に処理されると、応答イベントを使用して応答が行われます。最も一般的な応答イベントはAlexa.Response
です。ディレクティブの中には、特定の応答イベントを含むものもあります。たとえば、Add
ディレクティブには、AddResponse
応答イベントが含まれる場合もあります。正しい応答イベントを選択して使用するには、特定のディレクティブのドキュメンテーションを確認してください。
応答
ディレクティブが正常に処理された場合、Response
イベントで応答する必要があります。Response
はLambda関数からAlexaに、またはデバイス制御クラウドからAlexaのイベントゲートウェイに送信することができます。Responseイベントを送信するときは、影響を受けたプロパティの値をメッセージのコンテキストでレポートする必要があります。また、レポート可能なすべてのプロパティをcontextに含めることもできます。
ほとんどの場合、Alexaはタイムアウトするまでの8秒間、同期および非同期の両方の応答を待ちます。例外は個々のインターフェースに記載されています。たとえば、LockControllerインターフェースを実装しているエンドポイントからの非同期応答の場合、Alexaの待ち時間は長くなります。
イベントゲートウェイと非同期で応答する場合、Response
には、Alexaのユーザーであることを認証するスコープが必要になります。同期または非同期で応答するときは、メッセージに相関トークンを含める必要があります。
標準的な応答例
次は、標準的な応答形式の例です。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"messageId": "<message_id>",
"payloadVersion": "1"
},
"payload": { }
}
}
同期応答の例
次は、調整可能な白色照明をサポートするエンドポイントの同期応答の例です。
{
"context": {
"properties": [ {
"namespace": "Alexa.ColorTemperatureController",
"name": "colorTemperatureInKelvin",
"value": 7500,
"timeOfSample": "2017-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 500
} ]
},
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"payloadVersion": "3",
"messageId": "abc-123-def-456",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"endpointId": "appliance-001"
},
"payload": {}
}
}
非同期応答の例
次は、調整可能な白色照明をサポートするエンドポイントの非同期応答の例です。
POST /v3/events HTTP/1.1
Host: api-amazonalexa.com
Authorization: Bearer access-token-from-Amazon
Content-Type: application/json
{
"context": {
"properties": [ {
"namespace": "Alexa.ColorTemperatureController",
"name": "colorTemperatureInKelvin",
"value": 7500,
"timeOfSample": "2017-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 500
} ]
},
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"payloadVersion": "3",
"messageId": "abc-123-def-456",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-Amazon"
},
"endpointId": "appliance-001"
},
"payload": {}
}
}
DeferredResponse
DeferredResponse
は、遅延または非同期応答を送信することをディレクティブに同期的に応答する場合に使用します。DeferredResponse
を送信した場合は、後でResponse
イベントを送信する必要があります。
DeferredResponse
は常に同期的に送信されるため、スコープはありません。
DeferredResponseの例
{
"event": {
"header": {
"namespace": "Alexa",
"name": "DeferredResponse",
"messageId": "abc-123-def-456",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
"payloadVersion": "3"
},
"payload": {
"estimatedDeferralInSeconds": 7
}
}
}
ペイロードの詳細
フィールド | 説明 | タイプ | 必須 |
---|---|---|---|
estimatedDeferralInSeconds |
任意です。非同期応答が送信されるまでの概算時間を秒単位で示す整数です。 | 整数 | × |