亚马逊AWS官方博客
AWS IoT 物联网系列 | 第八篇:Alexa 入门实验
AWS IoT 物联网系列博客
当前物联网环境中,设备类型多种多样,连接方式不一而足。为了帮助读者更好的理解并运用 AWS IoT 相关服务,我们提供了一个完整的 IoT 起步指南,包含设备的注册及上线、设备管理、用户身份及权限管理以及成本控制,通过这一系列的起步指南,也可以快速了解到 AWS IoT 服务如何与 Amazon Alexa 语音助手进行集成。AWS IoT 物联网系列共8篇,本篇是该系列的第一篇,其他篇链接请在本文结尾处查看。
Amazon Alexa 简介
Amazon Echo 是当前最炙手可热的智能语音音响,内置的语音助理 Alexa 可以高效准确的理解用户对它发出的语音指令,而不需要任何的遥控器。市场上的一些智能产品,比如咖啡机、灯具、电视等,只需要语音它们就可以执行一系列的动作,而这些产品都没有内置 Alexa,那设备厂商是如何做到的呢?开发者可以通过 Alexa Skill 来增加更多丰富多彩的应用。
Demo 介绍及准备工作
通过此 Demo,开发者可以学习如何从零开始通过 Alexa skill 设计出具有高度定制化的语言助手,最终使用对话方式定制旅行计划。
为了完成此 Demo,需要使用三个工具:
- Alexa skill kit
- AWS Lambda
- NodeJS
准备工作:
-
了解什么是 Alexa skill kit
Alexa Skill kit(ASK)是一套自助服务,其中包括 API、工具、文档和代码示例,使您能够轻松快速地为建立 Alexa Skill。
-
需要注册两个帐号
- 亚马逊 AWS 帐号:https://aws.amazon.com
- 亚马逊开发者帐号:https://developer.amazon.com(注册个人开发者需要上传身份证)
Demo 具体操作流程
- 登录亚马逊开发者网站,网站右上角点击“Sign In”
- 登录后进入开发者控制台
- 选择顶部的 ALEXA SKILLS KIT 按钮
- 创建一个 Skill,并且取个名字
- 本示例选定自定义 skill,后三个为预编译模型,要深入了解各个 skill 模型,请参阅这里
- 下图为 Amazon Alexa 主界面,先重点关注右侧的 checklist,完成一个 Skill,必须完成图中这4项 Invocation Name ->Intents, Sample, and Slots -> Build Model -> Endpoint。
- Invocation Name : 给触发 Skill 取个名字,这个名字很重要,本示例设置为 rebecca,记得保存
- 返回主界面后,Invocation Name 设置完成
- Intents, Samples, and Slots: 定义对话逻辑,也就是交互模型都在这里进行创建。此示例中为了大家方便操作,把配置文件制作为 json 文档,请把 json 文档内容粘贴进“JSON Editor”,https://github.com/alexa/alexa-cookbook/blob/master/handling-responses/dialog-directive-delegate/sample-nodejs-plan-my-trip/speech-assets/InteractionModel.json, 点击”Save Model”保存后,再点击”Build Model”(要稍等一会), 最后返回主界面会看到 checklist 完成第二、三步。如要深入开发,强烈建议阅读这个参考文档
- 会多出一些 Intents 和 slots,这些都是由刚才的 Json 定义而来的,并且 checklist 完成了 Build Model
- 选择左下角 Endpoint 按钮进入 Lambda 配置,选择 AWS Lambda ARN 按钮
到此为止,alexa skill kit 告一段落,Lambda ARN 暂时空着,接下来先配置 Lambda 。
- 登录至 AWS 控制台,选择 US East (N. Virginia) 地区,然后进入 Lambda 服务
- 创建 Lambda 函数
选择蓝图(Blueprints), 晒选框输入“alexa-skill”,然后选择 alexa-skill-kit-sdk-factskill,最后点击右下角的 “configure”
- 创建 Lambda 函数名称以及角色,两个名字可以不一样
设置 Lambda 角色,记得点击右下角 Allow
下面代码部分暂时不用管,点击创建函数
- 配置触发器:选择“Alexa Skill Kit”
Skill ID 请查看第11步(图片2)中,Your Skill ID 中字段进行复制,添加后注意保存
- Lambda 函数代码打包上传。此项目 Demo 代码路径:https://github.com/alexa/alexa-cookbook/tree/master/handling-responses/dialog-directive-delegate/sample-nodejs-plan-my-trip/src 。此项目有 alexa-sdk 依赖,所以必须打包上传,以下打包上传步骤:
16.1. 克隆 alexa-cookbook 项目或者下载上述链接下的三个文件,此例为直接下载三个文件到新建目录 alexa-demo-skill-kit 中
16.2. 此项目有 alexa-sdk 的依赖,所以使用 npm 安装依赖:
$ npm install
16.3. 项目打包:生成 zip 包
$ zip -q -r9 ~/CreateThumbnail.zip *
16.4. 上传 zip 包,界面如下图
Lambda 代码包上传完成。如需其他语言打包方法详见这里
- 复制右上角的 Lambda ARN
- 回到第11步图二页面,设置 Endpoint, 把 Lambda ARN 粘贴到 Default Region 中,并且保存
- 回到 alexa skill kit 主界面,查看 checklist,确保所有项为绿色对勾表示配置完成
- 接下来就可以测试配置好 Alexa, 继续使用亚马逊开发者帐号登录 https://echosim.io, 然后按住空格键录音,你可以说“open rebecca”,系统会回答“Let’s plan a trip. Where would you like to go?”然后跟着提示回答就可以了。