亚马逊Alexa自定义技能
我想构建自定义命令以与Echo一起使用
内置的Alexa集成使您可以将家庭助理集成到Alexa/Amazon Echo中。必威是什么此集成将使您使用声音在家庭助理中查询信息和呼叫服务。必威是什么必威是什么家庭助理没有内置句子,但为您提供了一个框架来定义自己的句子。
要求
- 亚马逊开发人员帐户。你可以登录这里。
- 一个AWS帐户如果要使用Alexa自定义技能API,则需要。您的Alexa自定义技能的一部分将托管AWS Lambda。但是,您无需担心成本,因为AWS Lambda允许每月免费使用100万个请求和1GB出站数据传输。
- Alexa自定义技能API还需要您的家庭助理实例可以通过端口443上的htt必威体育存款ps使用由必威是什么Internet访问亚马逊批准的证书机构。这是这样的帐户链接可以进行。阅读更多我们的博客关于如何为家庭助理设置加密。必威是什么运行家庭助理操作系统或监督必威是什么时,鸭DNS附加方法是最简单的方法。
创建您的Amazon Alexa自定义技能
- 登录到亚马逊开发人员控制台
- 单击控制台顶部的Alexa按钮
- 单击右上角的蓝色“创建技能”按钮
- 要添加的型号:自定义
- 姓名:homeassistantintentsskill(或任何您想称呼此技能的东西)
- 主机的方法:提供您自己的
你可以使用这个特别规模的家庭助理徽标必威是什么作为大图标和这个作为小的。
创建您的lambda功能
Alexa自定义技能将触发AWS lambda函数来处理请求,我们将编写一小部分代码作为lambda函数,以基本上将请求重定向到您的家庭助理实例,然后在家庭助理中的Alexa集成将处理请求必威是什么必威体育存款并寄回响应。您的lambda功能将使响应返回给Alexa。
好了,走吧。您首先需要在您的AWS控制台,如果您还没有AWS帐户,则可以创建新用户这里具有12个月的自由层福利。如果您的帐户已经过去12个月,您不必担心成本,AWS为所有用户提供了多达100万个Lambda请求,1GB的出站数据和无限的入站数据。看Lambda定价有关详细信息。
为Lambda创建IAM角色
登录到AWS控制台是为Lambda执行创建IAM角色。AWS具有非常严格的访问控制,您必须明确定义和分配权限。
- 点击
服务
在顶部导航栏中,展开菜单以显示所有AWS服务,请单击我是
在下面安全,身份和合规性
部分导航到IAM控制台。或者您可以使用此关联 - 点击
角色
在左图中,然后单击创建角色
, 选择AWS服务
- >Lambda
在向导的第一页中,然后单击下一步:权限
- 选择
Awslambdabasicexecutionrole
政策,然后单击下一个:标签
。(提示:您可以使用搜索框过滤策略)
- 你可以跳过
添加标签
页面,单击下一步:评论
。 - 给您的新角色一个名字,例如
Awslambdabasicexecutionrole-Intents
,然后单击创建角色
按钮。您现在应该能够在角色列表中找到新角色。
创建lambda功能并添加代码
接下来,您需要创建一个lambda函数。
- 点击
服务
在顶部导航栏中,展开菜单以显示所有AWS服务,请单击Lambda
在下面计算
部分导航到Lambda控制台。或者您可以使用此关联 - 重要的您当前的区域将显示在右上角。确保根据亚马逊帐户的国家选择合适的区域:
- 美国东部(N.Virginia)英语区域(美国)或英语(CA)技能
- 欧盟(爱尔兰)英语区域(英国),英语(in),德语(DE),西班牙语(ES)或法语(FR)技能
- 美国西部(俄勒冈州)日本和英语(AU)技能的区域。
- 点击
功能
在左导航栏中,显示您的lambda功能的列表。 - 点击
创建功能
, 选择作者从头开始
,然后输入一个功能名称
。 - 选择Python 3。作为
运行
(目前有Python 3.9)。 - 选择使用现有角色作为
执行角色
,然后选择您刚刚创建的角色现有角色
列表。 - 点击
创建功能
,然后您可以配置lambda函数的详细信息。 - 在下面
配置
选项卡,展开设计师
,然后单击+添加触发器
在面板的左侧,然后选择Alexa技能套件
从下拉列表中,添加Alexa技能套件扳机触发到您的lambda功能。 - 向下滚动一点,您需要输入
技能ID
从您在上一步中创建的技能。(您可能需要切换回Alexa开发人员控制台,以复制技能ID
)。 - 在图中间单击您的lambda功能图标,然后向下滚动,您将看到一个
功能代码
窗户。 - 清除示例代码并从中复制Python脚本Github Gist。
- 点击
部署
按钮功能代码
窗户。 - 再次向下滚动,您会发现
环境变量
, 点击编辑
按钮并根据需要添加以下环境变量:- base_url(必需的):如必威体育存款果需要,您必威是什么的家庭助理实例的互联网可访问端口。不包括尾声
/
。 - not_verify_ssl(选修的): 设置真的为了忽略SSL问题,如果您没有有效的SSL证书或使用自签名证书。
- 调试(选修的): 设置真的记录调试消息。
- long_lived_access_token(可选,不建议):您将在以后的步骤中将Alexa自定义技能与您的家庭助理用户帐户联系起来,这样您就无需在此处使用必威体育存款长期使用的必威是什么访问令牌。但是,您从登录流中获得的访问令牌仅有效30分钟。您很难在测试数据中使用访问令牌测试lambda功能。因此,为方便起见,您可以从测试数据中删除访问令牌,生成长期访问令牌要放在这里,然后该函数将恢复到从环境变量中读取令牌。(提示:您没有为环境变量启用安全存储,因此保存在此处的令牌不是那么安全。您只能将其用于调试和测试目的。调试。)
- base_url(必需的):如必威体育存款果需要,您必威是什么的家庭助理实例的互联网可访问端口。不包括尾声
- 通过单击来保存环境变量
节省
按钮。 - 接下来,复制页面顶部显示的ARN,即该lambda函数的身份。
- 返回到您的Alexa技能,然后转到左侧的“自定义”>端点菜单选项。
- 将ARN值粘贴在“默认区域”中。注意:您将无法执行此操作,直到您完成上面的步骤,将Alexa技能套件触发器(在上一步中完成)添加到AWS Lambda功能。
帐户链接
Alexa可以将您的Amazon帐户链接到您的家庭助理帐户。必威是什么必威体育存款因此,家庭助理可以确必威是什么保仅对Alexa请求进行操作。为了链接帐户,您必须确保可以从Internet访问您的家庭助理实例。必威是什么必威体育存款
- 登录到亚马逊开发人员控制台
- 去
Alexa技能
页。 - 找到您刚创建的技能,然后单击
编辑
在里面动作
柱子。 - 点击
帐户链接
在构建页面的左导航栏中 - 输入所需的所有信息。假设您的家庭助理可必威体育存款以由必威是什么
https:// 必威体育存款[您的家庭必威是什么助理URL:端口]
授权URI
:https:// 必威体育存款[您的家庭必威是什么助理URL]/auth/授权
访问令牌URI
:https:// 必威体育存款[您的家庭必威是什么助理URL]/auth/soken
- 注意:您必须使用有效/受信任的SSL证书和端口443进行链接到工作的帐户
客户ID
:https://pitangui.amazon.com/
如果你在我们里面https://layla.amazon.com/
如果你在欧盟https://alexa.amazon.co.jp/
如果您在JP或AU中
拖延斜线在这里很重要。
客户秘密
:输入您喜欢的任何东西,家庭助理不会检查此字段必威是什么客户认证方案
:确保您选择请求主体中的凭据。必威是什么家庭助理不支持HTTP基本。范围
: 输入意图
。必威是什么家庭助理尚未使用它,将来我们可能会在允许更多细粒度的访问控制时使用它。
- 你可以走了
域列表
和默认访问令牌到期时间
如空。
- 点击
节省
右上角的按钮。 - 接下来,您将使用Alexa移动应用程序或基于Alexa Web的应用链接您的帐户。
- 打开Alexa应用,导航到
技能
- >你的技能
- >开发技能
- 单击您刚创建的自定义技能。
- 点击
使能够
。 - 一个新窗口将打开,将您引导到家庭助理的登录屏幕。必威是什么必威体育存款
- 成功登录后,您将被重定向到Alexa应用程序。
- 打开Alexa应用,导航到
配置您的Amazon Alexa技能
Alexa基于意图的工作。每个意图都有一个名称和可变插槽。例如,位置的人
带有一个包含一个的插槽用户
。示例意图模式:
{“意图”:[{“意图”:“位置智能”,,,,“老虎机”:[{“姓名”:“用户”,,,,“类型”:“ amazon.us_first_name”]]},,{“意图”:“ Whereareweintent”,,,,“老虎机”:[]}这是给出的}
将这些意图绑定到用户所说的句子。示例话语看起来像这样:
rocateIntent在哪里{user} rocateIntent在哪里{user} rocateIntent,{user} atateIntent在哪里,{user}是{user} dist {user} whereareweintent whereareweintent whereweIntent word
这意味着我们现在可以问Alexa之类的事情:
- Alexa,询问家庭助必威是什么理保罗在哪里
- Alexa,询问家庭助必威是什么理我们在哪里
配置家庭助理必威是什么
激活后,Alexa Integration将拥有家庭助理的本地意图支持来处理传入意图。必威是什么如果要根据意图进行操作,请使用intent_script
一体化。
要启用Alexa,请将以下条目添加到您的configuration.yaml
文件:
Alexa:
使用场景
Alexa集成最有用的应用之一是直接调用场景。通过在家庭助理方面进行一些简单的设置,可以轻松实现这一目标,并让Alexa知道您想运行哪些场景。必威是什么
首先,我们将配置Alexa。在亚马逊交互模块中,将其添加到意图模式:
{“意图”:“激活”,,,,“老虎机”:[{“姓名”:“场景”,,,,“类型”:“场景”}这是给出的}
然后创建一个称为的自定义插槽类型场景
列出您要控制的每个场景:
自定义插槽类型用于场景支持。
这些名称必须与场景名称完全匹配(减去下划线 - 亚马逊无论如何都会放弃它们,后来我们用模板将其映射回它们)。
在新的Alexa技能套件中,您还可以为老虎机类型值创建同义词,该值可以代替话语中的基本价值。在发送到Alexa API端点的意图请求中,同义词将被其关联的插槽值替换,但前提是没有多个同义词匹配。否则,将使用所使用的同义词的价值。
具有同义词的自定义插槽值。
添加样本话语:
激活Ceneintent激活{场景}
然后将意图添加到您的intent_script
HA配置文件中的部分:
intent_script:激活习惯:行动:服务:scene.turn_on目标:ENTITY_ID:场景。{{场景|代替(” ”, ”_”) }}演讲:类型:清楚的文本:好的
我们在这里使用模板以我们给Alexa的名字,例如楼下
并用下划线代替空间downstairs_on
正如家必威是什么庭助理所期望的那样。
现在说Alexa要求家庭助必威是什么理激活<某些场景>
Alexa将为您激活该场景。
添加脚本
我们可以轻松地将上述想法扩展到使用脚本。和以前一样,添加脚本的意图:
{“意图”:“ runscriptintent”,,,,“老虎机”:[{“姓名”:“脚本”,,,,“类型”:“脚本”}这是给出的}
创建一个称为的自定义插槽类型脚本
列出您要运行的每个脚本:
自定义插槽类型用于脚本支持。
添加样本话语:
runscriptintent run {script}
然后将意图添加到HA配置文件中的Intent_Script部分:
intent_script:runscriptintent:行动:服务:script.turn_on目标:ENTITY_ID:脚本。{{脚本|代替(” ”, ”_”) }}演讲:类型:清楚的文本:好的
现在说Alexa要求家庭助必威是什么理运行<一些脚本>
Alexa将为您运行该脚本。
支持发布请求
有时候,您想响应从命令启动的启动请求,例如“ Alexa,Red Alert!”。
首先,您需要获得技能ID:
- 登录到亚马逊开发人员控制台
- 单击控制台顶部的Alexa按钮
- 单击Alexa技能套件启动按钮
- 找到您想要的启动请求支持的技能
- 单击“查看技能ID”链接并复制ID
配置与目的相同,例外是您将使用您的技能ID而不是意图名称。
intent_script:AMZN1.ASK.SKILL.0888888888888-7777-6666-5555-4444444444:行动:服务:script.turn_on目标:ENTITY_ID:script.red_alert演讲:类型:清楚的文本:好的
支持会话结束请求
有时候,您想对缺乏语音响应发起的会话结束请求。
首先,您需要获得技能ID:
- 登录到亚马逊开发人员控制台
- 单击控制台顶部的Alexa按钮
- 单击Alexa技能套件启动按钮
- 找到您想要的启动请求支持的技能
- 单击“查看技能ID”链接并复制ID
配置与目的相同,例外是您将使用您的技能ID而不是意图名称。
intent_script:AMZN1.ASK.SKILL.0888888888888-7777-6666-5555-4444444444:演讲:文本:已经很晚了。我关闭灯吗?重复:文本:我关闭灯吗?Amazon.yesintent:演讲:文本:完毕。晚安!行动:服务:switch.turn_off目标:ENTITY_ID:-Switch.Room1-Switch.Room2亚马逊:演讲:文本:好吧AMZN1.ASK.SKILL.088888888888-7777-6666-5555-44444444444.SESSINEDEDEDERDEDEDEDEREQUEST:行动:服务:switch.turn_off目标:ENTITY_ID:-Switch.Room1-Switch.Room2
给Alexa一些个性
在上面的示例中,我们告诉Alexa说好的
当她成功完成任务时。这很有效,但有点沉闷!我们可以再次使用模板给东西增添一点。
首先创建一个称为的文件Alexa_confirm.yaml
有类似以下内容(继续,发挥创意!):
> {{[“ ok”,“ nure”,“如果您坚持”,“完成”,“不担心”,“我可以做到”,“将其保留给我”,“考虑完成”,“希望“通过您的命令”,“肯定”,“是的哦,尊敬的人”,“我将”,“作为您的裁决,它将是”,“没问题”] |随机的 }}
然后,无论您在哪里放一些简单的文本以进行响应好的
,用对文件的引用替换为:
文本:好的
变成:
文本:!包括Alexa_confirm.yaml
Alexa现在每次都会以随机短语响应。您可以根据自己的意图使用Inclubane,因此只需要创建一次列表即可。