Alexa.SeekController接口 (VSK Fire TV)
当用户说出要快进或倒回特定时长时(例如“Alexa, fast forward 5 minutes”(Alexa,快进5分钟)或“Alexa, skip ahead 60 seconds”(Alexa,向前跳过60秒)),Alexa.SeekController
接口会向您的应用或Lambda发送AdjustSeekPosition
指令。
请注意,SeekController
接口(例如AdjustSeekPosition
指令)发送的指令与PlaybackController
接口中的快进和倒回操作不同,因为它们包含偏移量的具体时长。
SeekController
。媒体会话提供了相同的功能,延迟更少、客户体验更一致。有关详细信息,请参阅步骤2: 与MediaSession集成。有关AdjustSeekPosition指令的表述
当用户说出以下表述时,Alexa会向您的应用(用于仅限应用的集成)或您的Lambda(用于云端集成)发送AdjustSeekPosition
指令。
功能 | 表述示例 | 预期回应 |
---|---|---|
快进 [持续时间] 需要认证 |
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 |
将媒体倒回请求的持续时间。 |
与其他指令一样,当您收到Discovery指令时,必须指定您的视频技能支持的SeekController指令。
处理AdjustSeekPosition指令
AdjustSeekPosition
指令在payload
中包含一个名为deltaPositionMilliseconds
的属性。deltaPositionMilliseconds
的值可以是正数(向前搜索)或负数(在流中向后移动)。
例如,“Skip 5 minutes”(跳过5分钟)生成deltaPositionMilliseconds
值300000
,而“Rewind 10 minutes”(倒回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": "<an OAuth2 bearer token>",
"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小时)之间的任何整数值。如果所需位置超出媒体项目的持续时间,则应将其设置为开头或结尾,取决于deltaPositionMilliseconds 具体为负数还是正数。
示例: |
整数 |
experience 可选 |
优化搜索结果显示的对象。使用experience 对象,您可以根据客户用来搜索的设备更改搜索结果。有关experience 对象及其值的更多详细信息,请参阅体验类型。
|
包含mode 的对象 |
体验类型
使用experience
对象根据用于执行搜索的设备优化搜索结果的显示。例如,如果客户通过Fire TV遥控器进行搜索,则experience
对象会显示大量的搜索结果,客户可以使用遥控器浏览这些结果。但是,如果搜索请求来自与Fire TV配对的Echo,则experience
对象会限制显示的结果数量及其显示方式,从而让客户可以无需使用遥控器即可查看结果。
experience
对象由一个mode
对象组成,后者决定如何显示搜索结果。mode
对象采用两个值: VOICE_OPTIMIZED
和DEFAULT
。
-
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
指令时指明支持该接口。Alexa.Discovery
中提供了更多详细信息。
Last updated: 2021年6月9日