开发者控制台

在Fire TV上使用视频技能工具包 (VSK) 进行应用内搜索

Waqar Aziz Jun 18, 2021
Share:
How to VSK
Blog_Header_Post_Img

适用于Fire TV的视频技能工具包 (VSK) 让客户可以更加方便地在应用内发现、搜寻内容并与之互动,而无需使用遥控器。将您的应用与VSK集成的先决条件是首先引入您的目录,然后与Fire TV的通用搜索和浏览集成。目录集成目前仅适用于特定开发者。VSK与目录集成配合使用,可在Fire TV上以多种方式显示您的内容。

VSK让您可以用语音启用应用中的体验。客户可以说“Alexa, watch Batman”(Alexa,观看蝙蝠侠)(SearchAndPlay),或者说“Alexa, find Batman”(Alexa,搜寻蝙蝠侠)(SearchAndDisplayResults),然后Alexa会向您的应用发送指令,让它为客户播放内容或显示搜索结果。客户可以不使用动词,直接说“Batman”(蝙蝠侠),此时Alexa会将其视为搜索请求。Alexa还支持更模糊的请求,如按演员搜寻电影,可以说“Alexa, find Tom Hanks movies”(Alexa,搜寻汤姆·汉克斯的电影),或在按流派搜索时说“Alexa, find comedies”(Alexa,搜寻喜剧)。

VSK如何在Fire TV上工作?

借助VSK的仅限应用的实现,Alexa Video Skill API在Fire TV设备上直接向您的应用发送指令。Fire TV有一个名为VSK Agent的服务,该服务接收Alexa指令并将其作为意图广播,然后您的应用通过BroadcastReceiver处理这些指令。整个VSK集成都直接在您的Android代码中完成。如果您已经完成了目录集成,并且您的应用已经具有处理针对搜索和其他查找的文本输入的逻辑,则该集成可以在短时间(几周或更短时间)内完成。

云中的Alexa服务完成解释客户请求、确定意图,然后将其封装为指令的繁重工作,以便您可以使用自己的应用逻辑处理请求。发送到您应用的指令包含请求的结构化和解析表示,其中包括视频、演员、流派和媒体类型等实体。如需查看更完整的搜索和播放表述和所发送指令的列表,请参阅SearchAndPlaySearchAndDisplayResults

构建卓越搜索体验的最佳实践

以下是使用VSK构建卓越搜索体验的一些最佳实践。

  • 如果您的应用允许所有客户浏览内容,而不考虑客户的状态(已登录)和其他因素(订阅级别),则将搜索声明为static capability(静态功能)。否则,您可以将搜索声明为一种dynamic capability(动态功能)来控制该功能。
  • 客户可以说“Alexa, find Breaking Bad season 2 episode 3”(Alexa,搜寻《绝命毒师》第2季第3剧集),按季和剧集搜索(或观看)电视剧。您可以使用季和剧集字段让客户进入剧集。如果您缺失了某一季或某一剧集的编号,则应该根据客户上一次观看的剧集来确定。
  • 客户可以说“Alexa, find Tom Hanks movies”(Alexa,搜寻汤姆·汉克斯的电影)来查找特定演员的电影,也可以说“Alexa, find comedies”(Alexa,搜寻喜剧)来按流派搜索。您可以选择使用Actor(演员)、Franchise(系列片)或Genre(流派)字段显示搜索结果,或者让客户进入专门用于该特定实体的特殊页面。如果您的应用不支持通过这些字段进行查找,则应回退到对指令中发送的值进行文字文本搜索。
  • 利用SearchText(搜索文本)字段帮助提高客户在您的应用中看到的结果的相关性。对于不明确的请求(不包含标题名称的请求),搜索文本将为您提供一个非结构化的、更全面的客户所请求内容的视图,其中包括其他实体和未解析的字词。例如,“Alexa, watch popular comedy tv shows in HD”(Alexa,观看高清流行喜剧电视节目)会对您提供转录值"h.d. popular comedy tv shows"。请注意,对于字词顺序或格式没有规定。有关详细信息,请参阅SearchText
  • 您向客户展示的搜索结果应包括适用于标题的相关作品。作品应该让客户易于识别您在搜索中推荐的内容。


处理SearchAndDisplayResults指令

以下是Alexa为了响应客户的搜索请求“Alexa, find Batman”(Alexa,搜寻蝙蝠侠),而可能发送的SearchAndDisplayResults指令。

Copied to clipboard
EXTRA_DIRECTIVE_NAMESPACE: Alexa.RemoteVideoPlayer
EXTRA_DIRECTIVE_NAME: SearchAndDisplayResults
EXTRA_DIRECTIVE_PAYLOAD_VERSION: 3
EXTRA_DIRECTIVE_PAYLOAD: payload

有效负载包含以下内容:

Copied to clipboard
{
    "payload": {
        "entities": [
            {
                "externalIds": {
                    "ENTITY_ID": "0"
                },
                "type": "Franchise",
                "uri": "entity://avers/franchise/Batman",
                "value": "Batman"
            }
        ],
        "searchText": [
            {
                "transcribed": "batman"
            }
        ],
        "timeWindow": {
            "end": "2016-09-07T23:59:00+00:00",
            "start": "2016-09-01T00:00:00+00:00"
        }
    }
}

使用VSK集成,您可以在应用中创建BroadcastReciever类。VSK Agent将指令封装在一个意图中,该意图会传递到onReceive方法中。有了JSON解析器的支持,您可以在转录的实体对象下检索客户的转录搜索请求,该类对象包含一系列要搜索的实体对象,如Title(标题)、Genre(流派)、Actor(演员)、Franchise(系列片)、Season(季)、Episode(剧集)或MediaType(媒体类型)。在本例中,您应该在应用中显示针对“batman”(蝙蝠侠)的客户搜索结果。

在您的应用成功(或未成功)处理指令之后,您的BroadcastReciever类应以true(表示成功)或false(表示失败)值的形式发送成功意图。

开始使用

通过我们在此处提供的开发者文档,可以了解更多有关集成VSK的信息。您也可以参考大体介绍如何将VSK集成到Fire TV应用中的视频教程(提供中文字幕)。

相关文章

最新文章

 

查看有关亚马逊应用商店、应用开发与盈利、亚马逊服务以及更多主题的最新消息。