Developer Console

Supported Capabilities with App-only Integration (VSK Fire TV)

Supported capabilities for app-only integrations are listed here.

Supported Capabilities Overview

When you report your apps capabilities (in Step 5: Report Your App's Static Capabilities or Step 6: Report Your App's Dynamic Capabilities, you describe the capabilities in a JSON object in a text file stored in res/raw in your Android project. These capabilities are referenced with code either in your manifest (for static capabilities) or in your DynamicCapabilityReporter class (for dynamic capabilities).

In your capabilities text files, the capabilities array can have a list of objects that each contain an interface, type, version, and supportOperations properties. More detail about the supported interfaces are provided in the following sections.

RemoteVideoPlayer Capabilities

Including Alexa.RemoteVideoPlayer as a capability indicates that your app can support directives from the RemoteVideoPlayer interface, which includes two possible operations: SearchAndPlay and SearchAndDisplayResults. These operations allow users to search and play video content. For example, users can say "Alexa, watch Breaking Bad" (SearchAndPlay) or "Alexa, search for Breaking Bad" (SearchAndDisplayResults). You can specify which directives you support.

Example:

{
  "type": "AlexaInterface",
  "interface": "Alexa.RemoteVideoPlayer",
  "version": "3.1",
  "configurations": {
    "operations": [
      "SearchAndPlay",
      "SearchAndDisplayResults"
    ],
    "catalogs": [
      {
        "type": "VIDEO_INGESTION_IDENTIFIER",
        "sourceId": "<INSERT PARTNER ID>"
      }]
  }
}

The operations array is an optional field to declare support for only certain operations, e.g., SearchAndPlay but not SearchAndDisplayResults.

Starting at version 3.1 of Alexa.RemoteVideoPlayer, a catalogs object must also be provided. The value for catalogs is an array containing objects with two properties: type and sourceId. The values are as follows:

Field Description Data Type
catalogs
optional
Specifies the catalog for your app. This array contains objects with two properties in each object: type and sourceId.

Array
type
optional
Set the value as VIDEO_INGESTION_IDENTIFIER.

String
sourceID
optional
Set the value to your Partner ID. The Parter ID is the Partner field in your CDF file, which you customized during catalog integration.

Example: ontv

String

Currently, Fire TV gets your catalog mapping through a backend process that maps your ASIN with your catalog (hence the step about submitting to Live App Testing (LAT)). However, in the future, Fire TV will get your catalog through the partner ID value you supply here.)

PlaybackController Capabilities

Including Alexa.PlaybackController as a capability indicates that your app can support directives from the Alexa.PlaybackController interface, which is used to play, stop, and navigate playback for audio or video content. For example, "Alexa, fast forward" or "Alexa, stop."

Note that the PlaybackController interface includes a list of operations array specified inside a configurations object. Allowed operations are Play, Pause, Stop, StartOver, Next, Previous, Rewind, FastForward.

Example:

{
  "type": "AlexaInterface",
  "interface": "Alexa.PlaybackController",
  "version": "3",
  "configurations": {
    "operations": [                
        "Pause",
        "Play",
        "Stop",
        "Resume",
        "Next",
        "Previous",
        "FastForward",
        "Rewind",
        "StartOver"
        ]
  }
}

Other interfaces, such as Alexa.SeekController interface, Alexa.ChannelController interface, and Alexa.KeypadController Interface are not yet supported with app-only integrations.

Also note that even when Alexa.ChannelController interface is supported, instead of implementing this interface, the recommended integration for live TV feeds is through the Android TV Input Framework, as described in Introduction to Linear Television.

SeekController Capabilities

Including Alexa.SeekController as a capability indicates that your skill can support directives from the Alexa.SeekController interface, which is used to allow the user to navigate to a specific position on the media timeline.

For example, "Alexa, fast-forward 60 seconds" or "Alexa, skip back 5 minutes" (as opposed to "Alexa, fast-forward" or "Alexa, rewind"). (If your app can only fast-forward or rewind a media item, not seek to another point in the timeline, implement the PlaybackController interface instead.)

Example:

{
  "type": "AlexaInterface",
  "interface": "Alexa.SeekController",
  "version": "3",
  "configurations": {
    "operations": [
      "AdjustSeekPosition"
    ]
  }
}

ChannelController Capabilities

Including Alexa.ChannelController as a capability indicates that your app can support directives from the Alexa.ChannelController interface, which is used to change or increment the channel for an entertainment device. For example, "Alexa, change the channel to PBS."

Example:

{
  "type": "AlexaInterface",
  "interface": "Alexa.ChannelController",
  "version": "3",
  "configurations": {
    "operations": [
      "ChangeChannel"
    ]
  }
}

Alexa.KeypadController Capabilities

Including Alexa.KeypadController indicates that your app can support directives from the Alexa.KeypadController Interface, which is used to scroll right or left, up or down, or select a widget in focus.

For example, "Alexa, scroll right." Follow the code example above to list the keys that your video skill supports. key values include the following: UP, DOWN, LEFT, RIGHT, SELECT, PAGE_UP, PAGE_DOWN, PAGE_LEFT, PAGE_RIGHT, INFO, MORE.

Example:

{
  "type": "AlexaInterface",
  "interface": "Alexa.KeypadController",
  "version": "3",
  "configurations": {
    "operations": [
      "SendKeystroke"
    ]
  }
}

The Alexa.KeypadController interface is the only interface that includes a keys property.

By default, Fire TV provides in-app scrolling and selection as described in In-App Voice Scrolling and Selection. If you don't indicate capability support for the KeypadController interface in your Alexa.Discovery response, the VSK falls back to the default in-app voice scrolling and selection functionality.

However, if you do indicate capability support for the KeypadController interface, then the default in-app voice scrolling and selection functionality is turned off. The only scrolling and selection that will occur is through your response to the KeyStroke directives that your app receives.

When you declare support for KeypadController, you list the keys that your video skill supports: UP, DOWN, LEFT, RIGHT, SELECT, PAGE_UP, PAGE_DOWN, PAGE_LEFT, PAGE_RIGHT, INFO, MORE. If you declare support for any key commands, Alexa assumes you are managing actions for all of the key commands. In short, you cannot declare support for some key commands but not others. As an example, if you don't declare UP, Alexa will still send keystroke payloads with UP values. The default in-app voice scrolling and selection won't kick in to compensate for the unsupported UP functionality.


Last updated: Oct 29, 2020