开发者控制台

步骤8: 对指令做出反应(VSK Fire TV)

步骤8: 对指令做出反应(VSK Fire TV)

在清单中添加BroadcastReceiver后,Fire TV将通过Alexa指令将任何意图发送到您指定的BroadcastReceiver类,例如AlexaDirectiveReceiver。在这个BroadcastReceiver类中,您接受和处理Alexa发送到您应用的指令。在这个类中,您需要开发自己的处理逻辑。

示例应用注意事项

示例应用已经对指令做出了反应,因此在此步骤中不需要进行任何编码。您可以查看示例应用如何处理AlexaDirectiveReceiver类中的指令(位于java/com/example/vskfiretv/company/receiver中)。展开本主题底部附近的“示例应用如何处理指令”按钮部分,查看示例应用处理逻辑的说明。

VSK指令

当用户通过Alexa发出语音请求时,VSK指令会通过VSK Agent传达给您的应用。有关指令的更多详细信息,请参阅API参考中的说明。

一旦您在BroadcastReceiver中收到指令,您需要自己在应用中完成指令的请求。通常设计的model-view-viewmodel(MVVM)应用一般会让这一点变得相当简单,因为大多数应用都有主视图模型,该模型已围绕应用路由远程点击和搜索查询。将相关字符串从BroadcastReceiver传递到视图模型通常是在应用中执行VSK指令所需的全部操作。

例如,当用户说 “Find comedy movies”(查找喜剧电影)时,您可能会收到SearchAndDisplayResults指令,该指令针对MediaType: Movie以及Genre: Comedies。如果您的应用支持搜索,您就已经有了一种机制,可让用户用遥控器将文本输入到输入字段中,并搜索他们所输入的内容。您可以通过VSK使用相同的搜索查询机制,针对从指令解析的 “comedy movies” 执行操作。

对指令做出反应

Alexa发送的指令取决于您声明的功能。自定义BroadcastReceiver类以处理应用中的指令(参见步骤7: 添加BroadcastReceiver)。具体操作为:

  • 添加逻辑来解析指令payload(该指令存在于这些指令接收到的意图中),并在应用中执行请求的行为。
  • 使用指令响应VSK Agent,以指示是否已成功处理它。您可以通过在广播意图中纳入PendingIntent来纳入该状态。该状态为布尔值,其值为true(成功时)或false(失败时)。示例响应代码显示在步骤7的新增BroadcastReceiver Java类中。

为认证需要的指令

Alexa可以为许多不同的请求发送指令。是否必须对它们全部进行处理? 如果您的应用不能处理某些指令,您的应用会让认证失败吗? 在每个指令的表述列表中,如果需要支持某个表述,则此表述下方会出现 “Required for certification”(需要认证)字样。

所需的表述包括标题、演员、流派、系列片的搜索,以及传输控制表述。如果表述被标记为需要认证,但您的应用不支持该功能,您的应用不会让认证失败,您可以无视该要求。对于可选指令(如ChangeChannel),只有当您选择处理该指令时,所需指令才算是要求。

API参考

API参考文档中描述了实现和处理上述指令的预期逻辑。Alexa期望每个传入指令都有一个特定的响应和操作。更多详细信息,请参阅以下内容:

如果您正在实现一些其他接口(不建议),请参阅以下内容:

表述参考

有关Fire TV设备支持的各种表述(包括按区域设置划分的每个短语)的详细列表,请参阅表述参考。您可在此查看RemoteVideoPlayer的表述:

其他接口的表述包括:

示例应用注意事项

有关示例应用如何处理指令的详细解释,请展开以下部分。

后续步骤

转到下一步: 步骤9: 对应用签名并配置安全配置文件