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