PlaybackController
The PlaybackController Interface exposes a series of events for navigating a playback queue with an on-client button press or GUI affordance, rather than through a speech request.
Version Changes
- The
ButtonCommandIssued
andToggleCommandIssued
events are available for use in v1.1 of the PlaybackController interface.
Capability Assertion
PlaybackController 1.1 may be implemented by the device on its own behalf, but not on behalf of any connected endpoints.
New AVS integrations must assert support through Alexa.Discovery, but Alexa will continue to support existing integrations using the Capabilities API.
{ "interface": "PlaybackController", "type": "AlexaInterface", "version": "1.1" }
PlayCommandIssued Event
The PlayCommandIssued
event must be sent when a user starts/resumes playback of a media item using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PlayCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
PauseCommandIssued Event
The PauseCommandIssued
event must be sent when a user pauses the playback of a media item using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PauseCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
NextCommandIssued Event
The NextCommandIssued
event must be sent when a user skips to the next media item in their playback queue using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "NextCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
PreviousCommandIssued Event
The PreviousCommandIssued
event must be sent when a user skips to the previous media item in their playback queue using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PreviousCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
ButtonCommandIssued Event
This event is used to notify Alexa of a unique on-client button press or GUI affordance, such as skip forward or skip backward. Skip duration is determined by the provider/skill, and each event is additive. For example, if a user presses the skip forward button three times in a row, and as a result three ButtonCommandIssued
events are sent to Alexa, the additive effect, if the skip is 30 seconds, will be 90 seconds.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "ButtonCommandIssued", "messageId": "{{STRING}}" }, "payload": { "name": "{{STRING}}" } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
Parameter | Description | Type |
---|---|---|
name | Specifies the command triggered by an on-client button press or GUI affordance. Accepted values: SKIPFORWARD , SKIPBACKWARD . |
string |
ToggleCommandIssued Event
This event is used to notify Alexa that an option or feature has been selected or deselected using an on-client button press or GUI affordance. Supported options include: shuffle, loop, repeat, thumbs up, and thumbs down.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "ToggleCommandIssued", "messageId": "{{STRING}}" }, "payload": { "name": "{{STRING}}" "action": "{{STRING}}" } } }
Context
This event requires the client to send the status of all client component states to Alexa. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
Parameter | Description | Type |
---|---|---|
name | Specifies the option/feature that is being toggled by an on-client button press or GUI affordance. Accepted values: SHUFFLE , LOOP , REPEAT , THUMBSUP , THUMBSDOWN . |
string |
action | Indicates if the toggle has been selected or deselected. Accepted values: SELECT , DESELECT . |
string |
The PlaybackController interface exposes a series of events for navigating a playback queue with an on-client button press or GUI affordance, rather than through a speech request.
Capability Assertion
PlaybackController 1.0 may be implemented by the device on its own behalf, but not on behalf of any connected endpoints.
New AVS integrations must assert support through Alexa.Discovery, but Alexa will continue to support existing integrations using the Capabilities API.
Sample Object
{ "type": "AlexaInterface", "interface": "PlaybackController", "version": "1.0" }
PlayCommandIssued Event
The PlayCommandIssued
event must be sent when a user starts/resumes playback of a media item using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PlayCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires your product to report the status of all client component states to Alexa in the context object. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
PauseCommandIssued Event
The PauseCommandIssued
event is sent when a button press or GUI affordance is used to pause playback of a media item. When PauseCommandIssued
is sent, the client must wait until a Stop directive is received before pausing or stopping the media item locally.
PlaybackStopped
event to Alexa. This will stop playback with no perceived latency for the user.Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PauseCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires your product to report the status of all client component states to Alexa in the context object. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
NextCommandIssued Event
The NextCommandIssued
event must be sent when an end user skips to the next media item in their playback queue using an on-client button press or GUI affordance. The next media item should play only when the client receives a Play directive from Alexa.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "NextCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires your product to report the status of all client component states to Alexa in the context object. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.
PreviousCommandIssued Event
The PreviousCommandIssued
event must be sent when a user skips to the previous media item in their playback queue using an on-client button press or GUI affordance.
Sample Message
{ "context": [ // This is an array of context objects that are used to communicate the // state of all client components to Alexa. See Context for details. ], "event": { "header": { "namespace": "PlaybackController", "name": "PreviousCommandIssued", "messageId": "{{STRING}}" }, "payload": { } } }
Context
This event requires your product to report the status of all client component states to Alexa in the context object. For additional information see Context.
Header Parameters
Parameter | Description | Type |
---|---|---|
messageId | A unique ID used to represent a specific message. | string |
Payload Parameters
An empty payload should be sent.