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()
获得。
当您应该检查第一个以查看用户当前使用的是什么时,您当前正在使用第二个。
你会想要使用第二个,以防万一你想显示一些东西,以确保他们可以处理它,然后再建议你切换到它。
我尝试在 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()
获得。
当您应该检查第一个以查看用户当前使用的是什么时,您当前正在使用第二个。
你会想要使用第二个,以防万一你想显示一些东西,以确保他们可以处理它,然后再建议你切换到它。