Alexaインターフェースのメッセージとプロパティ
Alexaスキルを作成してスキルコードにAlexaインターフェースを実装すると、Alexaとの間でメッセージの送受信を行えます。Alexaは、スキルにディレクティブを送信し、ユーザーに代わって何らかのリクエストを行います。スキルがデバイスを制御する場合、Alexaはディレクティブを送信してデバイスを制御するか、デバイスに関する状態情報をリクエストします。スキルは、Alexaに応答を返すことでディレクティブに応答します。先回りしてAlexaにイベントを送信することもできます。
このリファレンスには、すべてのスキルが実装する基本的なメッセージとパラメーターの一覧が含まれています。
メッセージのリファレンス
Alexaからスキルへのメッセージ
以下は、Alexaがスキルに送信するメッセージの一覧です。
- AcceptGrantディレクティブ – Alexaはユーザーを識別して認証する認証情報をスキルに提供します。
- Discoverディレクティブ – ユーザーはデバイスをスマートホームスキルに接続するようAlexaにリクエストします。
- ReportState directive – Alexaは、スマートホームスキルまたはビデオスキルに接続されたデバイスの状態をアナウンスまたは表示します。
- インターフェース固有のディレクティブ – ユーザーはAlexaにデバイスを制御するようリクエストします。ディレクティブの例については、各インターフェースのドキュメントを参照してください。
スキルからAlexaへのメッセージ
以下は、スキルがAlexaに送信するイベントメッセージの一覧です。
- AcceptGrant.Response – ユーザーの認証情報を受け取って格納したら、AcceptGrant応答を送信します。
- Discover.Response – ユーザーがデバイスをスキルに接続できるよう、検出応答を送信します。
- AddOrUpdateReportイベント – ユーザーがスキルに接続されているデバイスを追加または更新したら、Alexaにイベントを送信して新しいデバイスや更新されたデバイスについて知らせます。
- DeleteReportイベント – ユーザーがスマートホームスキルに接続されたデバイスを削除したら、イベントを送信してAlexaに知らせます。
- StateReport – スキルは、状態レポートディレクティブに対する状態レポート応答を返して、Alexaにスキルが制御するデバイスの状態を知らせます。
- ChangeReportイベント – デバイスの状態が変更されたら、プロアクティブに変更レポートイベントを送信します。
- Responseイベント – インターフェース固有のディレクティブに応答を送信します。
- DeferredResponseイベント – 特定のディレクティブの後に遅延応答を送信して、実際の応答を後で送信することをAlexaに知らせます。
- ErrorResponse – インターフェース固有のディレクティブを処理できない場合、エラー応答を送信してエラーの理由を知らせます。たとえば、電源オンのディレクティブを受け取ったのに、デバイスが接続されていない場合などです。
Alexaに送信するすべてのイベントと応答の例については、各インターフェースのドキュメントを参照してください。
メッセージの形式
ディレクティブ、イベント、応答のメッセージコンテンツはすべて共通です。
Header
— メッセージとインターフェースを定義します。Endpoint
— デバイスを識別し、認証情報を含みます。Payload
— メッセージのパラメーターです。ペイロードの内容は、ヘッダーで定義されるインターフェースによって異なります。
ディレクティブの場合、これらのプロパティはDirective
オブジェクトに含まれます。イベントと応答の場合、これらのプロパティはEvent
オブジェクトに含まれます。また、一部のイベントと応答には、Context
オブジェクトが含まれます。
以下は、ディレクティブリクエストの例です。メッセージには、header
、endpoint
、payload
のオブジェクトが含まれています。
{
"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn",
"messageId": "<一意の識別子、バージョン4 UUIDが望ましい>",
"correlationToken": "opaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "OAuth2ベアラートークン"
},
"endpointId": "エンドポイントID",
"cookie": {}
},
"payload": {}
}
}
以下は、ディレクティブ応答の例です。メッセージには、header
、endpoint
、payload
、context
のオブジェクトが含まれています。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"messageId": "<一意の識別子、バージョン4 UUIDが望ましい>",
"correlationToken": "opaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "OAuth2ベアラートークン"
},
"endpointId": "エンドポイントID"
},
"payload": {}
},
"context": {
"properties": [{
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "ON",
"timeOfSample": "2017-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 500
}]
}
}
プロパティのリファレンス
以下のプロパティは、全メッセージタイプで共通です。
Headerオブジェクト
以下の表は、Header
オブジェクトに含まれるプロパティを示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
メッセージペイロードのインターフェースを指定します。例: |
文字列 |
◯ |
|
メッセージ内のディレクティブ、イベント、応答の名前です。例: |
文字列 |
◯ |
|
メッセージごとに一意のIDです。スキルが送信するすべての応答およびイベントの新しい値を含みます。Amazonでは、バージョン4のUUIDを使用することをお勧めします。 |
文字列 |
◯ |
|
メッセージの交換を識別するOpaqueトークンです。Alexaから相関トークンを含むディレクティブを受信したら、同じ相関トークンを応答メッセージに含めます。応答をAlexaイベントゲートウェイに非同期に送信する場合も、Alexaから受け取った相関トークンを含めます。Alexaからのリクエストへの応答ではないイベントを送信する場合は、相関トークンを含めないでください。たとえば、 |
文字列 |
✕ |
|
名前空間フィールドに指定されたインターフェースのAPIバージョンです。 |
文字列 |
◯ |
Endpointオブジェクト
スキルがデバイスを制御する場合、AlexaからのメッセージにはEndpoint
オブジェクトが含まれます。スキルからAlexaへのメッセージにEndpoint
オブジェクトが含まれることで、Alexaはデバイスを識別し、スキルの認証を行うことができます。検出応答でのEndpoint
オブジェクトの定義については、endpointオブジェクトを参照してください。
以下の表は、Endpoint
オブジェクトに含まれるプロパティを示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
ユーザーに関連付けられたデバイスを識別します。この識別子は、スキルのドメイン内でユーザーが所有するすべてのデバイスで一意である必要があります。検出時に |
文字列 |
◯ |
|
スキルの認証を行うベアラートークンのスコープです。Alexaゲートウェイに送信するイベントや非同期応答で必要です。 |
Scopeオブジェクト |
✕ |
|
エンドポイントに関連付けられたキー/値ペアのリストです。検出時にcookieを指定すると、Alexaはエンドポイントに関するスキルへのすべてのメッセージでcookieを返します。 |
JSON形式の文字列のリスト |
✕ |
Scopeオブジェクト
Scope
オブジェクトは、メッセージの認可および識別の情報を提供します。オブジェクトは検出ディレクティブなどのペイロード、または非同期の応答メッセージなどのエンドポイントオブジェクトに含めることができます。
Scope
オブジェクトは、Alexaイベントゲートウェイに送信するメッセージに必要です。
以下の表は、Scope
オブジェクトに含まれるプロパティを示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
OAuthトークンのスコープの種類を指定します。 |
文字列 |
◯ |
|
リンクされたユーザーアカウントを識別し、アクセスするためのOAuthベアラートークンです。 |
文字列 |
◯ |
|
部屋の名前や番号など、リクエストの対象となる場所です。 |
文字列 |
✕ |
|
リクエストを行ったユーザーの一意のIDです。ユーザーの識別にこの値を使わないでください。代わりに |
文字列 |
✕ |
BearerTokenスコープ
BearerToken
スコープでは、リンクされたユーザーアカウントにアクセスするため、またはAlexaユーザーを識別するための、OAuthベアラートークンを提供します。スキルは認証中にトークンを受け取ります。通常は、スマートホームスキルまたはビデオスキルで使用されます。
以下は、BearerToken
スコープの例です。
"scope": {
"type": "BearerToken",
"token": "OAuth2ベアラートークン"
}
BearerTokenWithPartitionスコープ
BearerTokenWithPartition
スコープでは、リンクされたユーザーアカウントにアクセスするため、および物理的な場所を指定するために、OAuthベアラートークンを提供します。通常は、Alexa for Businessを対象とするスキルで使用されます(日本未対応)。
以下は、BearerTokenWithPartition
スコープの例です。
"scope": {
"type": "BearerTokenWithPartition",
"token": "OAuth2ベアラートークン",
"partition": "パーティション(例:部屋番号101)",
"userId": "ユーザーID"
}
Directiveオブジェクト
すべてのディレクティブには、Directive
オブジェクトが含まれます。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
メッセージとインターフェースを識別します。 |
|
〇 |
|
ユーザーが制御するエンドポイントを識別し、Alexaを認証する認可を提供します。 |
|
◯ |
|
ディレクティブの一部であるプロパティを指定します。 |
|
〇 |
Eventオブジェクト
ディレクティブに対するすべてのイベントと応答には、Event
オブジェクトが含まれます。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
メッセージとインターフェースを識別します。 |
|
〇 |
|
エンドポイントを指定し、スキルを認証する認可を提供します。 |
|
◯ |
|
応答に必要なプロパティを指定します。ペイロードは、ディレクティブ、応答、イベントによって異なります。ペイロードのプロパティについて詳しくは、デバイスのインターフェースを参照してください。 |
オブジェクト |
◯ |
Contextオブジェクト
エンドポイントのすべてのレポート可能なプロパティを列挙するContext
オブジェクトです。プロパティを追加するには、検出応答でretrievable = true
としてプロパティを定義します。Amazonでは、変化のなかったプロパティも含めてすべてのプロパティの状態を指定することをお勧めします。
payload
またはcontext
のどちらか1か所にのみ指定します。両方を使用することはできません。プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
エンドポイントの取得可能なプロパティを指定します。レポートされる各プロパティの |
|
✕ |
Payloadオブジェクト
ペイロードは、ディレクティブ、応答、イベントによって異なります。ペイロードのプロパティについて詳しくは、デバイスがサポートする各インターフェースのドキュメントを参照してください。
Propertyオブジェクト
Property
オブジェクトは、エンドポイントのレポート可能なプロパティを定義します。各Alexaインターフェースでプロパティ名と値を定義します。詳細については、Alexaスキルでサポートする各インターフェースのドキュメントを参照してください。
"properties": [{
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "ON",
"timeOfSample": "2021-11-15T14:20:00Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.EndpointHealth",
"name": "connectivity",
"value": {
"value": "OK"
},
"timeOfSample": "2021-11-15T14:20:00Z",
"uncertaintyInMilliseconds": 0
}
]
以下の表は、Property
オブジェクトのパラメーターを示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
|
文字列 |
◯ |
|
検出応答で定義したインターフェースのインスタンス名です。汎用コントローラーインターフェースでのみ使用します。たとえば、 |
文字列 |
✕ |
|
|
文字列 |
◯ |
|
レポートされるプロパティの値です。各Alexaインターフェースで、 |
バリエーション |
〇 |
|
エンドポイントが状態変更を検出した時刻です。 |
文字列 |
◯ |
|
|
数値 |
〇 |
関連トピック
最終更新日: 2022 年 05 月 25 日