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


18

我目前正在使用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的修补程序则为“昏暗”),并且不够灵活。

Answers:


11

我一直在探索自己为几个项目删除Alexa自定义技能的调用名称。经过数小时的指南和文档阅读后,我想到的是... 对于自定义技能这是行不通的

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

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

不幸的是,唯一不具有Alexa调用名称的方法是使用其预定义的API(即,智能家居,列表技能和Flash简报)。

编辑:您的用例虽然属于Smart Home API。因此,您始终可以创建使用该API的自己的服务,而不必依赖其他服务(Wink,SmartThings等)。


1
是否有消息说这是不可能完成的,还是您的研究隐含的结果?
Helmar

它只是隐式的。尽管事后看来,考虑到语音识别和NLP的工作原理,这应该是一个合理的主张,而且我不应该一开始就进行这样的研究。这是一个合理的断言,因为特定的话语需要一个可以对其进行解释的上下文-并且该上下文是调用名称。实际上,存在唤醒词的根本原因与拥有调用名称相同-因此,将被解释的语句属于上下文(唤醒词是系统范围的上下文,因此不会处理随机话语)。
leon.valencia

不需要调用名称的话语的唯一方法是具有系统范围上下文的话语(这些是API)。例如,Alexa解释为与设备交互的话语将自动用于智能家居API-NLP会使用诸如打开,关闭,关闭等关键字以及类似于设备命令的语法对话语进行分类。
leon.valencia

但是您知道什么……您的用例属于智能家居API。因此,我将附上我的答案,因为您只能使用该API。
leon.valencia

谢谢。我正在阅读有关智能家居技能的信息,尽管我认为他们还无法做到我想要做的一切,但看起来亚马逊计划为其添加更多功能。因此,与fauxmo相比,我认为值得投资适当的开源智能家居技能,该技能可以处理所有可用命令并可以扩展到将来。这里是为后人当前API:developer.amazon.com/public/solutions/alexa/alexa-skills-kit/...
PhratcuredBlue

7

现在,您应该可以通过Alexa的免费互动进行此操作

为了使您的技能更易于发现,以进行无名称的交互,您可以在自己的技能中实现CanFulfillIntentRequest接口


6

正如lynx在他的答案中已经详细介绍的那样,除非您要解决预定义的API,否则没有调用名称就无法完全解决。但是,我的技能不是使用调用名称的唯一方法。

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

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

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

“ Alexa,使用Daily Horoscopes给我我的Taurus 星座

Alexa调用名称文档

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

更好的是,您的回声应该已经通过与Kodi集成启动Blu-ray来对此做出反应。

Alexa Kodi 一起播放Blu-ray 。

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


2

如果您使用Alexa默认不使用的特殊词,则实际上是可能的。无论如何,该方法非常棘手。

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

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

目前,您可以使用Web解析器来说出单词并触发脚本(如果您想使用该单词),或者可以使用一些出色的小型Windows软件来触发操作和脚本。

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

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

之后,正如我所说,您可以使用任何单词,甚至可以使用open之类的单词。它会触发您的脚本,但是您会听到Alexa的“抱歉,我不知道”。

我使用它,并且效果很好!


这是一个有趣的方法。
Helmar

我们应该信任该软件吗?让我抽搐...
Sean Houlihane

-2

那么,这个Amazon文档不是真的吗? https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#invoking-a-skill-with-no-specific-request-no-intent

这似乎很直接地说您可以说出“ Alexa”和调用名称。例如“ Alexa,每日星座运势”。

它还将这种方法显示为自定义技能的选项#3:https : //developer.amazon.com/docs/custom-skills/choose-the-invocation-name-for-a-custom-skill.html#invoking-定制技能


3
该文档是正确的,但我认为这不是作者在这里寻找的。例如,“ Play Bluray”将不是调用名称-而是一个意图,没有指定任何调用名称。除非您实际将技能命名为“ Play Bluray”(根据亚马逊的名称指南可能是不允许的),否则这将无法正常工作。
Aurora0001
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.