【问题标题】:Recognize the type of Alexa device from the JSON request从 JSON 请求中识别 Alexa 设备的类型
【发布时间】:2019-03-22 10:34:13
【问题描述】:

我想确定使用我的 Alexa 技能的设备是否有屏幕,以便我可以提供正确的响应并包括卡片或图像等。

我查看了 Request and Response JSON Reference 并希望在 Context 或 System 对象中找到可以使设备与众不同的东西。

从文档和我自己的测试日志来看,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 设备,特别是知道该设备是否有内置屏幕?

【问题讨论】:

    标签: alexa alexa-skill


    【解决方案1】:

    在测试了我可用的设备后,我发现Viewport 数组在设备有屏幕时提供。无需比较Viewport 元素。

    所以要确定传入的 Alexa 请求是否有附加屏幕,我只需这样做:

    if (event.context.Viewport) {
        // device has a screen
    }
    

    注意:发送卡片到任何设备(屏幕与否)也将在 Alexa 应用程序中可见。因此,在检测到屏幕后,我会发送一张卡片,以便在每个回合显示。如果没有检测到屏幕,那么我只是偶尔发送卡片让用户检查他们的 Alexa 应用程序以查看卡片。所以我很惊讶地看到屏幕上显示的所有卡片,也淹没了应用程序。

    【讨论】:

    • 亚马逊还在发吗?我看不到来自 Show 或 Spot 的 Viewport 数据...
    • @BelaVizy 是的,不久之后,我也停止接收视口数据。我还没有听到或看到来自亚马逊的任何官方更新......但这似乎是他们最近实施的一项改变,影响了许多(如果不是所有的话)我们的开发人员。
    • @BelaVizy 我刚刚看到另一个用户报告它回来了,所以我也仔细检查了一遍。我确实再次看到它应该是event.context.Viewport。亚马逊一定是在某个地方犯了一个错误,然后才修复它。
    【解决方案2】:

    对于那些在这里尝试让视觉效果在他们的 Alexa 技能中发挥作用的人。

    要让 "Alexa.Presentation.APL" 出现在您的 supportedInterfaces 数组中,您需要在 Alexa 开发者控制台中为该技能启用它。您必须在Interfaces 选项卡下启用Alexa Presentation LanguageReference

    如果启用此功能并且supportedInterfaces 仍然为空(来自支持屏幕/APL 的设备),请确保不存在具有相同调用短语的其他技能(将其命名为可笑的唯一测试名称),然后重试.

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 2010-09-14
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多