开发者控制台

Alexa.SeekController接口 (VSK Fire TV)

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接口中的快进和倒回操作不同,因为它们包含偏移量的具体时长。

有关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分钟)生成deltaPositionMilliseconds300000,而“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
必需
在媒体播放器上播放时要搜索的相对毫秒数。正整数值或负整数值可用于相对于当前搜索位置向前或向后寻找。接受的值包括介于-8640000086400000(-/+ 24小时)之间的任何整数值。如果所需位置超出媒体项目的持续时间,则应将其设置为开头或结尾,取决于deltaPositionMilliseconds具体为负数还是正数。

示例: 86400000

整数
experience
可选
优化搜索结果显示的对象。使用experience对象,您可以根据客户用来搜索的设备更改搜索结果。有关experience对象及其值的更多详细信息,请参阅体验类型

包含mode的对象

体验类型

使用experience对象根据用于执行搜索的设备优化搜索结果的显示。例如,如果客户通过Fire TV遥控器进行搜索,则experience对象会显示大量的搜索结果,客户可以使用遥控器浏览这些结果。但是,如果搜索请求来自与Fire TV配对的Echo,则experience对象会限制显示的结果数量及其显示方式,从而让客户可以无需使用遥控器即可查看结果。

experience对象由一个mode对象组成,后者决定如何显示搜索结果。mode对象采用两个值: VOICE_OPTIMIZEDDEFAULT

  • 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包含namevalue属性,如以下示例所示。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日