エンターテイメントデバイス用のスマートホームスキルを作成する
自宅のエンターテイメントやAVデバイス向けに作成されたスマートホームスキルを使用して、スマートTVやケーブルボックスなどのエンターテイメントデバイスに音声でアクセスできます。たとえば、適切に設定されたスマートホームスキルを使用して、ユーザーが「アレクサ、テレビのボリュームを上げて」と言うとテレビのボリュームが大きくなります。
このドキュメントでは、エンターテイメントデバイスを対象としたスマートホームスキルの技術的要件の概要や、特定のディレクティブとエラーメッセージについて説明します。
スキル開発を開始する
初めてスマートホームスキルを作成する場合は、このドキュメントを読み進める前に、関連する既存のドキュメントを確認してください。スマートホームスキルの作成方法と、スマートホームスキルAPIから送信されるリクエストを処理するLambda関数のコードの作成方法を理解する必要があります。詳細については、次のページを参照してください。
スキルの実装
次のセクションでは、エンターテイメントデバイス用スマートホームスキルの実装について詳しく説明します。
エンターテイメントデバイス用スマートホームスキル
エンターテイメントデバイス向けにスキルを作成する場合、スマートホームスキルAPIでエンターテイメントデバイスを制御するメッセージを受け取る必要があります。これを行うには、スキルの作成時に開発者コンソールでv3と英語の言語オプションのいずれかを選択します。
詳しい手順については、スマートホームスキルの作成手順を参照してください。
メッセージの形式
Alexaはユーザーのリクエストを受けてスキルにディレクティブを送信し、リクエストが成功したことを示すイベントまたはエラーメッセージが返信されます。こうすると、Alexaはユーザーに適切に応答できます。エンターテイメントデバイス制御には、APIのペイロードバージョン3で定義されたメッセージ形式が使用されます。各デバイスは、検出応答のインターフェース機能のリストに記載されたエンドポイントです。各インターフェースは、Alexaがスキルに送信するディレクティブと、スキルからAlexaに返されるイベントを提供します。またインターフェースは、応答イベントでエンターテイメントデバイスの現在の情報を説明するために送信できるレポート可能なプロパティを定義します。たとえば、チャンネルを変更できるデバイスの場合、Alexa.DiscoveryインターフェースとAlexa.ChannelControllerインターフェースを実装しますが、ここではチャンネルがレポート可能なプロパティとして定義されます。
エンターテイメントデバイスの検出
デバイスを記述するときは、各デバイスに関連した機能と、各機能でサポートされるプロパティも記述します。
エンドポイントでPlaybackControllerインターフェースがサポートされている場合、そのエンドポイントがサポートするオペレーションを検出応答のsupportedOperations
文字列配列で指定する必要があります。
また、デバイスのdisplayCategory
も指定する必要があります。これを指定すると、Alexaアプリで適切に表示されます。エンターテイメントエンドポイントの場合は、次のいずれかになります。
- SPEAKER - スピーカーまたはスピーカーシステムのエンドポイントを表します。
- TV - TVのエンドポイントを表します。
以下は、エンターテイメントデバイスの記述方法のコード例です。デバイス検出のメッセージの詳細については、Alexa.Discoveryを参照してください。EqualizerController
をサポートするエンドポイントを検出する場合は、EqualizerControllerの検出セクションで検出応答内のコンフィギュレーション要件を参照してください。
エンターテイメントデバイス向けの検出応答の例
{
"event":{
"header":{
"namespace":"Alexa.Discovery",
"name":"Discover.Response",
"payloadVersion":"3",
"messageId":"5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4"
},
"payload":{
"endpoints":[
{
"endpointId":"appliance-001",
"friendlyName":"リビングのエンターテイメントシステム",
"description":"サンプルメーカーのエンターテイメントシステム",
"manufacturerName":"サンプルメーカー",
"displayCategories":[
"TV"
],
"cookie":{
"extraDetail1":"optionalDetailForSkillAdapterToReferenceThisDevice",
"extraDetail2":"複数のエントリーがある場合があります",
"extraDetail3":"ただし、参照のためだけに使用してください",
"extraDetail4":"現在のエンドポイントの状態を維持するのに適切な場所ではありません"
},
"capabilities":[
{
"type":"AlexaInterface",
"interface":"Alexa.Speaker",
"version":"1.0",
"properties":{
"supported":[
{
"name":"volume"
},
{
"name":"muted"
}
]
}
},
{
"type":"AlexaInterface",
"interface":"Alexa.ChannelController",
"version":"1.0",
"properties":{
"supported":[
{
"name":"channel"
}
]
}
},
{
"type":"AlexaInterface",
"interface":"Alexa.PlaybackController",
"version":"1.0",
"properties":{ },
"supportedOperations" : ["Play", "Pause", "Stop"]
},
{
"type":"AlexaInterface",
"interface":"Alexa.InputController",
"version":"1.0",
"properties":{
"supported":[
{
"name":"input"
}
]
}
}
]
}
]
}
}
}
エンターテイメントデバイスのインターフェース
ユーザーのリクエストを処理するには、Alexaのリクエストメッセージを解析して、応答するAlexa.Response
イベントを構成する必要があります。エラーが発生した場合は、正しいエラーメッセージを返す必要があります。メッセージはインターフェースで、デバイス機能別に整理されて定義されています。エンターテイメントデバイスの機能を記述するインターフェースを、次の表で説明します。
操作 | 機能インターフェース |
---|---|
デバイスの電源をオンまたはオフにします | Alexa.PowerController |
デバイスのチャンネルを変更します | Alexa.ChannelController |
イコライザーの設定を変更します(帯域の調整やイコライザーモードの変更など) | Alexa-EqualizerController |
再生デバイスの入力を変更します | Alexa.InputController |
早送り、早戻し、一時停止など、デバイスの再生を制御します | Alexa.PlaybackController |
ボリュームを段階的に変更します | Alexa.StepSpeaker |
ボリュームを特定の範囲のいずれかの値に変更します | Alexa.Speaker |
エラーが発生したことを示します | Alexa.ErrorResponse |