如何在没有“询问 xxxx”的情况下编写自定义 Alexa 技能

物联网 智能家居 亚历克斯
2021-06-27 22:50:37

我目前正在使用 fauxmo 向各种设备发送自定义命令以打开/关闭它们(例如,我有一个 WiFi 到 IR 转换器来控制我的调谐器和电视),我可以用它打开/关闭电视。

我也有 Kodi 集成设置,所以我可以说:

Alexa, Ask Kodi to set volume to 50%

但我想说:

Alexa, Set tuner volume to 50%
Alexa, Play Bluray

即我希望能够控制设备而不需要Ask xxxx作为我请求的一部分。

理想情况下,我想在没有基于云的服务(即 SmartThings 或 Wink)的情况下执行此操作。

我喜欢 fauxmo 使用的解决方案(模拟现有的 UPNP 服务),但它仅限于开/关(如果您使用启用 Hue 的补丁,则它会“变暗”)并且不够灵活。

4个回答

我一直在探索为几个项目自己删除 Alexa 自定义技能的调用名称。经过数小时阅读指南和文档后,我得出的结论是……自定义技能无法做到这一点

因此,对于您的用例来说,最好的选择是将 Alexa Smart Home 与一些智能家居服务一起使用。我知道你说:

理想情况下,我想在没有基于云的服务(即 SmartThings 或 Wink)的情况下执行此操作

不幸的是,没有 Alexa 调用名称的唯一方法是使用它们预定义的 API(即 Smart Home、List Skill 和 Flash Briefing)。

编辑:不过,您的用例属于智能家居 API。因此,您始终可以创建自己的使用该 API 的服务,而不是依赖其他服务(Wink、SmartThings 等)。

您现在应该可以使用 Alexa 的无名称交互来执行此操作

为了让你的技能在无名称交互中更容易被发现,你可以在你的技能中实现 CanFulfillIntentRequest 接口

由于 lynx 在他的回答中已经详细说明,除非您要解决预定义的 API,否则无法完全没有调用名称。然而,我的技能并不是使用调用名称的唯一方法。

开发人员页面提供了三种不同的方式来使用请求的调用名称。

“Alexa,询问双子座的每日星座运势

“Alexa,与每日星座运势交谈,并给我金牛座的星座运势”

“Alexa,使用每日星座运势给我我的金牛座星座运势

Alexa 调用名称文档

此外,此页面显示了您可以使用哪些其他词来连接请求、调用名称和强制连接词。因此,如果您确实创建了自己的 Alexa 技能,那就是使用一个好的调用名称和一个好的请求,使其听起来自然。

更好的是,您的回声应该已经通过使用 Kodi 集成启动蓝光来对此做出反应。

Alexa Kodi播放蓝光

因此,虽然您无法摆脱预定义 API 之外的调用名称,但您可以使语音命令感觉更自然,并跳过尴尬的ask ...用法。

如果你使用Alexa默认没有使用的特殊词,其实是可以的。反正方法还是挺麻烦的。

您只需要避免通过 AWS 处理您的请求!你说不可能?对的,这是可能的。

在您的 Amazon Alexa 应用程序或 Amazon Alexa 网络应用程序中,您登录您的 Amazon Alexa 帐户,然后在 --> 设置 --> 历史记录中,您将拥有一个包含您将告诉 Alexa所有请求和单词的实时页面

此时,您可以使用网络解析器来获取单词并触发脚本,如果该单词是您想要的单词,或者您可以使用一些仅适用于 Windows 的惊人小软件,可以触发操作和脚本。

这里是软件链接在 YouTube 上查看有关如何使用 addtopad 的教程。

如果要启动脚本,只需在端口上触发一个侦听器,并在软件中的一个词之后发送一个特殊请求。我在家里使用它,我真的很喜欢不必说任何调用名称的事实。

之后,正如我所说,你可以使用任何词,甚至像 open 这样的词。它会触发你的脚本,但你会听到 Alexa 说“对不起,我不知道”。

我使用它,它工作得很好!