我想确定使用我的Alexa技能的设备是否有屏幕,以便我可以提供正确的响应并包括卡片或图像等。
我查看了Request and Response JSON Reference并期望在Context或System对象中找到可以将设备分开的东西。
从文档和我自己的测试日志中,event.context.System.device.supportedInterfaces
似乎是一个空数组,或包含一个AudioPlayer
数组。视觉界面没有任何东西吗?
我想要寻找的另一个选择是event.context. Viewport
阵列的差异。有没有办法通过比较尺寸和形状来了解正在使用的设备?
[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 ()
)
但我找不到与Viewport尺寸匹配的可能设备的属性。
那么有没有人有识别正在使用的Alexa设备的解决方案,特别是要知道设备是否有内置屏幕?
在测试了我可用的设备后,我发现Viewport
阵列仅在设备有屏幕时提供。无需比较Viewport
元素。
因此,要确定传入的Alexa请求是否具有附加屏幕,我只需执行以下操作:
if (event.context.Viewport) {
// device has a screen
}
注意:在Alexa应用程序中也可以看到将卡发送到任何设备(屏幕与否)。因此,在检测到屏幕后,我发送的卡片将在每个转弯处显示。如果没有检测到屏幕,那么我只会发送偶尔的卡片供用户检查他们的Alexa应用程序以查看那里的卡片。所以我很惊讶地看到屏幕上看到的所有卡片,也淹没了应用程序。