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

Is it possible to add custom voice commands to my home network of google home/minis?

我想编写可在我家庭网络 (home/minis) 中的任何 google 收听设备上使用的自定义语音命令,然后 return 针对这些命令使用与所有默认 commands/queries 相同的 google 语音,您可以询问它。

有办法吗?

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

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

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

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

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

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

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

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

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

已在编辑初始问题时回答。