仅限应用的集成故障排程及调试
本部分列出了常见错误以及对其进行故障排除/调试的方法。一种常见的调试技巧是运行一些adb命令来监控日志。在某些情况下,由于Alexa和自然语言解析的许多功能都是在后台进行,因此调试可能需要更多的分析工具。
- 查看日志
- 应用对表述完全没有响应
- Alexa不能识别标题
- 广播消息错误
- 动态报告器功能错误
- API密钥错误
- 证书指纹错误
- Alexa说:“Sorry, something went wrong”(对不起,出了点问题)
- Alexa对传输控制的响应不正确
- Alexa命令不执行任何操作
查看日志
调试的第一步是确定问题所在。要确定问题所在,查看日志无疑是首选方法。您可以在Android Studio中监控日志,也可以在终端中使用Grep命令来监控日志。有关要运行的命令的详细信息,请参阅在日志中查看指令的命令。以下是简短的摘要:
adb logcat | grep "AppAgent" -i
- 检查安装和打开应用时报告了哪些功能。adb logcat | grep "AlexaDirectiveReceiver" -i
- 检查当您说出测试表述时应用从Alexa那里收到了什么消息。
有关成功日志的示例,请参阅 “步骤10:测试表述和观察日志” 中的更详细的日志演练 。
应用对表述完全没有响应
如果应用对表述完全没有响应,请确保您的Fire TV设备上的Fire OS版本中有VSK Agent。查看您的Fire TV设置(前往Settings(设置)> My Fire TV(我的Fire TV)或Devices and Software(设备和软件)>About(关于)),然后检查内部版本是否为最新。(具体的内部版本信息不久即会添加到此处。) 您也可以安装名为Package Browser的应用(注意:这是一款不属于亚马逊的第三方应用),然后确保有支持VSK Agent的正确程序包。(程序包信息不久即会提供。)
Alexa不能识别标题
如果Alexa无法识别您的目录中的标题,请确保您已先完成目录集成的所有步骤。如果您使用的是示例应用,请确保使用IMDb中存在的标题进行测试。
如果已正确引入您的目录,但是Alexa难以解释某些标题,则Alexa可能对于该特定标题存在自然语言理解(NLU)问题。您的亚马逊代表可以使用内部诊断工具来查看Alexa是否正确解析了表述。如果Alexa难以识别视频内容的其中一种实体类型(例如,本地运动队或本地演员姓名),应认识到Alexa并非100%理解所有实体类型。要在任何国家或地区发布VSK,Alexa只需要了解该地区大约75%的实体类型。
广播消息错误
如果您在示例应用(名为AlexaDirectiveReceiver
的类)中使用了BroadcastReceiver中的示例代码,则该类中会有一些错误消息会标记可能发生的不同错误。下表简要描述了可能的错误消息。
错误消息 | 原因 |
---|---|
"Unknown Alexa Directive.Sending a failure response intent to the VSK Agent"(未知的Alexa指令。向VSK代理发送故障响应意图) | 您收到的指令与任何处理逻辑都不匹配。 |
“Received an empty directive from the VSK Agent”(收到来自VSK Agent的空指令) | 您的指令处理逻辑无法识别指令名称。 |
"Unknown Intent from the VSK Agent"(来自VSK Agent的意图不明) | 您向VSK Agent报告功能的方式存在问题。 |
"Error sending pending intent to the VSK agent"(向VSK Agent发送待处理意图时出错) | 您用于将待处理意图发送回VSK Agent的代码有问题。 |
"Invalid json for SearchAndPlay payload"(SearchAndPlay有效负载的json无效) | 您用于获取SearchAndPlay 指令的有效负载的代码逻辑存在问题。 |
"Invalid json for Seek payload"(Seek有效负载的json无效) | 获取SeekController 有效负载位置的代码存在问题。 |
动态报告器功能错误
如果您使用的是示例应用中的DynamicCapabilityReporter
类,则对于任何与动态功能报告相关的错误,都将出现错误消息 “Failed reporting dynamic capabilities to the VSK agent”(向VSK Agent报告动态功能失败)。
API密钥错误
如果您看到有关API密钥无效的消息或指示Fire TV无法对API密钥解码的消息,则表示Android在对您的应用签名时,并未使用您在步骤9: 对应用签名并配置安全配置文件中配置的自定义调试密钥。
API密钥可能有效,但是Android Studio可能未使用正确的签名配置对您的应用进行签名。确保已在调试签名配置中指定您的Java密钥库(.jks)详细信息。另外,请确保API密钥使用.jks中的签名创建,这些签名用于对您的应用进行签名。
证书指纹错误
如果您看到APIKeyDecoder: Failed to decode: Decoding failed: certificate fingerprint can't be verified!
(未能进行解码:解码失败:无法验证证书指纹!),则问题出在安全配置文件中的指纹认证上。确保您的安全配置文件与应用的程序包名称相关联。请参阅步骤9: 对应用签名并配置安全配置文件。
Alexa说:“Sorry, something went wrong”(对不起,出了点问题)
这可能涉及许多错误,包括无效的代码(例如JSON块的语法无效)。如果您最近对代码进行了更改,请恢复到较早版本,看看这样能否解决此错误。然后一点一点地引入您的更改,以确定导致问题的部分。
Alexa对传输控制的响应不正确
如果您正在使用传输控制表述(例如Pause(暂停)、Fast-forward(快进)等)测试应用,而且Alexa说:“Sorry, I don't know that one”(抱歉,我不能识别),那么您可能需要亚马逊代表使用内部工具在云端调查Alexa,以调查潜在的问题。例如,Video Speechlet可能因为它没有检测到这些请求是从媒体播放器还是其他视频客户端发起的,而拒绝了您的传输控制请求。这不是您可以自行解决的问题。
Alexa命令不执行任何操作
确认您的指令处理逻辑。Alexa本身无法检索视频或开始播放。Alexa只向您的应用发送指令。您必须实现逻辑来处理指令,如步骤8: 对Alexa指令做出反应中所述。
Last updated: 2020年10月30日