カスタムインターフェースに関するFAQ



カスタムインターフェースに関するFAQ

このページには、カスタムインターフェースに関するよくある質問を掲載しています。現在確認済みの問題のリストについては、既知の問題を参照してください。

一般

質問: カスタムインターフェースとは何ですか?また、カスタムインターフェースコントローラーとはどのように関連していますか?
カスタムインターフェースとカスタムインターフェースコントローラーは連動して、スキルとガジェットを有効にし、Alexaスキルセッションでメッセージを交換します。カスタムインターフェースは、最初の手順で定義したガジェット固有のディレクティブとイベントをまとめたグループです。たとえば、ガジェットが試合に勝つとくるくる回転するロボットである場合、ロボットに回転するよう指示するSpinというディレクティブと、回転が完了したらロボットのステータスを送信するSpinStatusというイベントを含むCustom.Robotという名前のインターフェースを定義します。ガジェットのファームウェアで、カスタムディレクティブとイベントをそれぞれデコードおよびエンコードするコードを含めます。これに対して、カスタムインターフェースコントローラーは、定義したカスタムディレクティブを送信し、カスタムイベントを受信するためにスキルコード内で使用するインターフェースです。
質問: カスタムインターフェースを使用して作成できるのは、どのような種類のエクスペリエンスですか?
カスタムインターフェースを使用すると、スキルコンテンツのほか、インタラクティブなガジェットエクスペリエンスをデザインできます。たとえば、物語を話す、プレイパターンを確立する、あるいは単純に情報を受け渡すことなどができます。以下はその例です。
  • RFIDリーダーを使ってAlexaをトリガーし、楽曲の一部を再生するジュークボックス。このジュークボックスは、音楽を再生する間、光のアニメーションを送信するディレクティブを使用します。
  • Alexaをピアノの講師に変えるミニキーボード。プレイシーケンスに対応する鍵盤をライトアップし、正しい順番で弾けていたかどうか(正しい鍵盤に触れたかどうか)のフィードバックをユーザーに提供します。
  • Alexaから与えられたヒントを基に、ユーザーがキーパッドを使って秘密の金庫のカギを開けるインタラクティブな脳トレゲーム。
質問: カスタムインターフェースに適さないのは、どのようなガジェットエクスペリエンスですか?
ガジェットの音声コントロールのメインの手段として、カスタムインターフェースを使用することはお勧めしません。たとえば、「電源をオンにする」、「電源をオフにする」、「低電力消費モードに設定する」などのコマンドでガジェットを制御するのに、カスタムインターフェースは使用しないでください。これらのコマンドは、ほかの種類のコネクテッドデバイスを制御するAlexaのネイティブな音声ユーザーインターフェースと競合するため、ガジェットのメッセージがうまく伝わらなくなります。デバイスの状態を音声で制御できるようにしたい場合は、Alexaスマートホームデバイスのビルドを検討してください。このビルドでは、一般的なデバイスコマンド用のプリビルドの音声対話モデルが使用できます(Alexa.PowerControllerインターフェースを参照)。
質問: 子ども用のガジェットに合うスキルエクスペリエンスを作りたいのですが、カスタムインターフェースは使用できますか?
現在は使用できません。子ども用デバイスを専門とする企業の場合は、Amazonの担当者にお問い合わせのうえ、詳細をご確認ください。
質問: 自分のガジェットのスキルを作成する際、カスタムディレクティブやイベントをほかの開発者と共有できますか?
いいえ。現段階では、スキルでカスタムディレクティブやイベントを使用できるのは、このAlexa開発者アカウントで登録されたガジェットのみです。このアカウントに登録されていないスキルは、ガジェットと対話することはできません。
質問: カスタムイベントやディレクティブ以外で、スキルからアクセスできるAlexa Gadgets Toolkitインターフェースはありますか?
いいえ、ありません。ウェイクワード検出、通知、音楽データなど、Alexa Gadgets Toolkitで定義されたインターフェースは、スキルからはアクセスできません。

サンプルコード

質問: 自分のガジェット向けのスキルをビルドする際、参照できるサンプルアプリケーションはどれですか?
GitHubにあるAlexa Gadgets Raspberry Piサンプルリポジトリは、Raspberry Piで実行されるシンプルなガジェットをセットアップし、ガジェットと対話する付属サンプルスキルをビルドする手順を詳しく説明しています。このサンプルプロジェクトは、ボタンとLEDモジュールを1つずつ備えた「Color Cycler(色々サイクル)」ガジェットで構成されており、ガジェットでイベントとディレクティブの両方を使用してコンテキストに沿ってスキルに応答する方法を示しています。このスキルでは、AlexaはLEDの色をサイクルで切り替えるよう、ガジェットをトリガーします。ユーザーがボタンを押すと、Alexaがどの色を選んだかを報告します。

Echoデバイスの互換性

質問: Echoデバイスのソフトウェアのバージョンがカスタムインターフェースに対応することを確認するには、どうしたらよいですか?
まず、この互換性リストで、Echoデバイスがガジェットに対応していることを確認してください。対応している場合は、以下の手順を実行してEchoデバイスのソフトウェアバージョンが最新かどうかを確認してください。
  • 画面の付いていないEchoデバイスの場合 – 「アレクサ、ソフトウェアをアップデートして」と呼びかけます。
  • 画面付きEchoデバイスの場合 – Echoデバイスで設定デバイスオプションソフトウェアアップデートの確認の順に選択します。

また、Alexa Gadgets Toolkitに対応する最小ソフトウェアバージョンは、開始する前にに記載されています。Echoデバイスのソフトウェアバージョンを確認するには、Alexaアプリで設定デバイスの設定>デバイス>その他デバイスのソフトウェアバージョンの順に移動します。

ガジェットの準備

質問: カスタムインターフェースコントローラーを使用するスキルと通信する際のガジェットの準備方法を教えてください。
Bluetooth経由でEchoデバイスを接続する場合、ガジェットは定義されたカスタムインターフェースのサポートを宣言する必要があります。この宣言が完了したら、EchoデバイスとAlexaクラウドを介して、ガジェットが関連するカスタムイベントをスキルに送信し、ディレクティブをスキルから受信できるようになります。たとえば、ガジェットがメッセージを圧縮し、解凍する方法については、GitHubにあるAlexa Gadgets Raspberry Piサンプルリポジトリを参照してください。

スキルの作成

質問: カスタムディレクティブを送信し、カスタムイベントを受信できるようにスキルをセットアップする方法を教えてください。
Alexa Skills Kit開発者コンソールまたはAlexa Skills Kitコマンドラインインターフェース(ASK CLI)を使用してスキルをセットアップする場合、カスタムインターフェースコントローラーインターフェースを必ず選択するようにしてください。これにより、スキルからガジェットにカスタムディレクティブを送信し、ガジェットからカスタムイベントを受信できるようになります。

スキルのセッション中、スキルがイベントを「リッスン」するためにイベントハンドラーを開始すれば、ガジェットからイベントを受信できるようになります。スキルはイベントハンドラーを開始する際、イベントをリッスンする時間(最大90秒)と、特定のイベントを絞り込む方法(たとえば、特定のガジェットID、または割り当てた特定の名前空間のイベントなど)を指定します。

カスタムディレクティブを送信するには、スキルがまずEndpoint Enumeration APIを使用して、どのガジェットが利用可能で、接続されているかをクエリする必要があります。このクエリの結果を利用して、1つ以上の利用可能なガジェットをディレクティブのターゲットに指定します。読み上げ機能(TTS)や音声応答などのAlexaコンテンツとともに、ガジェットの動作をトリガーするディレクティブは、スキルの開始時を含め、スキルセッション中にいつでも組み込むことができます。
質問: スキルがガジェットと通信するための認定要件は何ですか?
カスタムインターフェースを使用するスキルには、すべてのカスタムスキルと同じポリシー、セキュリティ、機能要件が適用されます。ベストプラクティスとして、スキルがガジェットと連動するために作られていることと、ガジェットが必須またはオプションかをスキルの説明に含めておく必要があります。スキル認定に必要な検討事項やガジェットのテストはほかにありませんが、ガジェットがエンドユーザーに約束したとおりに機能することを責任を持って確認してください。
質問: スキルでカスタムインターフェースコントローラーを使用して、スマートホームやAlexa Built-Inなどのコネクテッドデバイスを制御することはできますか?
いいえ、できません。現段階では、カスタムインターフェースコントローラーはカスタムスキルとガジェットのみと互換性を持ち、その他のスキルタイプと組み合わせてマルチ機能スキルを作成することはできません。スマートホームスキルにカスタムの音声対話を追加したい場合は、スマートホームの関連ドキュメントを参照してください。AVS開発者で、カスタムインターフェースコントローラーを使用して、Alexa APIで提供されていない独自のハードウェア機能をサポートしたい場合は、Amazonの担当者にお問い合わせください。

カスタムイベント

質問: カスタムイベントはスキルをトリガーすることはできますか?
いいえ、できません。スキルが既に動作中であり、イベントハンドラーを開始するディレクティブを送信済みである必要があります。
質問: ガジェットからイベントを受信した後、スキルが自動的に終了しないようにするにはどうすればよいですか?
以下の2つの項目を実行します。
  • イベントハンドラーを開始する際は、イベントハンドラーの有効期限が過ぎるまでカスタムイベントを続けて受信できるよう、filterMatchActionSENDに設定します(SEND_AND_TERMINATEは使用しないでください)。
  • スキルの応答でshouldEndSessionが未定義であること(つまり、応答から完全に削除されていること)を確認してください。
質問: 複数のイベントハンドラーに同じトークンを使用できますか?
はい。トークンは一意である必要はありません。ただし、使用事例を考慮してください。イベントハンドラーの有効期限を90秒以上に延長したい場合は、前回のイベントハンドラーのトークンを再利用できます。一方、あるイベントが最近停止、または置き換えられたイベントハンドラーから受信したものではないことを確認したい場合は、一意のトークンを使用します。たとえば、トークンGAME-2のイベントハンドラーを開始してから、トークンGAME-1のイベントを受信した場合は、このイベントを無視します。

一意のトークンを使用しても、GAME-1.1、GAME-1.2、GAME-1.3(1番目の論理ハンドラーのトークン)、GAME-2.1、GAME-2.2(2番目の論理ハンドラーのトークン)など、論理グループに応じて名前を付けるのも、1つの方法です。
質問: イベントハンドラーは、スキルセッションが開いている時間に影響を及ぼしますか?
はい。有効なイベントハンドラーは、以下のようにスキルセッションを延長させることができます。
  • 画面の付いていないEchoデバイスの場合 – ユーザーがAlexaに応答しない場合、有効なイベントハンドラーがあるか、スキルがfalseと等しいshouldEndSessionで応答しない限り、セッションは即座に終了します。イベントハンドラーが有効な場合、スキルがStopEventHandlerを呼び出す、あるいはイベントハンドラーがタイムアウトにならない限り、セッションは開いたままになります。
  • 画面付きEchoデバイスの場合 – ユーザーがAlexaに応答しない場合、有効なイベントハンドラーがあるか、スキルがfalseと等しいshouldEndSessionで応答しない限り、セッションは30秒間開いたままになります。イベントハンドラーが有効な場合、スキルがStopEventHandlerを呼び出す、あるいはイベントハンドラーがタイムアウトにならない限り、セッションは開いたままになります。

このため、スキルがイベントハンドラーのタイムアウトを5秒以上にコンフィギュレーションした場合、スキルがセッション中であることをユーザーが認識できるように、スキルの応答に音楽またはサウンドエフェクトを含める必要があります。

カスタムディレクティブ

質問: Alexaの話が終わるまで、ディレクティブの送信を遅らせることはできますか?
いいえ、できません。ただし、Alexaが必要な話を終えるまでの時間とほぼ一致した時間にタイムアウトを設定し、イベントハンドラーを開始することはできます。タイムアウトイベントが起動したら、カスタムディレクティブを送信します。

制限

質問: ガジェットが送信できるカスタムイベント、またはガジェットが受信できるディレクティブのサイズまたはレートに制限はありますか?
はい。カスタムインターフェースに関連する制限は、制限を参照してください。