スマートホームスキルAPIについて
スマートホームスキルは、クラウドで接続されたデバイスにAlexaによる音声操作を可能にし、ステータスを確認できるようにするための統一された手順を提供します。スマートホームスキルでは、ユーザーが音声対話モデルを定義し、処理するので、多くの種類のデバイス向けのビルトインサポートを受けることができます。Alexaによってユーザーの発話が解釈され、スキルが取るべき事項がメッセージとしてスキルに送信されます。
スマートホームスキルAPIのしくみ
スマートホームスキルAPIでは、デバイスについて記述できる機能インターフェースと、それがサポートするプロパティ、イベント、ディレクティブを提供します。AlexaからDiscoverディレクティブを受け取った後に Discover.Responseイベントを送信する、またはAlexaにAddOrUpdateReportをプロアクティブに送信することで、デバイスをAlexaに記述します。 Alexaは、自動的に特定の機能を有効にするために、このデバイスと機能に関する記述を使用します。たとえば、次のような機能です。
- Alexaの音声ユーザーインターフェース(VUI)(多くの共通コマンドで使用)
- コンテキストを特定するサポート。ユーザーが明示しない場合でも、正しいデバイスに対してコマンドを発行できるよう、Alexaがデバイスグループなどのコンテキスト的な手掛かりを使えるようにします。
- ルーチンからデバイスを制御するサポート。
- Alexaモバイルアプリを使用してデバイスを表示、制御するサポート。
このAPIでは、音声リクエストのサポートに加え、デバイスの状態が変更された時の更新情報を提供することもできます。これにより、ユーザーはAlexaにデバイスについてたずねられるようになり、Alexaアプリでデバイスの最新の状態を確認できるようになります。たとえば、ユーザーはAlexaアプリを使用して、自宅の温度を確認したり、照明が点灯しているかどうか確認したりできます。
こうしたユーザーのシナリオをサポートするために、このAPIには次の機能が備わっています。
- 機能インターフェース – これらのインターフェースはデバイスの機能を説明します。デバイス、またはエンドポイントは、その特長を最もよく表す機能インターフェースを組み合わせて実装できます。たとえば、オンとオフを切り替え、明るさを調整できる照明の場合、2つのインターフェースを実装できます。 PowerControllerとBrightnessControllerです。これら2つの機能を備え、調節可能な白色照明をサポートしている同様の照明でも、ColorTemperatureControllerを実装できます。
- 同期および非同期メッセージング – Alexaがディレクティブを送信すると、スマートホームスキルがイベントと呼ばれるメッセージで、同期または非同期で応答します。ご使用のデバイスとクラウドのアーキテクチャに最も適合するように、同期または非同期の応答、さらにはその2つの組み合わせのどれでも自由に選択できます。
- デバイスステータス変更通知 – ユーザーがプロアクティブなステータス変更をイベントメッセージでAlexaに提供できます。その後Alexaは、この情報をAlexaアプリに提供し、ユーザーが必要に応じてアクションを実行できるようにします。たとえば、ドアのロックが解除される場合、この変更レポートをAlexaに送信し、ユーザーのAlexaアプリで自動的にこの変更を表示するようにできます。
- 機能のクエリ - 機能インターフェースはAlexaがクエリを実行できるプロパティを定義します。それにより、ユーザーはAlexaまたはAlexaアプリを使用してデバイスの現在の状態を確認できます。
次の図は、スマートホームスキルAPIが提供している機能の概要を示しています。

次のようなことが可能です。
- ユーザーは、スマートホームスキルを使用して、スキルをデバイスクラウドのユーザーアカウントにリンクしたり、アカウントに紐づいているデバイスを検出するようAlexaに頼んだりできます。
- その後、ユーザーが(たとえば)「アレクサ、キッチンの照明を50パーセント明るくして」と言うか、Alexaモバイルアプリのデバイス設定を変更する場合、Alexaはユーザー発話、またはアプリからの情報を使用して、エンドポイントを識別したり、実行する操作を決定したりするメッセージを作成します。このメッセージはディレクティブと呼ばれ、キッチンの照明を制御するスキルに送信されます。ディレクティブには、以下の要素が含まれます。
- 機能メッセージ(BrightnessController.SetBrightnessなど)。これには、新しい設定値が含まれます。
- エンドポイント識別子(ユーザーの「キッチンの照明」に一致するエンドポイントのID)。
- ユーザー認証情報。
- アマゾンウェブサービス(AWS)が提供しているサービス、AWS Lambdaでホストされるスキルコードがディレクティブを受け取って解析し、認証情報を検証します。スキルがシステムまたはデバイス制御クラウドと通信します。その際、キッチンの照明の輝度を設定するようユーザーが定義しておいた通信チャネルを使用します。
- スキルは、操作が正常に実行されたかどうかを示すイベントと呼ばれるメッセージで、Alexaに応答します。応答はLambda関数からイベントを同期的に送信するか、デバイス制御クラウドから非同期的に送信するかを選択できます。Alexaはこの応答を元に、ユーザーへの適切な応答を提供します。たとえば、リクエストされたディレクティブが正常に処理されたことを示す場合、Alexaは「はい」と言います。
- その後、ユーザーがキッチンの照明を手動でオフにすると、照明が現在オフになったことを示す変更レポートイベントがスキルによってAlexaに送信されます。
サポートされるデバイスの種類
AlexaスマートホームスキルAPIを使用すると、インターネットに接続されているさまざまなデバイスをAlexaに接続するスキルを作成できるようになります。機能インターフェースの多くは、特定のデバイス専用ですが、多くの種類のデバイスに対応しているものもあります。たとえば、ThermostatControllerはサーモスタット専用ですが、PowerController、ModeController、RangeController、ToggleControllerなどのインターフェースは、さまざまな種類のデバイスに適用できます。
できる限り、デバイス専用のインターフェースを選択してください。Alexaが特定デバイス用のさらに多くの機能を提供できるためです。たとえば、BrightnessController、PercentageController、またはRangeControllerを使用してデバイスの輝度の概念を設定できますが、BrightnessController
を使用した場合にのみ、「アレクサ、照明を暗くして」というようなフレーズに対し、Alexaはビルトイン音声サポートを提供できます。
多くのインターフェースでは、デバイス1つにつき使用できるインターフェースは1つのみです。たとえば、あるデバイスでは、PowerController
1つしか使用できません。ただし、次のインターフェースは、1つのデバイスで1つ以上使用できます。
ModeController
RangeController
ToggleController
スマートホームの機能インターフェースを使用して、さまざまなデバイスを表現する方法については、デバイステンプレートを使用して開発を始めるを参照してください。表現できるデバイスカテゴリーについての概念情報については、スマートホームスキルの作成についての次のトピックを参照してください。
機能インターフェースの全一覧と、サポートされるいくつかのサンプル発話については、機能インターフェースの一覧を参照してください。
ユーザーは、スマートホームスキルAPIによって提供される、デバイスのビルトインサポートを使用できるだけでなく、カスタム音声対話をスキルに追加して、エンドユーザーのエクスペリエンスをカスタマイズすることもできます。これを実行するには、CustomIntentインターフェースを使用します。詳しくは、スマートホームスキルにカスタムの音声対話を追加するを参照してください。この機能は現在プレビューでご利用いただけます。プレビューへのアクセスをリクエストするには、このアンケートに記入してください。
Alexaのスマートホームスキルの開発者
スマートホームスキルは誰でも開発できます。スマートホームスキルAPIを使用することで、ユーザー独自の音声対話を定義できます。これは、Alexaがユーザーの言葉を解釈する方法や、スキルにどのディレクティブを送信するか理解しているということです。一般的に、スマートホームスキルの開発は2つのカテゴリーに分けられます。
- クラウド対応デバイスの製造元の開発者が、自社の製品をユーザーが音声で制御できるようにするスキルを開発する。
- 独立した開発者がクラウド対応デバイス向けのAlexaスキルを、個人で使用するため、または一般に公開するために個人的に開発する(一般公開には審査が必要です)。
スマートホームスキル開発の前提条件
スマートホームスキルを開発するためには以下が必要です。
- Amazon開発者アカウント。サインアップは無料です。
- クラウドAPIを使用して制御することができる照明、サーモスタット、カメラ、ロック、その他のデバイスなどのコネクテッドデバイス。
- Amazon EchoなどのAlexa搭載デバイス。
- AWSアカウント。スキルコードはAWS Lambda関数でホストします。
- JSONとAWS Lambdaがサポートするいずれか1つの言語に関する知識。 Node.js、Java、Python、C#、Goのいずれかです。
- OAuth 2.0に関する理解。
スキル作成のための次のステップ
開発を始めるには、スマートホームスキルの作成手順を参照してください。
Alexa Skills Kitを使用して作成できる、その他の種類のAlexaスキルの概要については、スキルの種類についてを参照してください。
その他のリソース
ヘルプについては、以下のリソースを参照してください。