Android Google home向Google home应用程序发送卡片

Android Google home向Google home应用程序发送卡片,android,actions-on-google,google-home,Android,Actions On Google,Google Home,我制作了一个小的Google Home应用程序,我的服务返回一个带有SimpleMessage+卡的响应 在console.actions.google.com模拟器中运行应用程序时,它可以完美地工作。我得到的卡都很好 但当我测试与谷歌主页通话时,它只发送文本,没有任何卡片的痕迹 但是,如果我在手机上使用谷歌主页应用程序,它确实会正确发送卡片 有什么东西可以让你接收谷歌主页发送的卡片吗?有可能吗?没有办法让用户通过Google Home聊天时发送的卡片可见,但作为开发人员,如果需要卡片,可以使用

我制作了一个小的Google Home应用程序,我的服务返回一个带有SimpleMessage+卡的响应

在console.actions.google.com模拟器中运行应用程序时,它可以完美地工作。我得到的卡都很好

但当我测试与谷歌主页通话时,它只发送文本,没有任何卡片的痕迹

但是,如果我在手机上使用谷歌主页应用程序,它确实会正确发送卡片


有什么东西可以让你接收谷歌主页发送的卡片吗?有可能吗?

没有办法让用户通过Google Home聊天时发送的卡片可见,但作为开发人员,如果需要卡片,可以使用几种技术

首先,好的设计建议卡片应该用来补充对话,而不是成为对话的焦点。确保语音对话本身很重要,仅在必要时使用视觉元素。如果你的动作过于视觉化,它可能更适合作为移动或网络应用,而不是动作

如果您的设备需要屏幕,则可以在配置问题时在操作控制台中进行设置。然而,这将阻止它在谷歌家庭设备上使用

如果你不想走这条路,想让它在智能扬声器上使用,但仍然利用屏幕上的可用性,你有几个选择

首先,你可以把卡片寄出去。正如您所发现的,它们不会出现,但不会造成任何问题

如果您想在屏幕可用的情况下采取稍微不同的行动,您可以检查用户助手当时能够执行的操作。如果您使用的是node.js库,那么可以使用如下命令

let hasScreen = app.hasSurfaceCapability(app.SurfaceCapabilities.SCREEN_OUTPUT)
确定屏幕是否可用,并根据变量
hasScreen
采取措施。如果您使用的是JSON,则需要检查
surface.capabilities
data.google.surface.capabilities
处的数组,以查看
“actions.capability.SCREEN\u OUTPUT”
是否是可用的表面之一

如果没有,并且您在对话中遇到需要发送可视结果的情况,您还可以请求在支持屏幕输出的设备上继续对话

首先,您需要确保他们有可用的屏幕。您将使用node.js库执行此操作

const screenAvailable = app.hasAvailableSurfaceCapabilities(app.SurfaceCapabilities.SCREEN_OUTPUT);
app.askForNewSurface(context, notif, [app.SurfaceCapabilities.SCREEN_OUTPUT]);
或者通过检查JSON中的
availableSurfaces.capabilities
data.google.availableSurfaces.capabilities
参数

如果有,您可以请求继续对话,例如

const screenAvailable = app.hasAvailableSurfaceCapabilities(app.SurfaceCapabilities.SCREEN_OUTPUT);
app.askForNewSurface(context, notif, [app.SurfaceCapabilities.SCREEN_OUTPUT]);
其中,
context
是将在Google Home上显示的消息,
notif
是将出现在他们的移动设备上的通知(例如),以允许他们继续对话。如果使用JSON,则需要使用
actions.intent.NEW\u SURFACE
next intent


无论哪种方式,用户都会在其移动设备上收到通知。选择通知将启动该设备上的助手,您的操作将再次被调用,参数允许您检查它们是否在新曲面上。如果是,您可以发送该卡。

使用新的sdk版本,您将如何实现上述目标?是否有办法在家用设备中回答用户问题,同时向其他设备发送通知?例如,如果用户询问方向,回答位置并对用户说:“我已将位置发送到您的手机”,然后向他发送地图……这是一个非常好的问题,但最好与此问题分开提问和回答。(我需要在某个时候返回以使用最新的库进行更新。)@我已经创建了一个: