作为前端开发者,我们经常需要构建应用程序并发布到生产环境当中。而在开发 Alexa 技能时,我们需要使用 AWS Lambda 服务,以接收 Alexa Skill Kit 的请求并响应相应的内容。因此,我们需要具备一定的 AWS Lambda 知识,以及构建和部署的技能。
随着 npm 包管理器的普及,我们不再需要手动管理项目依赖项并为每个项目重复设置构建过程。在本文中,我们将介绍如何使用 npm 包 generator-alexa-sdk-skill 搭建一个完整的 Alexa 技能。
什么是 generator-alexa-sdk-skill?
generator-alexa-sdk-skill 是一个基于 Yeoman 的 npm 包,用于生成基础的 Alexa 技能项目结构。它使用 Alexa Skills Kit SDK for Node.js,为我们提供了构建服务器端逻辑的框架。generator-alexa-sdk-skill 包含以下组件:
- Alexa Skills Kit SDK for Node.js
- AWS SDK for Node.js
- AWS Lambda Handler
通过使用 generator-alexa-sdk-skill,我们可以快速搭建一个具有可扩展性的 Alexa 技能应用程序。
快速开始
安装 Yeoman
使用 npm 注册 Yeoman:
$ npm install -g yo
安装 generator-alexa-sdk-skill
使用 npm 注册 generator-alexa-sdk-skill:
$ npm install -g generator-alexa-sdk-skill
生成 Alexa 技能应用程序
- 创建一个项目文件夹并切换到该文件夹。
$ mkdir my-alexa-skill $ cd my-alexa-skill
- 执行 generator-alexa-sdk-skill。
$ yo alexa-sdk-skill
- 在提示中输入应用程序名称、Alexa 技能 ID 和 AWS Lamdba 函数名称。如果创建成功,将在当前文件夹中生成基础项目结构。
集成 Alexa 开发者控制台
项目结构已经准备完毕,现在让我们将技能应用程序部署到 AWS Lambda 并集成到 Alexa 开发者控制台中。
在 Alexa 开发者控制台 中创建一个新的技能。
配置技能的详情页面。在“Skill builder checklist”下找到“Endpoint”并单击“HTTPS”。
新窗口中打开 AWS Lambda 控制台。 在函数列表中,找到之前使用 generator-alexa-sdk-skill 生成的 Lambda 函数,并复制其 ARN。
返回 Alexa 开发者控制台,将 AWS Lambda ARN 粘贴到“Default Region”输入框中。此时,我们的 Alexa 技能应用程序就已经可以响应用户的语音指令了。
添加更多功能
通过程序节点执行功能非常有限。在 Alexa 技能开发过程中,我们可以通过使用 Alexa SDK 的简单语法来实现更多功能。
意图(Intent)
Intent 是语音应用程序的一个关键概念,指定用户可能要执行的操作,例如“打开应用程序”或“查找电影”。在 Alexa 技能应用程序中,我们可以在“intents”目录中编写自定义 Intent。
// intents/myCustomIntent.js module.exports = function(handlerInput) { const speechText = '欢迎使用我的自定义 Intent!' return handlerInput.responseBuilder .speak(speechText) .getResponse() }
会话(Session)
在开发 Alexa 技能时,会话是一个常用的概念。会话可用于在不同意图之间传递上下文和状态信息。我们可以在“handlers”目录中通过使用 Alexa SDK 中的 session 来管理会话。
-- -------------------- ---- ------- -- --------------------- -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- -------------------- - ----- ---------- - ---------------------------------------- - ----------------- - ------------------- ------ ---------------------------- ------------------ --------------------- -------------- - -
响应(Response)
在 Alexa 技能应用程序中,我们可以使用 responseBuilder 来生成响应,并通过使用灵活的 Node.js 语法来管理响应。
-- -------------------- ---- ------- -- --------------------- -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- -------------------- - ----- ---------- - ------------- ------ ---------------------------- ------------------ ------------------------- ----------- -------------- - -
结论
通过使用 generator-alexa-sdk-skill 和 Alexa Skills Kit SDK for Node.js,我们可以快速搭建一个具有可扩展性的 Alexa 技能应用程序,为用户提供基于语音的新型用户体验。在开发过程中,我们可以添加更多的功能,例如 Intent、Session 和 Response,以响应用户的不同需求。希望本文对读者有所启发并提供指导意义。
示例代码
Intents
// intents/myCustomIntent.js module.exports = function(handlerInput) { const speechText = '欢迎使用我的自定义 Intent!' return handlerInput.responseBuilder .speak(speechText) .getResponse() }
Handlers
-- -------------------- ---- ------- -- --------------------- -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- -------------------- - ----- ---------- - ---------------------------------------- - ----------------- - ------------------- ------ ---------------------------- ------------------ --------------------- -------------- - - -- --------------------- -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- -------------------- - ----- ---------- - ------------- ------ ---------------------------- ------------------ ------------------------- ----------- -------------- - -
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056be481e8991b448e599e