スマートホームスキルAPIについて



スマートホームスキルAPIについて

Alexaスマートホームスキルを作成すると、ユーザーはスキルを使って音声でクラウドコネクテッドデバイスを制御できます。スマートホームスキルには音声対話モデルがあらかじめ定義されています。ユーザーがAlexaに話しかけると、Alexaは発話を解釈し、スキルにメッセージを送信してリクエストを伝えます。スキルは、デバイスの状態を変更したり(照明を暗くするなど)、デバイス状態の情報を送信したり(照明のオン/オフ状態をユーザーに伝えるなど)することにより、メッセージに対応します。

Alexa Skills Kitを使用して作成できる、その他の種類のAlexaスキルの概要については、スキルの種類の一覧を参照してください。

Alexaのスマートホームスキルの開発者

スマートホームスキルは誰でも開発できます。スマートホームスキルAPIを使用することで、ユーザー独自の音声対話を定義できます。これは、Alexaがユーザーの言葉を解釈する方法や、スキルにどのディレクティブを送信するかを理解しているということです。スマートホームスキルの開発は2つのカテゴリーに分けられます。

  • デバイスの製造元の開発者が、自社のクラウドコネクテッドデバイスをユーザーが音声で制御できるようにするスキルを開発する。
  • 独立した開発者がクラウドコネクテッドデバイス向けのAlexaスキルを、個人で使用するため、または一般に公開するために個人的に開発する。

デバイスをAlexaに接続するには、独自のスマートホームスキルを作成することも、経験豊富なソリューションプロバイダーに依頼することもできます。ソリューションプロバイダーのリストについては、Works with Alexa IoTソリューションプロバイダーを参照してください。

サポートされるデバイスの種類

スマートホームスキルAPIを使用すると、どのようなタイプのデバイスでも仮想的にAlexaに接続できます。スマートホームスキルには音声対話モデルがあらかじめ定義されています。ユーザーとデバイスの対話方法を決め、スキルにその対話を実現する機能インターフェースを実装します。たとえば、デバイスが照明の場合、ユーザーが照明をオン/オフできるようにするため、スキルにAlexa.PowerControllerインターフェースを実装します。

ほとんどのデバイスでは、複数の機能と音声対話できるように複数のインターフェースを実装します。すべてのスマートホームインターフェースについては、Alexaインターフェースの一覧を参照してください。

Alexaインターフェースの多くは実装できるデバイスの種類が限られていますが、その他のインターフェースは多くの種類のデバイスに実装できます。たとえば、ThermostatControllerインターフェースはサーモスタットにのみ実装できますが、PowerLevelControllerなどのインターフェースは多くの種類のデバイスに実装できます。

できる限り、デバイス専用のインターフェースを選択してください。Alexaが特定デバイス用のさらに多くの機能を提供できるためです。たとえば、PercentageControllerRangeControllerを使ってもデバイスの明るさの概念をモデル化することはできますが、BrightnessControllerインターフェースを実装すれば、「アレクサ、照明を暗くして」といったフレーズに対するビルトインサポートが提供されます。

一般的なデバイス向けにどのインターフェースを実装すればよいかの推奨事項については、スマートホームスキル用のデバイステンプレートを参照してください。

スマートホームスキルAPIのしくみ

スマートホームスキルAPIでは、デバイスについて記述できる機能インターフェースと、それがサポートするプロパティ、イベント、ディレクティブを提供します。Alexaからデバイスの検出プロセス中にDiscoverディレクティブを受け取った後で、Discover.Responseイベントを送信することで、デバイスをAlexaに記述します。Alexaは、自動的に特定の機能を有効にするために、このデバイスと機能に関する記述を使用します。たとえば、次のような機能です。

  • ネイティブの音声ユーザーインターフェース(VUI)(多くの共通コマンドで使用)。
  • コンテキストの特定。ユーザーが明示しない場合でも、正しいデバイスに対してコマンドを発行できるよう、Alexaがデバイスグループなどのコンテキスト的な手掛かりを使えるようにします。
  • 定型アクションからのデバイスの制御。
  • Alexaアプリを使用したデバイスの表示と制御。

このAPIでは、音声リクエストのサポートに加え、デバイスの状態が変更された時の更新情報を提供することもできます。これにより、ユーザーはAlexaにデバイスについてたずねられるようになり、Alexaアプリでデバイスの最新の状態を確認できるようになります。たとえば、ユーザーはAlexaアプリを使用して、自宅の温度を確認したり、照明が点灯しているかどうか確認したりできます。

こうしたユーザーのシナリオをサポートするために、このAPIには次の機能が備わっています。

  • 機能インターフェース – これらのインターフェースはデバイスの機能を説明します。デバイス、またはエンドポイントは、その特長を最もよく表す機能インターフェースを組み合わせて実装できます。たとえば、オンとオフを切り替え、明るさを調整できる照明の場合、2つのインターフェースを実装できます。 PowerControllerBrightnessControllerです。これら2つの機能を備え、調節可能な白色照明をサポートしている同様の照明でも、ColorTemperatureControllerを実装できます。
  • 同期および非同期メッセージング – Alexaがディレクティブを送信すると、スマートホームスキルがイベントと呼ばれるメッセージで、同期または非同期で応答します。ご使用のデバイスとクラウドのアーキテクチャに最も適合するように、同期または非同期の応答、さらにはその2つの組み合わせのどれでも自由に選択できます。
  • デバイスステータス変更通知 – ユーザーがプロアクティブなステータス変更をイベントメッセージでAlexaに提供できます。その後Alexaは、この情報をAlexaアプリに提供し、ユーザーが必要に応じてアクションを実行できるようにします。たとえば、ドアのロックが解除される場合、この変更レポートをAlexaに送信し、ユーザーのAlexaアプリでこの変更を表示できます。
  • 機能のクエリ - 機能インターフェースはAlexaがクエリを実行できるプロパティを定義します。それにより、ユーザーはAlexaまたはAlexaアプリを使用してデバイスの現在の状態を確認できます。

次の図は、スマートホームスキルAPIが提供している機能の概要を示しています。

Alexa Smart Home Skill APIの概要

次のようなことが可能です。

  1. ユーザーは、スマートホームスキルを使用して、スキルをデバイスクラウドのユーザーアカウントにリンクしたり、アカウントに紐づいているデバイスを検出するようAlexaに頼んだりできます。
  2. その後、ユーザーが(たとえば)「アレクサ、キッチンの照明を50パーセント明るくして」と言うか、Alexaアプリのデバイス設定を変更する場合、Alexaはユーザー発話、またはアプリからの情報を使用して、エンドポイントを識別したり、実行する操作を決定したりするメッセージを作成します。このメッセージはディレクティブと呼ばれ、キッチンの照明を制御するスキルに送信されます。ディレクティブには、以下の要素が含まれます。
    • 機能メッセージ(BrightnessController.SetBrightnessなど)。これには、新しい設定値が含まれます。
    • エンドポイント識別子(ユーザーの「キッチンの照明」に一致するエンドポイントのID)。
    • ユーザー認証情報。
  3. アマゾンウェブサービス(AWS)が提供しているサービス、AWS Lambdaでホストされるスキルコードがディレクティブを受け取って解析し、認証情報を検証します。スキルがシステムまたはデバイス制御クラウドと通信します。その際、キッチンの照明の輝度を設定するようユーザーが定義しておいた通信チャネルを使用します。
  4. スキルは、操作が正常に実行されたかどうかを示すイベントと呼ばれるメッセージで、Alexaに応答します。応答はLambda関数からイベントを同期的に送信するか、デバイス制御クラウドから非同期的に送信するかを選択できます。Alexaはこの応答を元に、ユーザーへの適切な応答を提供します。たとえば、リクエストされたディレクティブが正常に処理されたことを示す場合、Alexaは「はい」と言います。
  5. その後、ユーザーがキッチンの照明を手動でオフにすると、照明が現在オフになったことを示す変更レポートイベントがスキルによってAlexaに送信されます。

スキル作成のための次のステップ

開発を始めるには、スマートホームスキルの作成手順を参照してください。

その他のリソース