我目前正在使用Google SDK上的操作创建多层面操作。在此操作中,我的用户需要输入一个密码,如果他们三次输入密码失败,我想检查用户是否有可用的手机,以便他们可以通过电话键盘输入密码。
我已经尝试过使用surface capabilities,但是我注意到没有检查特定的设备类别。而是根据capabilities完成检查。
我想实现的是,如果用户无法通过语音输入代码,并且他们使用的是没有键盘的设备(例如Google Home或Google Nest Hub),并且可以使用手机,则应该提示将对话移至他们的移动设备。
我目前使用以下代码来确定用户是否拥有移动设备,并且尚未使用移动设备:
const hasOtherDeviceWithScreen = conv.available.surfaces.capabilities.has("actions.capability.SCREEN_OUTPUT");
const hasOtherDeviceWithBrowser = conv.available.surfaces.capabilities.has("actions.capability.WEB_BROWSER");
const hasAvailableMobileDevice = (hasOtherDeviceWithScreen === true && hasOtherDeviceWithBrowser === true);
const currentDeviceHasScreen = conv.screen;
const currentDeviceHasBrowser = conv.surface.capabilities.has("actions.capability.WEB_BROWSER");
const handOverAvailable = (hasAvailableMobileDevice === true && currentDeviceHasBrowser === false);
我知道切换只能使用IOS和Android手机完成,因此检查屏幕+上网应该可以检测到手机,但是我不确定如果有多于一个的其他设备可用,该操作如何工作。
检查屏幕设备和浏览器设备是否可以确保用户拥有具有这些功能的单个设备,或者当用户拥有多个设备时是否有可能返回true?
答案 0 :(得分:2)
conv.surface.capabilities
是特定设备的所有功能的数组,而conv.available.surfaces.capabilities
是用户在其所有设备上的所有功能的数组。
当您从智能扬声器之类的东西过渡到电话之类的东西时,您会在所有有效表面上收到通知。基本上就是您的手机。
检查Web浏览器和屏幕通常应与移动设备匹配,尽管功能框架是专门设计的,因此您无需直接进行设备类型检查。