亚马逊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

准备工作:

  1. 了解什么是 Alexa skill kit

Alexa Skill kit(ASK)是一套自助服务,其中包括 API、工具、文档和代码示例,使您能够轻松快速地为建立 Alexa Skill。

  1. 需要注册两个帐号

Demo 具体操作流程

  1. 登录亚马逊开发者网站,网站右上角点击“Sign In”

  1. 登录后进入开发者控制台
  2. 选择顶部的 ALEXA SKILLS KIT 按钮
  3. 创建一个 Skill,并且取个名字
  4. 本示例选定自定义 skill,后三个为预编译模型,要深入了解各个 skill 模型,请参阅这里
  5. 下图为 Amazon Alexa 主界面,先重点关注右侧的 checklist,完成一个 Skill,必须完成图中这4项 Invocation Name ->Intents, Sample, and Slots -> Build Model -> Endpoint
  6. Invocation Name : 给触发 Skill 取个名字,这个名字很重要,本示例设置为 rebecca,记得保存

  1. 返回主界面后,Invocation Name 设置完成

  1. 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 完成第二、三步。如要深入开发,强烈建议阅读这个参考文档

  1. 会多出一些 Intents 和 slots,这些都是由刚才的 Json 定义而来的,并且 checklist 完成了 Build Model

  1. 选择左下角 Endpoint 按钮进入 Lambda 配置,选择 AWS Lambda ARN 按钮

到此为止,alexa skill kit 告一段落,Lambda ARN 暂时空着,接下来先配置 Lambda 。

  1. 登录至 AWS 控制台,选择 US East (N. Virginia) 地区,然后进入 Lambda 服务

  1. 创建 Lambda 函数

选择蓝图(Blueprints), 晒选框输入“alexa-skill”,然后选择 alexa-skill-kit-sdk-factskill,最后点击右下角的 “configure”

  1. 创建 Lambda 函数名称以及角色,两个名字可以不一样

设置 Lambda 角色,记得点击右下角 Allow

下面代码部分暂时不用管,点击创建函数

  1. 配置触发器:选择“Alexa Skill Kit”

Skill ID 请查看第11步(图片2)中,Your Skill ID 中字段进行复制,添加后注意保存

  1. 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 代码包上传完成。如需其他语言打包方法详见这里

  1. 复制右上角的 Lambda ARN

  1. 回到第11步图二页面,设置 Endpoint, 把 Lambda ARN 粘贴到 Default Region 中,并且保存

  1. 回到 alexa skill kit 主界面,查看 checklist,确保所有项为绿色对勾表示配置完成

 

  1. 接下来就可以测试配置好 Alexa, 继续使用亚马逊开发者帐号登录 https://echosim.io, 然后按住空格键录音,你可以说“open rebecca”,系统会回答“Let’s plan a trip. Where would you like to go?”然后跟着提示回答就可以了。

 

 

 

本篇作者