応答イベント

応答イベント

Alexaディレクティブが正常に処理されると、応答イベントを使用して応答が行われます。最も一般的な応答イベントはAlexa.Responseです。ディレクティブの中には、特定の応答イベントを含むものもあります。たとえば、Addディレクティブには、AddResponse応答イベントが含まれる場合もあります。正しい応答イベントを選択して使用するには、特定のディレクティブのドキュメンテーションを確認してください。

ディレクティブを正常に処理できなかった場合は、 Alexa.ErrorResponseイベントを使用して応答します。

応答の種類

Alexaディレクティブが正常に処理されると、応答イベントを使用して応答が行われます。次のいずれかの方法で応答できます。

通常、Alexaはタイムアウトする前に8秒間応答を待ちます。ロックなどの物理的な変更に時間がかかるデバイスの場合、通常の応答を送信する前に、遅延応答を送信する必要があります。詳細についてはDeferredResponseを参照してください。

応答イベントのcontextオブジェクトに、変更されたエンドポイントのすべてのプロパティの値との時刻を含めます。また、変更されなかったプロパティの値を含めて、Alexaにエンドポイントの完全な現在の状態を与えることもできます。

すべての応答メッセージには、相関トークンを含める必要があります。

同期応答

同期応答の例

以下は、標準的な同期応答の例です。この例では、エンドポイントは Alexa.PowerController インターフェイスをサポートします。

クリップボードにコピーされました。

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.PowerController",
        "name": "powerState",
        "value": "ON",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 500
      }
    ]
  }
}

非同期応答

Alexaイベントゲートウェイと非同期で応答する場合、レスポンスにはAlexaのユーザーであることを認証するスコープが必要になります。

非同期応答の例

以下は、非同期応答の例です。この例では、エンドポイントは Alexa.ColorTemperatureController インターフェースをサポートします。

クリップボードにコピーされました。

POST /v3/events HTTP/1.1
Host: api-amazonalexa.com
Authorization: Bearer access-token-from-Amazon
Content-Type: application/json
{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ColorTemperatureController",
        "name": "colorTemperatureInKelvin",
        "value": 5500,
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 500
      }
    ]
  }
}

DeferredResponse

通常、Alexaはタイムアウトする前に8秒間応答を待ちます。例外は個々のインターフェースのドキュメントに記載されています。レスポンスに8秒以上かかる場合は、まず同期 DeferredResponseイベントを送信し、その後に同期または非同期Responseイベントを送信します。

DeferredResponseは、Alexa.LockControllerなどの一部のインターフェースでのみサポートされています。DeferredResponse がサポートされているかどうかを確認するには、特定のインターフェイスのドキュメントを参照してください 。

DeferredResponseは常に同期的に送信されるため、スコープを含めないでください。

DeferredResponseイベントのペイロードの詳細

フィールド 説明 必須
estimatedDeferralInSeconds 2回目の応答を送信するまでのおおよその時間(秒単位)。 整数

DeferredResponseの例

クリップボードにコピーされました。

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "DeferredResponse",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "payload": {
      "estimatedDeferralInSeconds": 7
    }
  }
}