【发布时间】: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 个端点。因此,如果您想要做很多事情,您只需要过滤掉 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