Alexa.Discoveryインターフェース



Alexa.Discoveryインターフェース

Alexa.Discoveryインターフェースには、ユーザーのデバイスアカウントに関連付けられたエンドポイントの特定に使用するメッセージが含まれます。ユーザーのスマートホームスキルに関連付けられたデバイスやシーンを検出できるように、スキルがDiscoveryディレクティブに応答します。また、スキルは、ユーザーアカウントに関連付けられたエンドポイントの追加、更新、削除を行うイベントをプロアクティブに送信する必要があります。

プロパティとオブジェクト

endpointオブジェクト

endpointオブジェクトは、ユーザーのデバイス制御クラウドアカウントと関連付けられた、コネクテッドデバイス/コンポーネントを表します。エンドポイントには以下のいずれかの詳細が含まれます。

  • 物理デバイス
  • 仮想デバイス
  • デバイスのグループまたは集合
  • ソフトウェアコンポーネント

endpointオブジェクトの例

{
  "endpointId": "<エンドポイントの一意のID>",
  "manufacturerName": "サンプルメーカー",
  "description": "サンプルメーカーのスマート照明",
  "friendlyName": "リビングの照明",
  "displayCategories": ["LIGHT"],
  "additionalAttributes":  {
  },
  "capabilities": [
  ],
  "connections": [
  ],
  "relationships": {
  },
  "cookie": {
    "extraDetail1": "スキルが使用する情報",
    "extraDetail2": "複数のエントリを作成できます",
    "extraDetail3": "ここにデバイスの状態を保存しないでください"
  }
}

endpointオブジェクトのスキーマ

フィールド 説明 必須
endpointId エンドポイントの識別子です。識別子は、スキルを使用するすべてのデバイスで一意である必要があります。同じデバイスのすべての検出リクエストに対して、識別子は常に同じである必要があります。識別子には、英数字、スペース、次の特殊文字を使用できます。使用可能な特殊文字:_ - = # ; : ? @ &。識別子は、256文字以内でなければなりません。 文字列
manufacturerName デバイスのメーカーの名前です。この値には最大128文字を含めることができます。 文字列
description デバイスの説明です。説明には、メーカー名やデバイスの接続方法を含める必要があります。たとえば、「サンプルメーカーによるスマートロック」や、「SmartHubを介して接続するWiFiサーモスタット」などです。この値には最大128文字を含めることができます。 文字列
friendlyName デバイスを識別するためにユーザーが使用する名前です。この値には最大128文字を含めることができます。特殊文字や句読点は使用できません。一部の例外を除き、すべてのインターフェースに必須のフィールドです。このフィールドが任意かどうかを確認するには、各インターフェースのドキュメントを参照してください。 文字列
displayCategories Alexaアプリで、デバイスが表示されるカテゴリーです。 display categoriesの文字列の配列
additionalAttributes エンドポイントについての追加情報です。 additionalAttributesオブジェクト
capabilities スキルがエンドポイントをサポートする機能インターフェースです。Alexa.BrightnessControllerAlexa.PowerControllerなどです。 capabilityオブジェクトの配列
connections デバイスがインターネットとスマートホームハブへの接続に使用する方法についての情報です。 connectionオブジェクトの配列
relationships エンドポイントが接続されているエンドポイントです。たとえば、コンピューターのエンドポイントはホームネットワークのエンドポイントに接続されている場合があります。 relationshipsオブジェクトです。
cookie スキルが使用するデバイスについての情報です。このプロパティのコンテンツは5,000バイト以内でなければなりません。APIではこのデータの読み取りや使用はしません。 名前と値のペアのリスト

additionalAttributesオブジェクト

additionalAttributesオブジェクトには、エンドポイントについての追加情報が含まれます。Alexaは、さまざまなスキルが同じデバイスを異なる方法で表している場合に、この情報を使用してデバイスを識別できます。

additionalAttributesオブジェクトの例

{
  "additionalAttributes":  {
    "manufacturer" : "サンプルメーカー",
    "model" : "サンプルモデル",
    "serialNumber": "<デバイスのシリアル番号>",
    "firmwareVersion" : "<デバイスのファームウェアバージョン>",
    "softwareVersion": "<デバイスのソフトウェアバージョン>",
    "customIdentifier": "<デバイスのカスタム識別子>"
  }
}

additionalAttributesオブジェクトのスキーマ

フィールド 説明 必須
manufacturer デバイスのメーカーの名前です。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列
model デバイスのモデルの名前です。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列
serialNumber デバイスのシリアル番号です。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列
firmwareVersion デバイスのファームウェアバージョンです。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列
softwareVersion デバイスのソフトウェアバージョンです。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列
customIdentifier デバイスのカスタム識別子です。この識別子は、システム内ですべてのユーザーアカウントにわたってグローバルに一意である必要があります。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列

capabilityオブジェクト

capabilityオブジェクトは、スキルがサポートするインターフェースを表します。たとえば、スキルがAlexa.PowerControllerインターフェースをサポートすると、照明の点灯をサポートできます。スマートホームデバイスで利用可能なインターフェースを確認するには、機能インターフェースの一覧を参照してください。

capabilityオブジェクトの例

{
    "type": "AlexaInterface",
    "interface": "Alexa.PercentageController",
    "instance": "<コントローラーのインスタンス名>",
    "version": "3",
    "properties": {
        "supported": [
            {
                "name": "percentage"
            }
        ],
        "proactivelyReported": true,
        "retrievable": true
    },
    "capabilityResources": {},
    "configuration": {},
    "semantics": {}
}

capabilityオブジェクトのスキーマ

フィールド 説明 必須
type capabilityの種類です。現在使用できる種類はAlexaInterfaceのみです。 文字列
interface 機能インターフェースの名前です。 文字列
instance 一部のインターフェースにはインスタンスを複数実装できます。この場合、インターフェースの各インターフェースに一意の名前を付けます。詳細については、ModeControllerRangeControllerToggleControllerを参照してください。 文字列
version インターフェースのバージョンです。インターフェースごとにバージョンが異なります。常にインターフェースのドキュメントを参照して、最新のバージョンを確認してください。 文字列
properties.
supported
スキルがサポートするインターフェースのプロパティです。 配列
properties.
proactivelyReported
プロパティが変更されたときにスキルが変更レポートを送信する場合はtrueです。デフォルトはfalseです。 ブール値
properties.
retrievable
状態レポートリクエストに応答してプロパティの値をレポートする場合はtrueです。デフォルトはfalseです。 ブール値
capabilityResources ユーザーが一部のインターフェースの操作に使用できるフレンドリー名を指定できます。詳細については、各インターフェースのドキュメントを参照してください。 オブジェクト
configuration 一部のインターフェースでは、インターフェースの使用方法に関する情報を含むconfigurationオブジェクトが必要です。詳細については、各インターフェースのドキュメントを参照してください。 オブジェクト
verificationsRequired 一部のインターフェイスでは、特定のディレクティブに必要なユーザー確認を指定するverificationsRequiredオブジェクトを利用できます。詳細については、VerificationsRequiredおよび各インターフェイスのドキュメントを参照してください。
注: 現在、verificationsRequiredja-JPロケールでのみサポートされています。
オブジェクト
semantics 一部のインターフェースでは、オプションで「開いて」、「閉じて」、「上げて」、「下げて」という単語を既存のディレクティブにマッピングできます。 semanticsオブジェクトです。

semanticsオブジェクト

Alexaインターフェースを使用する場合、音声対話モデルは既にビルドされています。ユーザーは、デバイスとの対話に標準の発話を使用できます。オプションで、セマンティクスを使用して発話を追加できます。セマンティクスを使用する場合は、「開いて」「閉じて」「上げて」「下げて」といったフレーズを手動でディレクティブにマッピングします。

セマンティクスがサポートされるのは以下のインターフェースのみです: ModeControllerRangeControllerToggleController

semanticsオブジェクトの例

以下は、RangeControllerインターフェースを実装するデバイスの検出応答でのsemanticsオブジェクトの例です。各フィールドの詳細については、以下のsemanticsオブジェクトスキーマテーブルの例を参照してください。

{
  "semantics": {
    "actionMappings": [
      {
        "@type": "ActionsToDirective",
        "actions": ["Alexa.Actions.Close", "Alexa.Actions.Lower"],
        "directive": {
          "name": "SetRangeValue",
          "payload": {
            "rangeValue": 0
          }
        }
      },
      {
        "@type": "ActionsToDirective",
        "actions": ["Alexa.Actions.Open", "Alexa.Actions.Raise"],
        "directive": {
          "name": "SetRangeValue",
          "payload": {
            "rangeValue": 100
          }
        }
      }
    ],
    "stateMappings": [
      {
        "@type": "StatesToValue",
        "states": ["Alexa.States.Closed"],
        "value": 0
      },
      {
        "@type": "StatesToRange",
        "states": ["Alexa.States.Open"],
        "range": {
          "minimumValue": 1,
          "maximumValue": 100
        }
      }  
    ]
  }
}

semanticsオブジェクトのスキーマ

フィールド 説明 必須
actionMappings アクションフレーズとインターフェースディレクティブ間のマッピングの配列です。 配列 actionMappingsstateMappingsのいずれかが必須です。
actionMappings.
@type
アクションマッピングのタイプです。現在有効な値は、ActionsToDirectiveのみです。 文字列 actionMappingsが含まれる場合は〇。
actionMappings.
actions
1つのディレクティブにマッピングされているアクションの配列です。有効な値は、Alexa.Actions.OpenAlexa.Actions.CloseAlexa.Actions.RaiseAlexa.Actions.Lowerです。 配列 actionMappingsが含まれる場合は〇。
actionMappings.
directive
アクションで呼び出すディレクティブです。 オブジェクト actionMappingsが含まれる場合は〇。
actionMappings.
directive.
name
ディレクティブの名前です。ディレクティブは、semanticsオブジェクトを含む機能インターフェースのディレクティブでなければなりません。 文字列 actionMappingsが含まれる場合は〇。
actionMappings.
directive.
payload
ディレクティブに適したペイロードです。一部のディレクティブにはペイロードは必要ありません。またペイロードの種類はディレクティブによって異なります。 オブジェクト
stateMappings Alexaの状態とコントローラーの状態の間のマッピングの配列です。ユーザーがOpenClosedのフレーズを使ってデバイスの状態を照会できるよう状態マッピングを含みます。 配列 actionMappingsstateMappingsのいずれかが必須です。
stateMappings.
@type
状態マッピングのタイプです。 有効な値はStatesToValueStatesToRangeのいずれかです。 文字列 stateMappingsが含まれる場合は〇。
stateMappings.
states
コントローラーの値にマッピングされるAlexaの状態の配列です。有効な値はAlexa.States.OpenAlexa.States.Closedです。 配列 stateMappingsが含まれる場合は〇。
stateMappings.
value
指定したAlexaの状態に対応するコントローラーの値です。 タイプがStatesToValueの場合は〇。
stateMappings.
range
指定したAlexaの状態に対応するコントローラーの値の範囲です。 オブジェクト タイプがStatesToRangeの場合は〇。

connectionsプロパティ

connectionsプロパティは、デバイスがインターネットとスマートホームハブへの接続に使用する方法を表します。connectionsプロパティにはconnectionオブジェクトの配列が含まれます。

connectionsプロパティの例

{
  "connections": [
    {
      "type": "TCP_IP",
      "macAddress": "00:11:22:AA:BB:33:44:55"
    },
    {
      "type": "ZIGBEE",
      "macAddress": "00:11:22:33:44:55"
    },
    {
      "type": "ZWAVE",
      "homeId": "<0x00000000>",
      "nodeId": "<0x00>"
    },
    {
      "type": "UNKNOWN",
      "value": "00:11:22:33:44:55"
    }
  ]
}

connectionオブジェクトのスキーマ

フィールド 説明 必須
type 接続の種類です。TCP_IPZIGBEEZWAVE、またはUNKNOWNのいずれかです。 文字列
macAddress ネットワークインターフェースコントローラー(NIC)の一意の識別子です。このフィールドは、接続の種類がTCP_IPまたはZIGBEEの場合に、オプションとして含めることができます。 文字列
homeId エンドポイントが接続するZ-WaveネットワークのホームIDです。形式は、UTF-8文字で0x00000000です。このフィールドは、接続の種類がZWAVEの場合に、オプションとして含めることができます。 文字列
nodeId エンドポイントが接続するZ-WaveネットワークのエンドポイントのノードIDです。形式は、UTF-8文字で0x00です。このフィールドは、接続の種類がZWAVEの場合に、オプションとして含めることができます。 文字列
value 接続の種類をより具体的に識別できない場合の接続の情報です。このフィールドで提供する情報は、安定した具体的なものである必要があります。この値には最大256文字の英数字を含めることができ、句読点も含めることができます。 文字列 typeがUNKNOWNである場合は◯

relationshipsオブジェクト

1つのエンドポイントが接続されているエンドポイントを列挙するrelationshipsオブジェクトです。たとえば、コンピューターのエンドポイントはホームネットワークのエンドポイントに接続されている場合があります。詳細については、ネットワークとWi-Fiのスキルについてを参照してください。

relationshipsオブジェクトの例

{
  "relationships": {
    "isConnectedBy": {
      "endpointId": "<ホームネットワークエンドポイントの一意のID>"
    }
  }
}

relationshipsオブジェクトのスキーマ

フィールド 説明 必須
isConnectedBy このエンドポイントが接続されているネットワークのエンドポイントIDです。指定されたエンドポイントはAlexa.Networking.HomeNetworkControllerを実装する必要があります。 オブジェクト

ディレクティブ

Discoverディレクティブ

Discoverディレクティブをサポートすることで、ユーザーはアカウントに関連付けられたデバイスを探すことができます。ユーザーはAlexaにデバイスを探すように頼むか、またはAlexaアプリを開いてデバイスを検出を選択することができます。

以下は、ユーザーの発話の例です。

Alexa, discover my smart home devices.

Alexa, finde meine smarten geräte.

Discoverディレクティブペイロードの詳細

フィールド 説明
scope リクエストの認可と識別情報を提供します。 scopeオブジェクト

Discoverディレクティブの例

{
  "directive": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover",
      "messageId": "<メッセージID>",
      "payloadVersion": "3"
    },
    "payload": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      }
    }
  }
}

Discover.Responseイベント

Discoverディレクティブを正しく処理したら、Discover.Responseイベントを使用して応答します。応答では、エンドユーザーのデバイス制御クラウドのアカウントに関連付けられているすべてのデバイスと、それに対してスキルがサポートする機能を返します。

Discover.Responseイベントのペイロードの詳細

フィールド 説明 必須
endpoints ユーザーのアカウントに関連付けられているデバイスと、それに対してスキルがサポートする機能です。ユーザーのアカウントに関連付けられたデバイスがない場合、このプロパティには空の配列が返されます。返すことができるエンドポイントの最大数は300です。 endpointオブジェクトの配列

検出応答の例

以下は、Alexa.PowerControllerインターフェースとAlexa.BrightnessControllerインターフェースをサポートする1つの照明に対するDiscover.Responseメッセージの例です。他の機能でのDiscover.Responseの例を確認するには、機能インターフェースの一覧で各インターフェースのドキュメントを参照するか、その他のDiscover.Responseの例を参照してください。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "サンプルメーカー",
          "description": "サンプルメーカーのスマート照明",
          "friendlyName": "リビングの照明",
          "additionalAttributes":  {
            "manufacturer" : "サンプルメーカー",
            "model" : "サンプルモデル",
            "serialNumber": "<デバイスのシリアル番号>",
            "firmwareVersion" : "<デバイスのファームウェアバージョン>",
            "softwareVersion": "<デバイスのソフトウェアバージョン>",
            "customIdentifier": "<デバイスのカスタム識別子>"
          },
          "displayCategories": ["LIGHT"],
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "brightness"
                  }
                ],
                "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"
            }
          ],
          "connections": [
            {
              "type": "TCP_IP",
              "macAddress": "00:11:22:AA:BB:33:44:55"
            },
            {
              "type": "ZIGBEE",
              "macAddress": "00:11:22:33:44:55"
            },
            {
              "type": "ZWAVE",
              "homeId": "<0x00000000>",
              "nodeId": "<0x00>"
            },
            {
              "type": "UNKNOWN",
              "value": "00:11:22:33:44:55"
            }
          ],
          "cookie": {
          }
        }
      ]
    }
  }
}

Discoverディレクティブのエラー処理

Discoverディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。次のエラータイプのいずれかを適宜使用します: BRIDGE_UNREACHABLEEXPIRED_AUTHORIZATION_CREDENTIALINSUFFICIENT_PERMISSIONSINTERNAL_ERRORINVALID_AUTHORIZATION_CREDENTIAL

AddOrUpdateReportイベント

ユーザーが新しいエンドポイントをアカウントに追加した場合や、シーン名の変更など既存のエンドポイントに変更を加えた場合、AddOrUpdateReportイベントをプロアクティブに送信します。AddOrUpdateReportメッセージをAlexaイベントゲートウェイに送信します。ユーザーアカウントに関連付けられたすべてのエンドポイントか、新規または更新されたエンドポイントのみを含めることができます。スキルの実装内容に応じて選択できます。

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

フィールド 説明 必須
endpoints ユーザーのアカウントに関連付けられているデバイスと、それに対してスキルがサポートする機能です。ユーザーのアカウントに関連付けられたデバイスがない場合、このプロパティには空の配列が返されます。返すことができるエンドポイントの最大数は300です。 endpointオブジェクトの配列
scope Alexaに対してユーザーを識別するベアラートークンを含むオブジェクトです。 scopeオブジェクト

AddOrUpdateReportイベントの例

POST /v3/events HTTP/1.1
Host: api.amazonalexa.com
Authorization: Bearer access-token-from-Amazon
Content-Type: application/json
{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "AddOrUpdateReport",
      "payloadVersion": "3",
      "messageId": "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "サンプルメーカー",
          "description": "サンプルメーカーのスマート照明",
          "friendlyName": "キッチンの照明",
          "additionalAttributes":  {
            "manufacturer" : "サンプルメーカー",
            "model" : "サンプルモデル",
            "serialNumber": "<デバイスのシリアル番号>",
            "firmwareVersion" : "<デバイスのファームウェアバージョン>",
            "softwareVersion": "<デバイスのソフトウェアバージョン>",
            "customIdentifier": "<デバイスのカスタム識別子>"
          },
          "displayCategories": [
            "LIGHT"
          ],
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "brightness"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            }
          ],
          "connections": [
          ],
          "cookie": {
          }
        }
      ],
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-Amazon"
      }
    }
  }
}

DeleteReportイベント

ユーザーがアカウントからエンドポイントを削除した場合、DeleteReportイベントをプロアクティブに送信します。

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

フィールド 説明 必須
endpoints ユーザーアカウントから削除するエンドポイントです。 エンドポイントIDの配列
scope Alexaに対してユーザーを識別するベアラートークンを含むオブジェクトです。 scopeオブジェクト

DeleteReportイベントの例

POST /v3/events HTTP/1.1
Host: api.amazonalexa.com
Authorization: Bearer access-token-from-Amazon
Content-Type: application/json
{
  "event": {
    "header": {
        "namespace": "Alexa.Discovery",
        "name": "DeleteReport",
        "messageId": "<メッセージID>",
        "payloadVersion": "3"
    },
    "payload": {
      "endpoints": [
          {
              "endpointId": "<エンドポイントID 1>"
          },
          {
              "endpointId": "<エンドポイントID 2>"
          }
      ],
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      }
    }
  }
}

表示カテゴリー

検出応答で表示カテゴリーを指定すると、エンドポイントがAlexaアプリの正しいカテゴリーに、正しいアイコンで表示され、ユーザーは簡単にデバイスを見つけてモニタリングできるようになります。

説明
ACTIVITY_TRIGGER 特定の状態に設定されたデバイスの組み合わせです。状態変化が特定の順序で起こる場合は、シーンのアクティビティトリガーを使用します。たとえば、「Netflixを観る」というシーンの場合、まずテレビの電源をオンにしてから、入力をHDMI1に設定します。
CAMERA ビデオまたは写真機能を持つメディアデバイスです。
COMPUTER デスクトップコンピューターなど、モバイル以外のコンピューターです。
CONTACT_SENSOR 2面間の接点で発生した変化を検出してレポートするエンドポイントです。
DOOR ドアです。
DOORBELL インターホンです。
EXTERIOR_BLIND 窓の外側のブラインドです。
FAN 扇風機です。
GAME_CONSOLE Microsoft XboxやNintendo Switchなどのゲーム機です。
GARAGE_DOOR ガレージのドアです。ガレージドアでドアの開閉を行うには、ModeControllerインターフェースを実装する必要があります。
INTERIOR_BLIND 窓の内側のブラインドです。
LAPTOP ノートパソコンなどのモバイルコンピューターです。
LIGHT 光源または照明器具です。
MICROWAVE 電子レンジです。
MOBILE_PHONE 携帯電話です。
MOTION_SENSOR ある領域で発生した動きを検出してレポートするエンドポイントです。
MUSIC_SYSTEM ネットワークに接続された音楽システムです。
NETWORK_HARDWARE ネットワークルーターです。
OTHER ほかのカテゴリーのいずれにも当てはまらないエンドポイントです。
OVEN 調理器具のオーブンです。
PHONE 固定電話やIP電話などの携帯でない電話です。
SCENE_TRIGGER 特定の状態に設定されたデバイスの組み合わせです。状態変化の順序が重要でないシーンの場合はシーントリガーを使用します。たとえば、「就寝」というシーンの場合、照明を消し、サーモスタットの設定温度を下げますが、その順序は問いません。
SCREEN プロジェクタースクリーンです。
SECURITY_PANEL セキュリティパネルです。
SMARTLOCK ロックをかけるエンドポイントです。
SMARTPLUG 既存の電源コンセントに差し込むモジュールです。このモジュールにデバイスが接続されます。たとえば、ユーザーはスマートプラグを電源コンセントに差し込み、照明をスマートプラグに接続することができます。スマートプラグでさまざまなデバイスを制御できます。
SPEAKER スピーカーまたはスピーカーシステムです。
STREAMING_DEVICE Apple TV、Chromecast、Rokuなどのストリーミングデバイスです。
SWITCH 電気システムに直接配線されたスイッチです。スイッチでさまざまなデバイスを制御できます。
TABLET タブレットコンピューターです。
TEMPERATURE_SENSOR 温度をレポートしますが、その制御は行わないエンドポイントです。エンドポイントの温度データは、Alexaアプリでは表示されません。エンドポイントで温度の管理も行う場合、代わりにTHERMOSTATを使用します。
THERMOSTAT 温度、直接温度制御が可能なスタンドアロンのエアコン、ヒーターを制御するエンドポイントです。温度を検知しても制御は行わないエンドポイントの場合、代わりにTEMPERATURE_SENSORを使用します。
TV テレビです。
WEARABLE Apple Watch、Fitbit、Samsung Gearなど、ネットワークに接続されたウェアラブルデバイスです。

その他のDiscover.Responseの例

以下は、Discover.Responseイベントの例です。ほかの機能でのDiscover.Responseの例を確認するには、機能インターフェースの一覧で各インターフェースのドキュメントを参照してください。

ビデオデバイスの例

以下は、ビデオデバイスでのDiscover.Responseイベントの例です。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "<エンドポイントのメーカー名>",
          "description": "<Alexaアプリに表示される説明>",
          "friendlyName": "上の階のビデオプレイヤー",
          "displayCategories": ["OTHER"],
          "capabilities": [
            {
              "interface": "Alexa.RemoteVideoPlayer",
              "type": "AlexaInterface",
              "version": "1.0"
            },
            {
              "interface": "Alexa.ChannelController",
              "type": "AlexaInterface",
              "version": "3"
            },
            {
              "interface": "Alexa.PlaybackController ",
              "type": "AlexaInterface",
              "version": "3",
              "supportedOperations": ["Play", "Pause", "Stop"]
            },
            {
              "interface": "Alexa.VideoRecorder",
              "type": "AlexaInterface",
              "version": "1.0"
            },
            {
              "interface": "Alexa.Launcher",
              "type": "AlexaInterface",
              "version": "1.0"
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

エンターテイメントデバイスの例

以下は、エンターテイメントデバイスでのDiscover.Responseイベントの例です。

{
  "event":{
    "header":{
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "friendlyName": "エンターテイメントシステム",
          "description": "サンプルメーカーのブランド名",
          "manufacturerName": "サンプルメーカー",
          "displayCategories": [
            "TV"
          ],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ChannelController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "channel"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InputController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "input"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              },
              "inputs": [
                {
                  "name": "HDMI1"
                },
                {
                  "name": "HDMI2"
                }
              ]
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PlaybackController",
              "version": "3",
              "properties": {},
              "supportedOperations": [
                "Play",
                "Pause",
                "Stop"
              ]
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.Speaker",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "volume"
                  },
                  {
                    "name": "muted"
                  }
                ],
                "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"
            }
          ]
        }
      ]
    }
  }
}

ギターアンプの例

以下は、ギターアンプでのDiscover.Responseイベントの例です。この例では、プリビルドの音声対話モデルに加えてカスタム音声対話を追加しています。なお、Alexa.EqualizerControllerインターフェースはen-USのみサポートされています。CustomIntent機能(日本未対応)のサポートを追加することで、任意のデバイスの音声ユーザーインターフェース(VUI)をカスタマイズできます。詳しくは、スマートホームスキルにカスタムの音声対話を追加するを参照してください。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "friendlyName": "Guitar Amp",
          "description": "A smart amplifier by Sample Manufacturer",
          "manufacturerName": "Sample Manufacturer",
          "displayCategories": ["OTHER"],
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.Speaker",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "volume"
                  },
                  {
                    "name": "muted"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EqualizerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "bands"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              },
              "configurations": {
                "bands": {
                  "supported": [
                    {
                      "name": "BASS"
                    },
                    {
                      "name": "MIDRANGE"
                    },
                    {
                      "name": "TREBLE"
                    }
                  ],
                  "range": {
                    "minimum": 1,
                    "maximum": 10
                  }
                }
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ToggleController",
              "version": "3",
              "instance": "SampleManufacturer.Amp.OverDrive",
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Overdrive",
                      "locale": "en-US"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Over Drive",
                      "locale": "en-US"
                    }
                  }
                ]
              },
              "properties": {
                "supported": [
                  {
                    "name": "toggleState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true,
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.RangeController",
              "version": "3",
              "instance": "SampleManufacturer.Amp.Gain",
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Gain",
                      "locale": "en-US"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Drive",
                      "locale": "en-US"
                    }
                  }
                ]
              },
              "properties": {
                "supported": [
                  {
                    "name": "rangeValue"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              },
              "configuration": {
                "supportedRange": {
                  "minimumValue": 1,
                  "maximumValue": 10,
                  "precision": 1
                },
                "presets": []
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "version": "3",
              "instance": "SampleManufacturer.Amp.Presets",
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Preset",
                      "locale": "en-US"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Effect",
                      "locale": "en-US"
                    }
                  }
                ]
              },
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "Preset.Normal",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Normal",
                            "locale": "en-US"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Standard",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": " Preset.LowGain",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Low Gain",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": " Preset.LeadBoost",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Lead Boost",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": " Preset.Metal",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Metal",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.CustomIntent",
              "version": "3",
              "configuration": {
                "supportedIntents": [
                  {
                    "name": "ChangeSoundIntent"
                  },
                  {
                    "name": "BoostIntent"
                  },
                  {
                    "name": "HelpIntent"
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

Wi-Fiルーターの例

以下は、Wi-Fiルーターで説明したWi-FiルーターのDiscover.Responseの例です。特定のデバイスのニーズに合う場合は、Alexa.Networking API(日本未対応)を使うこともできます。詳細については、ネットワークとWi-Fiのスキルについてを参照してください。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "friendlyName": "Wireless Router",
          "description": "Wi-Fi Router by Sample Manufacturer",
          "manufacturerName": "Sample Manufacturer",
          "displayCategories": ["OTHER"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ToggleController",
              "version": "3",
              "instance": "SampleManufacturer.Router.GuestNetwork",
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Guest Network",
                      "locale": "en-US"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Guest Wi-Fi",
                      "locale": "en-US"
                    }
                  }
                ]
              },
              "properties": {
                "supported": [
                  {
                    "name": "toggleState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true,
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "version": "3",
              "instance": "SampleManufacturer.Router.Modes",
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Traffic Priority",
                      "locale": "en-US"
                    }
                  }
                ]
              },
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "proactivelyReported": false,
                "retrievable": false
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "SampleManufacturer.Router.Normal",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Normal",
                            "locale": "en-US"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Regular",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "SampleManufacturer.Router.Gaming",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Gaming",
                            "locale": "en-US"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Video Games",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "SampleManufacturer.Router.Video",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "Video",
                            "locale": "en-US"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "Movies",
                            "locale": "en-US"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}