LocalMediaSource¶
Outgoing Messages¶
PlayControl¶
Occurs during playback control via voice interaction or PlaybackController interface.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "PlayControl"
}
},
"payload": {
"source": {{Source}},
"controlType": {{PlayControlType}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
controlType | PlayControlType | Yes | Playback control type being invoked. |
Seek¶
Called when the user invokes media seek via speech.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "Seek"
}
},
"payload": {
"source": {{Source}},
"offset": {{Int}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
offset | Int | Yes | Offset position within media item, in milliseconds. |
Play¶
Called when the user calls play with a content selection type.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "Play"
}
},
"payload": {
"source": {{Source}},
"contentSelectorType": {{ContentSelector}},
"payload": {{String}},
"sessionId": {{String}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
contentSelectorType | ContentSelector | Yes | Content selection type. | |
payload | String | Yes | Content selector payload. | |
sessionId | String | Yes | Universally unique identifier (UUID) generated according to the RFC 4122 specification. Since Alexa is starting the session here, use this session Id for further events and errors. |
GetState¶
Must provide the local media source @PlaybackState, and @SessionState information to maintain cloud sync.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "GetState"
}
},
"payload": {
"source": {{Source}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. |
AdjustSeek¶
Called when the user invokes media seek adjustment via speech.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "AdjustSeek"
}
},
"payload": {
"source": {{Source}},
"deltaOffset": {{Int}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
deltaOffset | Int | Yes | Change in offset position within media item, in milliseconds. |
MutedStateChanged¶
Notifies the platform implementation to apply a muted state has changed for the output channel.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "MutedStateChanged"
}
},
"payload": {
"source": {{Source}},
"state": {{MutedState}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
state | MutedState | Yes | The muted state to apply to the output channel. |
VolumeChanged¶
Notifies the platform implementation to set the volume of the output channel. The volume value should be scaled to fit the needs of the platform.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "VolumeChanged"
}
},
"payload": {
"source": {{Source}},
"volume": {{Float}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
volume | Float | Yes | The volume to set on the output channel. |
Incoming Messages¶
PlayerEvent¶
Should be called on a local media source player event. This will sync the context with AVS.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "PlayerEvent"
}
},
"payload": {
"source": {{Source}},
"eventName": {{String}},
"sessionId": {{String}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
eventName | String | Yes | Canonical event name. | |
sessionId | String | No | Universally unique identifier (UUID) generated according to the RFC 4122 specification. If playback session is started because of 'Play', use the same session Id. If the session is started due to any other reason, generate unique UUID and use it as a session ID until session is not ended. |
SetFocus¶
Should be called on local media source player events. This will switch the media focus to that context.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "SetFocus"
}
},
"payload": {
"source": {{Source}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. |
PlayerError¶
Should be called on a local media source player error.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Publish",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "PlayerError"
}
},
"payload": {
"source": {{Source}},
"errorName": {{String}},
"code": {{Int}},
"description": {{String}},
"fatal": {{Bool}},
"sessionId": {{String}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
source | Source | Yes | LocalMediaSource source type. | |
errorName | String | Yes | The name of the error. | |
code | Int | Yes | The error code. | |
description | String | Yes | The detailed error description. | |
fatal | Bool | Yes | true if the error is fatal. | |
sessionId | String | No | Universally unique identifier (UUID) generated according to the RFC 4122 specification. If playback session is started because of 'Play', use the same session Id. If the session is started due to any other reason, generate unique UUID and use it as a session ID until session is not ended. |
GetStateReply¶
Reply for GetState message.
JSON Structure¶
{
"header": {
"version": "4.0",
"messageType": "Reply",
"id": {{String}},
"messageDescription": {
"topic": "LocalMediaSource",
"action": "GetState",
"replyToId": {{String}}
}
},
"payload": {
"state": {{LocalMediaSourceState}}
}
}
Payload¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
state | LocalMediaSourceState | Yes | state description. |
Type Definitions¶
LocalMediaSourceState¶
JSON Structure¶
{
"sessionState": {{SessionState}},
"playbackState": {{PlaybackState}}
}
Properties¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
sessionState | SessionState | Yes | Variable to hold the session state. | |
playbackState | PlaybackState | Yes | Variable to hold the playback state. |
PlaybackState¶
JSON Structure¶
{
"state": {{String}},
"supportedOperations": [{{SupportedPlaybackOperation}}],
"trackOffset": {{Int}},
"shuffleEnabled": {{Bool}},
"repeatEnabled": {{Bool}},
"favorites": {{Favorites}},
"type": {{String}},
"playbackSource": {{String}},
"playbackSourceId": {{String}},
"trackName": {{String}},
"trackId": {{String}},
"trackNumber": {{String}},
"artistName": {{String}},
"artistId": {{String}},
"albumName": {{String}},
"albumId": {{String}},
"tinyURL": {{String}},
"smallURL": {{String}},
"mediumURL": {{String}},
"largeURL": {{String}},
"coverId": {{String}},
"mediaProvider": {{String}},
"mediaType": {{MediaType}},
"duration": {{Int}}
}
Properties¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
state | String | Yes | The state of the default player - IDLE/STOPPED/PAUSED/PLAYING/FINISHED/FAST_FORWARDING/REWINDING/BUFFER_UNDERRUN. | |
supportedOperations | SupportedPlaybackOperation[] | Yes | The set of states the default player can move into from its current state. | |
trackOffset | Int | Yes | The offset of the track in milliseconds. | |
shuffleEnabled | Bool | Yes | Bool to identify if shuffling is enabled. | |
repeatEnabled | Bool | Yes | Bool to identify if looping of songs is enabled. | |
favorites | Favorites | Yes | The favorite status {"FAVORITED"/"UNFAVORITED"/"NOT_RATED"}. | |
type | String | Yes | The type of the media item. For now hard-coded to ExternalMediaAdapterMusicItem. | |
playbackSource | String | Yes | The display name for current playback context, e.g. playlist name. | |
playbackSourceId | String | Yes | An arbitrary identifier for current playback context as per the music provider, e.g. a URI that can be saved as a preset or queried to Music Service Provider services for additional info. | |
trackName | String | Yes | The display name for the currently playing trackname of the track. | |
trackId | String | Yes | The arbitrary identifier for currently playing trackid of the track as per the music provider. | |
trackNumber | String | Yes | The display value for the number or abstract position of the currently playing track in the album or context trackNumber of the track. | |
artistName | String | Yes | The display name for the currently playing artist. | |
artistId | String | Yes | An arbitrary identifier for currently playing artist as per the music provider, e.g. a URI that can be queried to MSP services for additional info. | |
albumName | String | Yes | The display name of the currently playing album. | |
albumId | String | Yes | Arbitrary identifier for currently playing album specific to the music provider, e.g. a URI that can be queried to MSP services for additional info. | |
tinyURL | String | Yes | The URL for tiny cover art image resource} . | |
smallURL | String | Yes | The URL for small cover art image resource} . | |
mediumURL | String | Yes | The URL for medium cover art image resource} . | |
largeURL | String | Yes | The URL for large cover art image resource} . | |
coverId | String | Yes | The Arbitrary identifier for cover art image resource specific to the music provider, for retrieval from an MSP API. | |
mediaProvider | String | Yes | Music Service Provider name for the currently playing media item; distinct from the application identity although the two may be the same. | |
mediaType | MediaType | Yes | The Media type enum value from {TRACK, PODCAST, STATION, AD, SAMPLE, OTHER} type of the media. | |
duration | Int | Yes | Media item duration in milliseconds. |
SessionState¶
JSON Structure¶
{
"endpointId": {{String}},
"loggedIn": {{Bool}},
"userName": {{String}},
"isGuest": {{Bool}},
"launched": {{Bool}},
"active": {{Bool}},
"accessToken": {{String}},
"tokenRefreshInterval": {{int64}},
"supportedContentSelectors": [{{ContentSelector}}],
"spiVersion": {{String}}
}
Properties¶
Property | Type | Required | Description | Example |
---|---|---|---|---|
endpointId | String | Yes | The unique device endpoint. | |
loggedIn | Bool | Yes | Flag that identifies if a user is currently logged in or not. | |
userName | String | Yes | The userName of the user currently logged in via a Login directive from the AVS. | |
isGuest | Bool | Yes | Flag that identifies if the user currently logged in is a guest or not. | |
launched | Bool | Yes | Flag that identifies if an application has been launched or not. | |
active | Bool | Yes | Flag that identifies if the application is currently active or not. This could mean different things for different applications. | |
accessToken | String | Yes | The accessToken used to login a user. The access token may also be used as a bearer token if the adapter makes an authenticated Web API to the music provider. | |
tokenRefreshInterval | int64 | Yes | The validity period of the token in milliseconds. | |
supportedContentSelectors | ContentSelector[] | Yes | Array of content selector types supported by the player. | |
spiVersion | String | Yes | The only spiVersion that currently exists is '1.0'. |
Enums¶
Source¶
Values¶
Value | Description |
---|---|
"BLUETOOTH" | bluetooth source. |
"USB" | USB source. |
"FM_RADIO" | FM radio source. |
"AM_RADIO" | AM radio source. |
"SATELLITE_RADIO" | satellite radio source. |
"LINE_IN" | audio line source. |
"COMPACT_DISC" | CD player source. |
"SIRIUS_XM" | SIRIUS XM source. |
"DAB" | DAB source. |
"DEFAULT" | DEFAULT source. |
ContentSelector¶
Values¶
Value | Description |
---|---|
"FREQUENCY" | radio station selection. |
"CHANNEL" | radio channel selection. |
"PRESET" | preset selection. |