从 JSON 请求中识别 Alexa 设备的类型
Recognize the type of Alexa device from the JSON request
我想确定使用我的 Alexa 技能的设备是否有屏幕,以便我可以提供正确的响应并包括卡片或图像等。
我查看了 Request and Response JSON Reference 并希望在 Context 或 System object 中找到一些东西来区分设备。
根据文档和我自己的测试日志,event.context.System.device.supportedInterfaces
似乎是一个空数组,或者包含一个 AudioPlayer
数组。没有可视化界面吗?
我想寻找的另一个选项是 event.context. Viewport
数组的不同之处。有没有办法通过比较尺寸和形状来知道正在使用哪个设备?
Viewport Reference 和示例:
[Viewport] => Array (
[experiences] => Array (
[0] => Array (
[arcMinuteWidth] => 144
[arcMinuteHeight] => 144
[canRotate] =>
[canResize] =>
)
)
[shape] => ROUND
[pixelWidth] => 480
[pixelHeight] => 480
[dpi] => 160
[currentPixelWidth] => 480
[currentPixelHeight] => 480
[touch] => Array (
[0] => SINGLE
)
[keyboard] => Array ()
)
但我找不到与视口尺寸相匹配的可能设备的属性。
那么有没有人有解决方案来识别正在使用的 Alexa 设备,特别是知道该设备是否有内置屏幕?
在测试了我可用的设备后,我发现 Viewport
数组 仅在设备有屏幕时提供 。无需比较 Viewport
个元素。
因此,为了确定传入的 Alexa 请求是否有附加屏幕,我只需执行以下操作:
if (event.context.Viewport) {
// device has a screen
}
注意:将卡片发送到任何设备(屏幕或非屏幕)也将在 Alexa 应用程序中可见。因此在检测到屏幕后,我将发送卡片以显示在每一个回合。如果没有检测到屏幕,那么我只会偶尔发送卡片供用户检查他们的 Alexa App 以查看那里的卡片。所以我很惊讶地看到所有的卡片都在屏幕上查看,也淹没了应用程序。
对于来这里尝试使用 Alexa 技能实现视觉效果的其他人。
要让 "Alexa.Presentation.APL"
出现在您的 supportedInterfaces
数组中,您需要在 Alexa Developer Console 中为该技能启用它。您必须在 Interfaces
选项卡下启用 Alexa Presentation Language
。 Reference
如果此功能已启用且 supportedInterfaces
仍然为空(来自具有 screen/APL 支持的设备),请确保不存在具有相同调用短语的其他技能(将其命名为可笑的独特名称测试),然后重试。
我想确定使用我的 Alexa 技能的设备是否有屏幕,以便我可以提供正确的响应并包括卡片或图像等。
我查看了 Request and Response JSON Reference 并希望在 Context 或 System object 中找到一些东西来区分设备。
根据文档和我自己的测试日志,event.context.System.device.supportedInterfaces
似乎是一个空数组,或者包含一个 AudioPlayer
数组。没有可视化界面吗?
我想寻找的另一个选项是 event.context. Viewport
数组的不同之处。有没有办法通过比较尺寸和形状来知道正在使用哪个设备?
Viewport Reference 和示例:
[Viewport] => Array (
[experiences] => Array (
[0] => Array (
[arcMinuteWidth] => 144
[arcMinuteHeight] => 144
[canRotate] =>
[canResize] =>
)
)
[shape] => ROUND
[pixelWidth] => 480
[pixelHeight] => 480
[dpi] => 160
[currentPixelWidth] => 480
[currentPixelHeight] => 480
[touch] => Array (
[0] => SINGLE
)
[keyboard] => Array ()
)
但我找不到与视口尺寸相匹配的可能设备的属性。
那么有没有人有解决方案来识别正在使用的 Alexa 设备,特别是知道该设备是否有内置屏幕?
在测试了我可用的设备后,我发现 Viewport
数组 仅在设备有屏幕时提供 。无需比较 Viewport
个元素。
因此,为了确定传入的 Alexa 请求是否有附加屏幕,我只需执行以下操作:
if (event.context.Viewport) {
// device has a screen
}
注意:将卡片发送到任何设备(屏幕或非屏幕)也将在 Alexa 应用程序中可见。因此在检测到屏幕后,我将发送卡片以显示在每一个回合。如果没有检测到屏幕,那么我只会偶尔发送卡片供用户检查他们的 Alexa App 以查看那里的卡片。所以我很惊讶地看到所有的卡片都在屏幕上查看,也淹没了应用程序。
对于来这里尝试使用 Alexa 技能实现视觉效果的其他人。
要让 "Alexa.Presentation.APL"
出现在您的 supportedInterfaces
数组中,您需要在 Alexa Developer Console 中为该技能启用它。您必须在 Interfaces
选项卡下启用 Alexa Presentation Language
。 Reference
如果此功能已启用且 supportedInterfaces
仍然为空(来自具有 screen/APL 支持的设备),请确保不存在具有相同调用短语的其他技能(将其命名为可笑的独特名称测试),然后重试。