Alexa.KeypadControllerインターフェース



Alexa.KeypadControllerインターフェース

Alexa.KeypadController機能インターフェースを使うと、画面ナビゲーションで音声を有効にできます。スクロール、方向パッド(Dパッド)、画面要素の選択、アクティブな要素の詳細表示などを音声で操作できます。音声ナビゲーションは、スマートテレビのホーム画面、ライブ配信サービス、ストリーミングアプリに対して有効にできます。

KeypadControllerインターフェースでサポートされているロケールについては、機能インターフェースの一覧を参照してください。

発話

Alexa.KeypadControllerインターフェースを使用する場合、音声対話モデルは既にビルドされています。ユーザーが次のような発話をしたら、Alexaがそれに対応するディレクティブをスキルに送信します。

以下に、ユーザーの発話の例を示します。

Alexa, scroll right.
Alexa, page down.
Alexa, go right.
Alexa, move down.
Alexa, select this.
Alexa, choose this.
Alexa, show details.
Alexa, show info.
Alexa, see more information.

シナリオ

Alexa.KeypadControllerを使う次のようなシナリオを考えてみましょう。

ホーム画面で音声を有効にする

スマートテレビのメーカーであれば、KeypadControllerを使ってホーム画面で音声を有効にできます。ユーザーはテレビでサポートされるアプリのリストを見ているときに、音声で上下左右へスクロールしたり、アプリを選んだりといった操作ができます。このシナリオでは、Alexa.PowerControllerインターフェースとAlexa.Launcherインターフェースを使っています。以下は、このシナリオのユーザー発話の例です。

Alexa, turn on the TV.
Alexa, scroll right.
Alexa, launch [app].

番組表で音声を有効にする

ライブ配信サービスの場合、KeypadControllerを使って番組表で音声を有効にできます。ユーザーは、番組表の上下左右へのスクロールや番組の選択を音声で操作できます。このシナリオでは、Alexa.PowerControllerインターフェースとAlexa.Launcherインターフェースを使っています。以下は、このシナリオのユーザー発話の例です。

Alexa, turn on [name of live TV provider].
Alexa, go to cable guide.
Alexa, scroll down.
Alexa, select this.
Alexa, go home.

アプリで音声を有効にする

アプリ開発者の場合、Alexa.KeypadControllerを使ってアプリで音声を有効にし、ユーザーが上下左右へのスクロールを音声で操作できるようにします。ほかにも、画面に表示されている要素の詳細ページを音声で開き、詳細を確認することもできます。このシナリオでは、Alexa.LauncherインターフェースとAlexa.RemoteVideoPlayerインターフェースも使い、コメディ映画を表示させています。以下は、このシナリオのユーザー発話の例です。

Alexa, launch [app].
Alexa, show me comedies.
Alexa, scroll right.
Alexa, show me details.

プロパティとオブジェクト

keystrokeプロパティ

Alexa.KeypadControllerインターフェースは、keystrokeプロパティをプライマリプロパティとして使用します。有効な値は次のとおりです。

keystrokeの種類 keystrokeの値 説明
方向パッド
(Dパッド)
UPDOWNLEFTRIGHTSELECT 上下左右に一単位分移動したり、次の画面要素に移動したり、アクティブな画面要素や項目を選択したりします。
スクロール PAGE_UPPAGE_DOWNPAGE_LEFTPAGE_RIGHT 指定した方向へスクロールします。
情報 INFOMORE 現在アクティブな画面要素についての詳細情報を表示します。たとえば、画面に表示されていないコンテンツを表示させたり、詳細ページに移動したりできます。

検出

Alexa.KeypadControllerをサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。

KeypadControllerインターフェースには、keysアトリビュートを含め、サポートするキー操作を列挙します。

検出の応答例

以下は、Alexa.KeypadControllerをサポートするエンドポイントへのDiscover.Responseメッセージの例です。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints":[
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "<エンドポイントのメーカー名>",
          "description": "<Alexaアプリに表示される説明>",
          "friendlyName": "<Alexaアプリに表示されているデバイス名>",
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.KeypadController",
              "version": "3",
              "keys": [
                "INFO", "MORE", "SELECT",
                "UP", "DOWN", "LEFT", "RIGHT",
                "PAGE_UP", "PAGE_DOWN", "PAGE_LEFT", "PAGE_RIGHT"
              ]
            }
          ]
        }
      ]
    }
  }
}

ディレクティブ

SendKeystrokeディレクティブ

ユーザーがコンテンツをスクロールできるようSendKeystrokeディレクティブがサポートされています。

SendKeystrokeディレクティブペイロードの詳細

フィールド 説明
keystroke ユーザーがリクエストしたkeystrokeです。 文字列

SendKeystrokeディレクティブの例

{
  "directive": {
    "header": {
      "namespace": "Alexa.KeypadController",
      "name": "SendKeystroke",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>",
      "cookie": {}
    },
    "payload": {
      "keystroke": "SELECT"
    }
  }
}

SendKeystroke応答イベント

SendKeystrokeディレクティブを正しく処理したら、Alexa.Responseイベントを使用して応答します。応答は同期または非同期のどちらでも可能です。非同期で応答する場合、相関トークンと、認可トークンを含めたスコープを含めます。

SendKeystroke応答イベントの例

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  }
}

SendKeystrokeディレクティブのエラー処理

SendKeystrokeディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。