探索指令 (VSK Echo Show)
亚马逊通过探索API发送Discover指令,以确定您的视频技能支持哪些功能。您对探索指令的响应决定了Alexa将向您的Lambda函数发送哪些类型的指令。
例如,如果您表明支持频道更改,Alexa将发送GetPlayableItems指令,这些指令采用type": "Channel"有效负载,并在用户说出Change the channel to PBS(将频道更改为PBS)时发出。但是,如果您不指明此项支持,Alexa不会发送指令。
探索指令
在用户将Alexa技能与其亚马逊账户关联后,Alexa会发送探索指令;之后,Alexa会定期发送探索指令以更新任何发现的设备。
当您收到Discover指令时,必须指定您的技能支持的指令。您可以通过supportedOperations数组表明支持的操作。
(请注意,在Fire TV实现中,在初始化Alexa客户端库时,您还会在Android应用中表明支持的功能。对于多模式实现,您只需要在Lambda函数中表明支持即可。)
探索示例
以下是Alexa发送的Discover指令示例。
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "a1dccea0-fe52-45ca-9ed9-a03a45be6fb6"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "1bdaa2eb-4aa3-d0dc-fb10-7a5513981cf8"
}
}
}
}
有效负载描述
下表描述了payload字段。
| 字段 | 描述 | 数据类型 |
|---|---|---|
scope必需 |
请求范围。包括token和type属性。
|
对象 |
token必需 |
OAuth2持有者令牌
示例: |
字符串 |
type必需 |
范围的类型。当前支持的值是 BearerToken。
示例: |
枚举 |
响应示例
以下是对Discover指令的响应示例 (Discover.Response)。响应表明支持哪些操作。
{
"event": {
"header" : {
"messageId" : "directive.header.messageId",
"name" : "Discover.Response",
"namespace": "Alexa.Discovery",
"payloadVersion": "3"
},
"payload": {
"endpoints": [{
"endpointId": "ALEXA_VOICE_SERVICE_EXTERNAL_MEDIA_PLAYER_VIDEO_PROVIDER",
"endpointTypeId": "TEST_VSK_MM",
"manufacturerName": "TEST_VSK_MM",
"friendlyName": "TEST_VSK_MM",
"description": "TEST_VSK_MM",
"displayCategories": ["APPLICATION"],
"cookie": {},
"capabilities": [{
"type": "AlexaInterface",
"interface": "Alexa.RemoteVideoPlayer",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.PlaybackController",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.SeekController",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.ChannelController",
"version": "1.0"
},
{
"type": "AlexaInterface",
"interface": "Alexa.MultiModalLandingPage",
"version": "1.0"
}
]
}]
}
}
};
有效负载描述
| 字段 | 描述 | 数据类型 |
|---|---|---|
endpoints必需 |
一组终端节点对象,代表与客户的设备云账户关联的设备。 | 对象 |
capabilities必需 |
您的技能对终端节点支持的功能接口。有关更多详细信息,请参阅下面的功能对象。 | 功能对象数组 |
interface必需 |
描述设备操作的Alexa.Interface的限定名称。
示例: |
字符串 |
type必需 |
范围的类型。当前支持的值是 BearerToken。
示例: |
枚举 |
version可选 |
表示此终端节点支持的接口版本。
示例: |
字符串 |
cookie可选 |
字符串名称/值对,提供有关设备的其他信息,供技能适配器使用。此属性的内容不能超过5000字节。(亚马逊不使用此字段,客户也不会看到您输入的值。但是,您输入的值不能与视频技能名称相同。)
示例: |
对象 |
extraDetail可选 |
cookie对象的密钥。
示例: |
|
description必需 |
设备的描述。如果可能,描述应当包含您的公司名称或实现。此值最多可包含128个字符。(亚马逊不使用此字段,客户也不会看到您输入的值。但是,您输入的值不能与视频技能名称相同。)
示例: |
字符串 |
endpointId必需 |
终端节点的标识符。例如,VSKTV。注意: 您输入的值不能与视频技能名称相同。还建议您在该值前加上TEST_或PROD_,以确保它与您的视频技能名称不同。
示例: |
字符串 |
friendlyName必需 |
此名称标识了视频技能的实现类型。此值最多可包含128个字符,不应包含特殊字符或标点符号。注意: 请勿输入与视频技能名称相同的值。例如,如果您的视频技能名称是“ACME Media”,则不要再输入“ACME Media”作为易记型名称。这样做会导致错误。在名称前加上“TEST_ACME_Media”或“PROD_ACME_Media”之类的内容。
示例: |
字符串 |
manufacturerName必需 |
设备制造商的名称。此值最多可包含128个字符。(亚马逊不使用此字段,客户也不会看到您输入的值。但是,您输入的值不能与视频技能名称相同。)
示例: |
字符串 |
功能对象
capabilities数组可以有一个对象列表,每个对象都包含一个interface、type、version和supportOperations属性。例如,capabilities数组中声明支持播放功能的项目可能如下所示:
{
"type": "AlexaInterface",
"interface": "Alexa.PlaybackController",
"version": "3",
"supportedOperations" : ["Play", "Pause", "Stop", "StartOver", "Next", "Previous",
"Rewind", "FastForward"]
}
Alexa.PlaybackController接口是包含supportedOperations属性的唯一接口。
下表描述了支持的视频技能功能和相关指令:
| 功能 | 描述 |
|---|---|
Alexa.RemoteVideoPlayer |
您的技能可以支持SearchAndPlay和SearchAndDisplayResults指令。这些指令让用户可以搜索和播放视频内容。例如,“搜索Breaking Bad”或“Alexa,观看Breaking Bad”。 |
Alexa.PlaybackController |
您的技能可以支持播放控制指令,这些指令用于播放、停止和导航音频或视频内容的播放。例如 “Alexa, fast forward”(Alexa,快进)或 “Alexa, stop”(Alexa,停止)。 请注意,Alexa.PlaybackController接口还允许supportedOperations属性,如上所示。允许的属性包括Play、Pause、Stop、StartOver、Next、Previous、Rewind、FastForward。 |
Alexa.SeekController |
您的技能可以支持搜索控制指令,允许用户通过“Alexa, fast-forward 60 seconds”(Alexa,快进60秒)或“Alexa, skip back 5 minutes”(Alexa,向后跳过5分钟)(而不是“Alexa, fast-forward”(Alexa,快进)或“Alexa, rewind”(Alexa,快退))等请求导航到媒体时间线上的特定位置(如果您的应用只能快进或快退媒体项目,不能搜索到时间轴的另一点,则改为实现Alexa.PlaybackController接口。) |
Alexa.ChannelController |
您的视频技能可以支持ChangeChannel指令,这些指令用于更改或增加娱乐设备的频道。例如,“Alexa, change the channel to PBS”(Alexa,将频道更改为PBS)。 |
Alexa.MultiModalLandingPage |
您的视频技能可以支持登陆页面填充。例如,当用户说“Video Home”(视频主页)然后点击您的视频技能时,您的技能会显示视频列表... |

