我尝试在Google动作模拟器中测试我的动作.不幸的是,模拟器似乎没有识别出模拟器内手机表面和智能扬声器表面之间的差异.
我试着控制登录screentest变量.在日志中,手机和电话都是扬声器表面显示’真实’,这显然是不正确的.我还检查了’对话’数据日志.电话和电话扬声器输出包含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')
}
})
预期结果:在模拟器内使用扬声器表面时,助手的输出应为“无屏幕文本”.
实际结果:电话和电话模拟器内的扬声器表面生成答案:’带屏幕的文字’.
最佳答案 问题是你没有正确检查表面.
报告了两组功能:
>用户当前使用的表面上可用的功能.如果您使用的是动作在谷歌库,可以使用conv.surface.capabilties.has()
>用户已连接到其帐户的任何表面上可用的功能.如果您正在使用actions-on-google库,则可以使用conv.available.surfaces.capabilities.has()获取这些内容.
您当前正在使用第二个,当您应该检查第一个以查看用户当前使用的内容时.
如果您想要显示某些内容以确保他们可以在建议您切换到它之前处理它,您将需要使用第二个.