【问题标题】:Is it possible to add custom voice commands to my home network of google home/minis?是否可以将自定义语音命令添加到我的 google home/minis 家庭网络?
【发布时间】:2021-06-14 14:17:49
【问题描述】:

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

有没有办法做到这一点?

这些命令的最终目标是点击一个 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 中的请求对象,然后将其路由到它想要做的任何事情。
    我发现的最简单的对象(实际上有效)只是将文本返回到谷歌以便在你的家/迷你之外说出来: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 个短语,它会通过我的 API 进行路由,生成一个包含随机数的响应,将其返回并告诉我。
一旦这个工作正常,您就可以使用您的 API 与任何您想要的东西联系/交谈。这完全取决于你。

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

【问题讨论】:

  • 感谢您分享您的流程。您是否介意分享如何设置场景和自定义动作意图的屏幕截图?我无法按照上面的描述进行操作。
  • @Inventor22 确定!所以最简单的顺序可能首先是一个意图。根据意图图像 - 创建一个新意图(红色箭头),然后添加有助于匹配用户所说内容的测试短语。 (蓝色箭头)然后是场景图像 - 创建一个新场景(红色箭头),分配用户意图处理。它是一个下拉列表,应该已经列出了你的意图(在我的例子中测试)(蓝色箭头),然后根据你的需要将意图匹配设置为 webhook 或提示(绿色箭头)
  • @Inventor22 最后一步是转到左侧菜单中的“主调用”,然后根据该图像 - 单击“当用户说”框进行编辑并设置您的初始语音命令.这基本上是你的“hello google”的设置版本,让它开始收听。 (红色箭头)然后使用下拉菜单(黄色箭头)将“过渡到”(蓝色箭头)设置为您的场景。因此调用主命令短语将调用 hello 测试程序并转换到您的场景。您可以编辑它在收听时对您说的内容(绿色箭头)。我把它改成了“测试程序正在监听”。
  • 然后您只需转到顶部栏菜单上的“测试”,您可以与它交谈或单击提示。除非我搞砸了,否则它应该对你有用!注意:要使用你的谷歌家庭产品,它仍然需要你先说“嘿谷歌”。然后是你的短语。所以在这个原因它会是“嘿谷歌”等待谷歌开始收听,然后说“与你好测试程序”,它应该说你输入的回复短语。希望它有效!截图链接:imgur.com/a/2vlfexo
  • @Thranor 非常感谢您的详细介绍!我正在努力将信息传递给我的 webhook - 我一切正常,但我找不到我试图在 google 请求对象中发送的任何数据。你是怎么做到的?

标签: voice-recognition google-home google-smart-home


【解决方案1】:

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

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

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

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

【讨论】:

  • 我实际上想出了如何去做。我花了很长时间,他们的文档很糟糕。我使用 .net core 5.0 API 作为后端来执行我想要的所有控件。如果这对后面的人有用,我可以在这里发布我的过程。
  • 发布详细的答案肯定对未来的读者有用。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多