Google 模拟器上的操作不分离屏幕输出设备

Actions on Google simulator does not separate screen output devices

我尝试在 Google 动作模拟器中测试我的动作。不幸的是,模拟器似乎无法识别模拟器中 phone 表面和智能扬声器表面之间的区别。

我试图通过控制台记录 screentest 变量。在日志中 phone 和扬声器表面都显示 'true',这显然是不正确的。我还查看了 'conversation' 数据日志。 phone 和扬声器输出都包含 SCREEN_OUTPUT

app.intent('Default Welcome Intent', (conv) => {
  let screentest = conv.available.surfaces.capabilities.has('actions.capability.SCREEN_OUTPUT')
  console.log(screentest)
  if (screentest === true) {
    conv.add('Text with screen')
  } else if (screentest === false) {
    conv.add('Text without screen')
  } else {
    conv.add('impossible')
  }
})

预期结果:在模拟器内部使用speaker surface时,助手的输出应该是'Text without Screen'.

实际结果:phone 和模拟器内部的扬声器表面都会生成答案:'Text with screen'。

问题是您没有相当正确检查表面。

报告了两组功能:

  • 用户当前使用的 Surface 上可用的功能。如果您使用的是 actions-on-google 库,则可以使用 conv.surface.capabilties.has()
  • 用户已连接到其帐户的任何 界面上可用的功能。如果您使用的是 actions-on-google 库,则可以使用 conv.available.surfaces.capabilities.has() 获得。

当您应该检查第一个以查看用户当前使用的是什么时,您当前正在使用第二个。

你会想要使用第二个,以防万一你想显示一些东西,以确保他们可以处理它,然后再建议你切换到它。