是否可以将自定义语音命令添加到我的 google home/minis 家庭网络?

问题描述

我想编写可在我的家庭网络(家庭/迷你)中的任何谷歌监听设备上使用的自定义语音命令,然后使用与所有认命令相同的谷歌语音为这些命令返回特定响应/queries 你可以问它。

有没有办法做到这一点?

这些命令的最终目标是访问一个 URL(本地网络),该 URL 将返回一条消息,以便从 google home/minis 回复

编辑:我找到了解决方案。
Google 可能会更改其工作方式,因此请注意发布时间。
我使用了谷歌操作控制台。 https://console.actions.google.com/u/0/ 您可以找到一些关于此的教程,这些教程还不错。基本上,我创建了一个认项目(不使用任何预设),创建了一个场景,为我想做的每个动作创建了一个自定义意图,并在该意图下列出了一堆训练短语,以获得正确的语音捕获的最佳机会.
然后在场景下,我将每个意图添加到“用户意图处理”点。
对于其中的每一个,我将“意图”下拉列表设置为我的自定义意图之一,而对于“意图匹配时”部分,我将其设置为“调用您的 webhook”并为其指定相关名称。我将我的名称设置为与一致性意图相同的名称。我只是为我所有的自定义意图重复了这一点。
现在我转到左侧的“Webhook”选项卡,并确保我的履行方法设置为 HTTPS 端点。
这是我花了一段时间的部分。关于如何做到这一点的文档很少,其中一些实际上是错误的。就我而言,我制作了一个 .net core 5.0 API,因为我很熟悉它,我相信你可以使用任何带有 HTTPS 端点的东西。我在这里学到了两件事。

  1. 一些文档说您为触发器提供的处理程序名称添加到端点。它没有。
  2. 实际上您只能有 1 个端点。所以如果你想要很多东西,你只需要过滤掉 API 中的请求对象,然后将它路由到它想要做的任何事情。
    我发现的最简单的对象(实际上有效)用于将文本返回给 google 以便在您的家中/迷你中说出来:https://developers.google.com/assistant/conversational/prompts-simple#json_1

无论您将端点设置为什么,只需将其放入 HTTPS 端点的框中并点击保存。
我还了解到,对于 .net,这与 localhost 并不兼容。我不是网络和 https 方面的专家,但经过一些谷歌搜索后,我发现在本地主机上进行测试的一个简单解决方法是使用 NGROK。运行它,向它传递一个类似“ngrok http https://localhost: -host-header=localhost:”的命令,它应该会吐出 2 个随机生成的 .ngrok.io 地址。一个 http 一个 https。您可以使用 HTTPS 作为 API 的根来传递给 google,它应该可以工作!
除非您希望公众拥有它,否则您不需要在 google 操作上使用“部署”选项。它与您的帐户相关联,因此如果您的帐户在您的 google home/minis 上,它将立即可用。
到目前为止,我有 5 个短语可以问我的 google 产品,它会通过我的 API,生成一个包含随机数的响应,返回它并向我说出来。
一旦这个工作正常,你就可以用你的 API 绑定/交谈你想要的任何东西。这完全取决于你。

如有任何问题或说明,请随时添加评论或给我发消息

解决方法

在 Google Assistant 平台上无法实现您想要的端到端。虽然您可以使用 routines,它可以将给定的文本查询映射到一系列操作,但这些命令通常仅限于现有的 Google 助理命令和功能,例如设备控制或开放式输入。

您可以创建一个映射到调用 conversational action 的例程,这将使您能够以编程方式控制响应。但是,该平台在云中进行计算并将响应发送到目标设备。这意味着 Google 助理无法访问本地网络 URL。

如果您有某种方式以通过可公开访问的 URL(可公开访问但您可以添加身份验证)的方式访问本地 URL 数据,那么这将是可行的。

这不适用于智能家居设备的应用,它do let you access local network URLs在 Local Home SDK 中。

,

在最初问题的编辑中回答。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...