開発者コンソール

Alexa.SeekControllerインターフェース

Alexa.SeekControllerインターフェース

「アレクサ、5分早送りして」や「アレクサ、60秒早送りして」など、特定の時間だけ早送りや早戻しをするようにユーザーが発話すると、Alexa.SeekControllerインターフェースはAdjustSeekPositionディレクティブをアプリまたはLambdaに送信します。

SeekControllerインターフェースから送信されるディレクティブ(AdjustSeekPositionディレクティブなど)には、特定のオフセット時間の情報が含まれているため、PlaybackControllerインターフェースによる早送りや早戻しの操作とは異なることに注意してください。

AdjustSeekPositionディレクティブの発話

ユーザーが以下の発話を行うと、AlexaはAdjustSeekPositionディレクティブをアプリ(アプリのみの統合の場合)またはLambda(クラウド側の統合の場合)に送信します。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

Fast forward thirty seconds

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

Rewind forty seconds

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

Avance de trente secondes

Saute trente secondes

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

rebobina treinta segundos

retrocede diez segundos

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

Avance de trente secondes

Saute trente secondes

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

Rembobine de trente secondes

Retour en arrière de trente secondes

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

spul/spring [Duration] lang? vor/vorwärts

spring [Duration] vorwärts auf [AppName]

spul [DeviceBrand] vor

spring [Duration] auf [DeviceBrand] vor

überspring [Duration] auf [DeviceType]

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

spul zurück

spring zurück

spul/spring für? [Duration] lang? zurück

spring nach hinten für [Duration]

spul [AppName] zurück

spul [AppName] [Duration] zurück

spul [Duration] auf [AppName] zurück

spring rückwärts auf [AppName] für [Duration]

spul auf? [DeviceBrand] zurück

spul [DeviceBrand] [Duration] zurück

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

[Duration] के लिए आगे/forward जाओ [Episode] में fast forward Duration कर दें

[Duration] के लिये [Episode] forward कर दें[MediaType] में [Duration] आगे जाओ[AppName] पर [Duration] आगे जाओ

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

1. पीछे जाना दस seconds

2. rewind करो forty seconds

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

manda avanti l' episodio di trenta secondi

vai avanti di trenta secondi

manda avanti di trenta secondi

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

manda indietro di trenta secondi

manda indietro il video di trenta secondi

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

rebobinar/voltar [durastion]

リクエストされた時間だけメディアが早戻しされます。

機能 サンプル発話 想定されるレスポンス
早送り(時間指定)
認定に必須

adelanta treinta segundos

salta diez minutos en la película

リクエストされた時間だけメディアが早送りされます。

早戻し(時間指定)
認定に必須

rebobina treinta segundos

retrocede diez segundos

リクエストされた時間だけメディアが早戻しされます。

ほかのディレクティブの場合と同様に、Discoverディレクティブを受信したら、ビデオスキルでサポートしているSeekControllerディレクティブを指定する必要があります。

AdjustSeekPositionディレクティブの処理

AdjustSeekPositionディレクティブでは、deltaPositionMilondsというプロパティがpayloadに含まれます。deltaPositionMilondsには、正の値(ストリーム内を前方にシーク)または負の値(ストリーム内を後方にシーク)を指定できます。

たとえば、「5分スキップして」と発話した場合、deltaPositionMillisecondsの値は300000になり、「10分早戻しして」と発話した場合、deltaPositionMillisecondsの値は-600000になります。

つまり、負の値は早戻し、正の値は早送りを示します。指定されたオフセット分だけ先に進んで、ユーザーのリクエストを必ず満たしてください。

AdjustSeekPositionディレクティブの例

AdjustSeekPositionディレクティブの例を以下に示します。

EXTRA_DIRECTIVE_NAMESPACE: Alexa.SeekController
EXTRA_DIRECTIVE_NAME: AdjustSeekPosition
EXTRA_DIRECTIVE_PAYLOAD_VERSION: 3
EXTRA_DIRECTIVE_PAYLOAD: payload

payloadの内容は以下のとおりです。

{
    "payload": {
    "experience": {
        "mode": "VOICE_OPTIMIZED",
         },
        "deltaPositionMilliseconds": 300000
    }
}
{
    "directive": {
        "endpoint": {
            "cookie": {},
            "endpointId": "VSKTV",
            "scope": {
                "token": "<OAuth2ベアラートークン>",
                "type": "BearerToken"
            }
        },
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "4bef62cc-208d-4382-a43e-ce9e4825c1cb",
            "name": "AdjustSeekPosition",
            "namespace": "Alexa.SeekController",
            "payloadVersion": "3"
        },
        "payload": {
           "experience": {
              "mode": "VOICE_OPTIMIZED",
                  },
            "deltaPositionMilliseconds": 300000
        }
    }
}

ペイロードの定義

payloadのプロパティを次の表に示します。

ペイロードの説明
フィールド 説明 データ型
deltaPositionMilliseconds
(必須)
メディアプレーヤーでの再生時にシークする相対的時間(ミリ秒単位)です。現在のシーク位置から前方または後方にシークするために、正または負の整数値を使用できます。指定できる値は、-86400000から86400000までの整数値(-24~+24時間)です。シーク先の位置がメディアアイテムの視聴時間外になる場合は、deltaPositionMillisecondsが負の値であるか正の値であるかに応じて、それぞれ視聴時間の先頭または末尾に設定されます。

例: 86400000

整数
experience
(省略可能)
検索結果の表示を最適化するオブジェクトです。experienceオブジェクトを使用すると、ユーザーが検索に使用したデバイスに基づいて、検索結果の表示方法を変更できます。experienceオブジェクトとその値の詳細については、エクスペリエンスタイプを参照してください。

modeを含むオブジェクト

エクスペリエンスタイプ

experienceオブジェクトを使用すると、検索に使用されたデバイスに基づいて、検索結果の表示を最適化できます。たとえば、ユーザーがFire TVリモコンを使用して検索した場合、ユーザーはリモコンを使用して結果を閲覧できるため、experienceオブジェクトによって多数の検索結果が表示されます。一方、Fire TVとペアリングされたEchoを使用して検索リクエストが行われた場合は、experienceオブジェクトによって表示される結果の数と表示方法が制限され、ユーザーはリモコンを使用せずに結果を確認できます。

experienceオブジェクトは、検索結果の表示方法を決定するmodeオブジェクトで構成されています。modeオブジェクトは、 VOICE_OPTIMIZEDDEFAULTの2つの値を取ります。

  • VOICE_OPTIMIZED: 音声専用デバイス向けに最適化された表示方法です。リモコンを使用せずに音声で操作できる検索結果のリストが表示されます。

  • DEFAULT: 検索に使用されたデバイスに関係なく、すべての検索結果をリスト形式で表示する、デフォルトの表示方法です。

上位互換性を確保するため、modeで不明な値を受け取った場合は、失敗とするのではなく、DEFAULTにフォールバックするようにしてください。

レスポンスの例

アプリでディレクティブが正常に処理された場合、BroadcastReceiverクラスは、次のように、成功ステータスを含む成功のインテントを返送します。

if (response != null && sendResponse) {
  Intent success = new Intent().putExtra(VSKIntentConstants.EXTRA_DIRECTIVE_STATUS, didSucceed);
  try {
    response.send(context, 0, success);
  } catch(PendingIntent.CanceledException e) {
    // 応答に時間がかかりすぎているため、ログにエラーを出力します
  }
}

詳細については、手順7: BroadcastReceiverを追加するを参照してください。また、具体的なコードの例については、サンプルアプリAlexaDirectiveReceiverクラスを参照してください。

AdjustSeekPositionディレクティブを受け取ってリクエストを実行したら、位置の状態をミリ秒単位で示すレスポンスをAlexaに送り返します。次の例に示すように、payloadにはnameおよびvalueプロパティが含まれています。positionMillisecondsは、シーク先の絶対位置を-86400000から86400000までのミリ秒数で表します。

{
    "context": {
        "properties": []
    },
    "event": {
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "eab7fe6e-f65d-4dbb-aeea-5bae61439f4d",
            "name": "Response",
            "namespace": "Alexa",
            "payloadVersion": "3"
        },
        "payload": {}
    }
}

何らかの理由でユーザーのリクエストを完了できない場合は、エラーレスポンスを返す必要があります。詳細については、エラー処理を参照してください。

インターフェース機能に対するサポートの宣言

アプリでSeekControllerを受け取るには、機能を宣言する際にこのインターフェースのサポートを明示する必要があります。アプリのみの統合での機能の宣言の詳細については、以下を参照してください。

ビデオスキルがAlexa.SeekControllerインターフェースをサポートしていることを示すには、Alexa.Discoveryインターフェースを介して送信されたDiscoverディレクティブへのレスポンスで、そのサポートを明示する必要があります。詳細については、Discoveryインターフェースを参照してください。