あなたのAlexaダッシュボード 設定

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

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

スマートホームスキルは、クラウドで接続されたデバイスにAlexaによる音声操作を可能にし、ステータスを確認できるようにするための統一された手順を提供します。スマートホームスキルでは音声対話モデルはあらかじめ定義されたものが使われます。Alexaによってユーザーの発話が解釈され、スキルが取るべき事項がメッセージとしてスキルに送信されます。また、スマートホームスキルAPIを使用すると、操作されるデバイスの最新ステータスをAlexaアプリの中に表示させることもできます。

スマートホームスキルAPIの仕組み

ユーザーは、Alexaアプリでスマートホームスキルを有効にし、それを自分のデバイスクラウドのアカウントでアカウントリンクをし、そのアカウントに関連付けられているデバイスを検出させます。

その後、「Alexa、キッチンの照明を50%明るくして」などのユーザーの発話をAlexaが聞き取ったり、ユーザーがAlexaアプリで照明の設定を変更したりすると、Alexaはユーザーのその意図を解釈、照明を制御するスマートホームスキルにこのメッセージを送信する必要があることを把握します。次にAlexaは、ディレクティブと呼ばれるメッセージを作成、ディレクティブには、ユーザーの認証情報、デバイスのID、新しい設定値が含まれます。スマートホーム開発者は、Amazon Web Services(AWS) の AWS Lambda を使ってホストしたコードでこのメッセージを受信して解析し、デバイス制御クラウドにある指定のデバイスに渡します。次にイベントと呼ばれるメッセージで応答し、リクエストが成功したかどうかを示します。応答はLambda関数からイベントを同期的に送信するか、デバイス制御クラウドから非同期的に送信するかを選択できます。Alexaはイベント内の情報を使用して、リクエスト元のユーザーに応答します。

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

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

  • デバイスAPI: デバイス操作要求のためのインターフェース群。デバイスがどのインターフェースを実装しているかは Capability interfaces で示します。対応インターフェースは複数指定することが可能で、そのデバイスを最も適切に示す組み合わせを記述します。たとえば、オン/オフを切り替え、明るさを調整できる照明の場合、次の2つのインターフェースが実装できることを示します。PowerControllerBrightnessController。別の照明がこれら2つの機能を持っていて、なおかつ調整可能な白色照明もサポートする場合には、PowerControllerBrightnessControllerColorTemperatureControllerに対応していることを示します。
  • 同期と非同期のメッセージング: デバイス操作のディレクティブがAlexaに送信されると、開発者はディレクティブの処理終了後、イベントとしてその結果を同期または非同期で通知します。ご使用のデバイスとクラウドのアーキテクチャに最も適合するように、同期または非同期の応答、さらにはその2つの組み合わせのどれでも自由に選択できます。
  • デバイスステータス変更通知: Amazonでは、開発者がプロアクティブなステータス変更をイベントメッセージでAlexaに提供できるようにしています。その後Alexaは、この情報をAlexaアプリに提供し、ユーザーが必要に応じてアクションを実行できるようにします。たとえば、ドアのロックが解除される場合、この変更レポートをAlexaに送信し、お客様のAlexaアプリで自動的にこの変更を表示するようにできます。
  • 機能のクエリ: 機能インターフェースはAlexaがクエリを実行できるプロパティを定義します。それにより、ユーザーはAlexaまたはAlexaアプリを使用してデバイスの現在の状態を確認できます。

次の図は、スマートホームスキル開発者用に提供されている機能を示しています。

スマートホームスキルAPI

例:

  1. ユーザーが、スキルを有効にして、エンドポイント検出プロセスを実行します。
  2. ユーザーが「Alexa、キッチンの照明をオンにして」とAlexa端末に話しかけたり、Alexaアプリで照明をオンにしたりします。
  3. Alexaはユーザーの発話またはAlexaアプリからの情報を使用して、 エンドポイントと実行する操作を特定するメッセージを構成します。このディレクティブが、キッチンの照明を制御するスキルに送信されます。ディレクティブには、以下の要素が含まれます。
    • 機能(PowerController.TurnOn
    • エンドポイント識別子(ユーザーの「キッチンの照明」に一致するエンドポイントのID)
    • メッセージ識別子
    • ユーザー認証情報
  4. Lambda関数としてホストされるスキルコードがディレクティブを受け取って解析し、認証情報を検証します。スキルがシステムまたはデバイス制御クラウドと通信します。その際、キッチンの照明をオンにするよう定義しておいた通信チャネルを使用します。
  5. 操作が正常に実行されたかどうかを示す応答が、スキルによってAlexaに戻されます。Alexaはこの応答を元に、ユーザーへの適切な応答を提供します。たとえば、リクエストされたディレクティブが正常に処理したことを示す場合、Alexaは「はい」と言います。
  6. その後、ユーザーがキッチンの照明を手動でオフにした場合、照明が現在オフになったことを示す変更レポートイベントがスキルによってAlexaに送信されます。

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

インターフェースはスマートホームカメラ、エンターテイメント端末、照明、ロック、サーモスタットなどを制御できるよう特別に設計されているものと、広範囲に適用可能で様々なデバイスを制御できるインターフェースとがあります。たとえば、オン/オフを切り替えるための電源制御インターフェースや、強度や速度の設定のためのパーセンテージ制御インターフェースは様々なデバイスで使用することができます。デバイスの種類毎のガイドラインを次に示します。インターフェースの完全なリストについては、スマートホームスキルAPIのメッセージリファレンスを参照してください。

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

スマートホームスキルは誰でも開発できます。複雑な音声対話はAmazonにより処理されるため、スマートホームスキルの開発は簡単です。Alexaによって、ユーザーの発話の解釈方法と、スマートホームスキルに送信するディレクティブが決定されます。

一般的に、スマートホームスキルの開発は2つのカテゴリーに分けられます。

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

スマートホームスキル開発の前提条件

スマートホームスキルを開発するためには以下が必要です。

  • Amazon開発者アカウント。サインアップは無料です。
  • クラウドAPIを使用して制御することができる照明、サーモスタット、カメラ、ロックなどのデバイス
  • Amazon EchoなどのAlexa搭載端末。
  • AWSアカウント。スキルコードはAWS Lambda関数でホストします。
  • JSONに関する知識
  • Java、Node.js、C#、またはPythonの知識。Lambda関数はこれらのうちいずれかの言語で記述できます。
  • OAuth 2.0に関する理解

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

その他のリソース