我尝试在Google Actions Simulator中测试我的操作。不幸的是,模拟器似乎无法识别模拟器中电话表面和智能扬声器表面之间的区别。
我试图控制台记录screentest
变量。在日志中,电话和扬声器表面均显示“ true”,这显然是不正确的。我还检查了“对话”数据日志。电话和扬声器的输出都包含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')
}
})
预期结果:在模拟器内部使用扬声器表面时,助手的输出应为“无屏幕文字”。
实际结果:模拟器内部的电话和扬声器表面均会产生答案:“带有屏幕的文字”。
答案 0 :(得分:1)
问题是您没有完全正确检查表面。
报告了两组功能:
conv.surface.capabilties.has()
conv.available.surfaces.capabilities.has()
使用这些功能。当您应该检查第一个来查看用户当前正在使用什么时,您正在使用第二个。
如果要显示某些内容以确保在他们建议您切换之前可以确保它们可以处理,您将要使用第二个。