Alexa.VideoRecorder Interface (VSK Fire TV)
The Alexa.VideoRecorder
interface describes messages used to find and schedule a recording for a specified video item, to cancel a scheduled recording, or inquire about the recording space left on a DVR. To record the content that is currently playing, implement the Alexa.RecordController interface instead.
For the list of locales that are supported for the VideoRecorder
interface, see List of Capability Interfaces and Supported Locales.
Alexa.VideoRecorder
interface is available for cloudside integration only.Directives
The directives for this interface each include an entity object that specifies the content to find and record. For more information, see Entity Types for Video Content.
SearchAndRecord
Request to find and record a specified video item, given a set of search criteria. When a SearchAndRecord
directive is successfully handled, respond with a SearchAndRecord.Response event.
User: Alexa, record the new episode of the Grand Tour next week.
Example: Record the new episode of The Grand Tour next week
{
"directive": {
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
},
"endpointId": "endpoint-001",
"cookie": {}
},
},
"header": {
"correlationToken": "dFMb0z+PgpgdDmluhJ1LdjCc8ptlAKulUj90jSqg==",
"messageId": "708758c5-d1ca-4022-85ba-517f64b07a6c",
"name": "SearchAndRecord",
"namespace": "Alexa.VideoRecorder",
"payloadVersion": "3"
},
"payload": {
"entities": [
{
"externalIds": {
"imdb": "tt5712554"
},
"type": "Video",
"value": "The Grand Tour"
}
],
"quantifier": {
"name": "NEW"
},
"timeWindow": {
"end": "2017-09-07T23:59:00.00Z",
"start": "2017-09-01T00:00:00.00Z"
}
}
}
}
Payload details
Field | Description | Type | Required |
---|---|---|---|
entities |
An array of entity objects associated with this request | Array of entity objects | Yes |
quantifier |
A quantifier for the type of recording; whether to create a new recording, or to record the next or all occurrences of the items with the specified title. | Object | No |
quantifier.name |
The quantifier specified by the customer; possible values ALL , NEW , NEXT |
String, see Quantifier values | No |
timeWindow |
A time window object representing a time associated with this request | Object | No |
timeWindow.start |
The start time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
timeWindow.end |
The end time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
Additional example: Record PBS at 5:00 PM
{
"directive": {
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
},
"endpointId": "endpoint-001",
"cookie": {}
},
},
"header": {
"correlationToken": "dFMb0z+PgpgdDmluhJ1LdjCc8ptlAKulUj90jSqg==",
"messageId": "1b391648-5346-4bf5-9444-6f14e749b4e3",
"name": "SearchAndRecord",
"namespace": "Alexa.VideoRecorder",
"payloadVersion": "3"
},
"payload": {
"entities": [
{
"entityMetadata": {
"channelCallSign": "KBTC",
"channelNumber": 123
},
"externalIds": {
"imdb": "tt4574334"
},
"type": "Channel",
"value": "PBS"
}
],
"timeWindow": {
"start": "2016-09-01T00:17:00.00Z"
}
}
}
}
CancelRecording
Request to cancel a scheduled recording for a specified title. This request should result in the cancellation of the specified recording, or a title that best matches the requested entity.
User: Alexa, stop recording title.
User: Alexa, cancel recording of next week's episode of The Grand Tour.
Example: Cancel recording of next week's episode of The Grand Tour
{
"directive": {
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
},
"endpointId": "endpoint-001",
"cookie": {}
},
},
"header": {
"correlationToken": "dFMb0z+PgpgdDmluhJ1LdjCc8ptlAKulUj90jSqg==",
"messageId": "d4a5a7a6-a45a-4e3f-b55a-f583c822384b",
"name": "CancelRecording",
"namespace": "Alexa.VideoRecorder",
"payloadVersion": "3"
},
"payload": {
"entities": [
{
"externalIds": {
"imdb": "tt5712554"
},
"name": "The Grand Tour",
"type": "Video"
}
],
"timeWindow": {
"end": "2017-09-07T23:59:00+00:00",
"start": "2017-09-01T00:00:00+00:00"
}
}
}
}
Payload details
Field | Description | Type | Required |
---|---|---|---|
entities |
An array of entity objects associated with this request | Array of entity objects | Yes |
quantifier |
A quantifier for the cancellation request; whether it's the next item or all items. | Object | No |
quantifier.name |
Name of the quantifier such as the "next item" as specified by the customer. | String, see Quantifier values | No |
timeWindow |
A time window object representing a time associated with this request | Object | No |
timeWindow.start |
The start time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
timeWindow.end |
The end time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
DeleteRecording
Request to delete a recorded item. This request should result in the deletion of the specified title, or a title that best matches the requested entity.
User: Alexa, delete the recording of The Grand Tour.
Example: Delete the recording of The Grand Tour
{
"directive": {
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
},
"endpointId": "endpoint-001",
"cookie": {}
},
},
"header": {
"correlationToken": "dFMb0z+PgpgdDmluhJ1LdjCc8ptlAKulUj90jSqg==",
"messageId": "97b8ce2a-87f6-4c89-9b28-00d716e337ff",
"name": "DeleteRecording",
"namespace": "Alexa.VideoRecorder",
"payloadVersion": "3"
},
"payload": {
"entities": [
{
"externalIds": {
"imdb": "tt4574334"
},
"name": "The Grand Tour",
"type": "TV_Show"
}
],
"quantifier": {
"name": "ALL"
},
"timeWindow": {
"end": "2016-09-07T23:59:00.00Z",
"start": "2016-09-01T00:00:00.00Z"
}
}
}
}
Payload details
Field | Description | Type | Required |
---|---|---|---|
entities |
An array of entity objects associated with this request | array of entity objects objects | Yes |
quantifier |
A quantifier for the deletion request; whether all or just the watched items should be deleted for the specified title. | Object | No |
quantifier.name |
Name of the quantifier specified by the customer. | String enumeration value, see Quantifier values | No |
timeWindow |
A time window object representing a time associated with this request | Object | No |
timeWindow.start |
The start time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
timeWindow.end |
The end time for the time window. | A string that uses the RFC 3339 profile of the ISO 8601 format, YYYY-MM-DDThh:mm:ssZ. | No |
Quantifier name values
The following table describes the possible quantifier name values.
Value | Description |
---|---|
ALL |
All content matching the specified entity. |
NEXT |
The content that matches the entity that airs closest to time specified, or the closest after the time specified. |
NEW |
Any content airing for the first time that matched the specified entity. |
WATCHED |
All content matching the entity that has already been watched. |
Properties and Events
Reportable Properties
Property Name | Type | Description |
---|---|---|
isExtendedRecordingGUIShown |
boolean | Indicates the type of graphical user interface shown to the user. true to indicate an extended recording GUI is shown, false if the extended recording GUI isn't shown. |
storageLevel |
integer | The storage used on the recording device as a percentage. |
SearchAndRecord.Response
When a request to make a recording is successfully handled, you should respond with a SearchAndRecord.Response
event. Specify the recording status in the payload of the message and the isExtendedRecordingGUIShown
and storageLevel
property values in the context of the message.
Example SearchAndRecord.Response
{
"context": {
"properties": [
{
"name": "isExtendedRecordingGUIShown",
"namespace": "Alexa.VideoRecorder",
"timeOfSample": "2017-05-06T16:20:50.52Z",
"uncertaintyInMilliseconds": 0,
"value": false
},
{
"name": "storageLevel",
"namespace": "Alexa.VideoRecorder",
"timeOfSample": "2017-05-06T16:20:50.52Z",
"uncertaintyInMilliseconds": 0,
"value": 75
}
]
},
"event": {
"header": {
"correlationToken": "dFMb0z+PgpgdDmluhJ1LdjCc8ptlAKulUj90jSqg==",
"messageId": "aa6fd930-ce42-498d-a225-3fb94df83853",
"name": "Alexa.SearchAndRecordResponse",
"namespace": "Alexa.VideoRecorder",
"payloadVersion": "3"
},
"payload": {
"recordingStatus": "SCHEDULED"
}
}
}
Field | Description | Type | Required |
---|---|---|---|
recordingStatus |
A string enumeration value that indicates the status of the recording. | String. One of the following values: SCHEDULED, STARTED | Yes |
ErrorResponse
You should reply with an error if you cannot complete the customer request for some reason. See the Error Handling documentation for more information.
Last updated: Nov 11, 2021