[英]Google home to send card to the Google Home app
我制作了一个小型Google Home应用程序,我的服务使用SimpleMessage + Card返回响应。
在console.actions.google.com模拟器中运行应用程序时,它非常有效。 我得到的卡都很好。
但是当我测试与Google Home的对话时,它只发送文本,没有任何卡片的痕迹。
但是,如果我在手机上与谷歌家庭应用程序通话,它会正确发送卡。
是否有能力接收Google Home发送的卡片? 有可能吗?
当用户通过Google Home进行通话时,无法制作发送的卡片,但如果需要卡片,您可以使用多种技术作为开发人员。
首先 - 良好的设计表明,卡片应该用于补充对话,而不是对话的焦点。 确保语音对话本身很重要,并仅在必要时使用可视元素。 如果您的操作过于直观 - 它可能更适合作为移动或网络应用,而不是动作。
如果您的设备需要屏幕,则可以在配置问题时在操作控制台中进行设置。 但是,这会阻止它在Google Home设备上使用。
如果你不想走这条路线,并希望允许它在智能扬声器上使用,但仍然利用可用的屏幕,你有几个选择。
首先,你可以发送卡片。 正如您所发现的那样,它们不会出现,但它们不会造成任何问题。
如果您希望屏幕可用时略有不同,则可以检查用户助手当时的表面功能 。 如果您正在使用node.js库,则可以使用如下命令
let hasScreen = app.hasSurfaceCapability(app.SurfaceCapabilities.SCREEN_OUTPUT)
确定屏幕是否可用并根据变量hasScreen
采取措施。 如果您使用JSON,你需要检查在阵列surface.capabilities
或data.google.surface.capabilities
,看看是否"actions.capability.SCREEN_OUTPUT"
是可用的表面之一。
如果没有,并且您在对话中找到了您认为需要发送可视结果的点,您还可以请求在支持屏幕输出的设备上继续对话。
首先,您需要确保他们有可用的屏幕。 你可以用node.js库做类似的事情
const screenAvailable = app.hasAvailableSurfaceCapabilities(app.SurfaceCapabilities.SCREEN_OUTPUT);
或者通过检查JSON中的availableSurfaces.capabilities
或data.google.availableSurfaces.capabilities
参数。
如果有一个可用,您可以请求继续与那里的对话
app.askForNewSurface(context, notif, [app.SurfaceCapabilities.SCREEN_OUTPUT]);
context
是将在Google Home上显示的消息,并且notif
将显示在他们的移动设备上(例如)让他们继续对话。 如果使用JSON,则需要使用actions.intent.NEW_SURFACE
下一个意图。
无论哪种方式,用户都将在他们的移动设备上收到通知。 选择通知将启动该设备上的助手,并再次使用参数调用您的操作,以便检查它们是否在新表面上。 如果是这样 - 你可以发送卡。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.