応答イベント
Alexaディレクティブが正常に処理されると、応答イベントを使用して応答が行われます。最も一般的な応答イベントはAlexa.Response
です。ディレクティブの中には、特定の応答イベントを含むものもあります。たとえば、Add
ディレクティブには、AddResponse
応答イベントが含まれる場合もあります。正しい応答イベントを選択して使用するには、特定のディレクティブのドキュメンテーションを確認してください。
ディレクティブを正常に処理できなかった場合は、 Alexa.ErrorResponseイベントを使用して応答します。
応答の種類
Alexaディレクティブが正常に処理されると、応答イベントを使用して応答が行われます。次のいずれかの方法で応答できます。
- 同期:Lambda関数からAlexaに応答イベントを送信します。
- 非同期:デバイス制御クラウドから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
}
}
}
最終更新日: 2021 年 10 月 27 日