介绍
create-skill 是一个基于 Node.js 和 TypeScript 打造的快速创建技能项目的命令行工具。它提供了简单易用的命令,可以帮助开发者快速创建一个 Alexa 或 Google Assistant 技能初始项目,省去了枯燥无味的配置工作,让开发者可以更专注于业务逻辑的实现。
本文将为大家介绍如何使用 create-skill 包创建自己的技能项目,并提供详细的指导和示例代码。
安装和使用
使用 create-skill 之前,你需要确保你的系统已经安装了 Node.js 和 npm。如果你还没有安装它们,你可以访问官方网站进行下载安装。
接下来你可以使用以下命令安装 create-skill:
npm install -g create-skill
安装完成后,你可以使用以下命令创建一个技能项目:
create-skill my-skill
其中,my-skill 是你要创建的技能项目名称。运行以上命令后,create-skill 将询问你要创建什么类型的技能(Alexa 或 Google Assistant)以及使用什么语言(TypeScript 或 JavaScript)进行开发。
根据你的选择,create-skill 将自动下载所需的模板文件以及相关依赖,并在当前目录下创建一个名为 my-skill 的文件夹,其中包含了一个初始的技能项目结构。
接下来你可以使用以下命令在本地启动技能项目:
cd my-skill npm run dev
启动成功后,你可以访问 http://localhost:3000 来查看技能项目的运行情况。
技能配置
在项目创建完成后,你需要配置一些必要的技能信息,以便让技能在 Alexa 或 Google Assistant 上能够被识别和响应用户的命令。以下是一些常见的技能配置:
Alexa 配置
Alexa 技能的配置主要包括在 Amazon Developer Console 中注册技能、关联 Lambda 函数、添加 Intents 和 Slots 等。具体操作可以参考 Alexa 开发文档。
在完成 Alexa 技能的配置后,你需要在 config/alexa.json
文件中填写以下信息:
-- -------------------- ---- ------- - ---------- ---------------------- ------ - --------- ------------ --------- - ------ ------------------------------------------------ - - -
其中,skillId 是在 Amazon Developer Console 中创建技能时生成的一个唯一标识符;aws.region 是你所在的 AWS 区域;aws.lambda.arn 是你在 AWS Lambda 中创建的函数 ARN。
Google Assistant 配置
Google Assistant 技能的配置主要包括在 Actions Console 中注册技能、关联 Dialogflow Agent、添加 Intents 和 Entities 等。具体操作可以参考 Google Assistant 开发文档。
在完成 Google Assistant 技能的配置后,你需要在 config/google.json
文件中填写以下信息:
{ "agentId": "xxx", "credentials": { "client_email": "xxx@xxx.iam.gserviceaccount.com", "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxxx\n-----END PRIVATE KEY-----" } }
其中,agentId 是在 Dialogflow 中创建的 Agent ID;credentials 是在创建 Google Cloud 服务账号时生成的 JSON 字符串。
技能开发
在技能项目创建和配置完成后,你可以开始编写技能的业务逻辑了。create-skill 提供了一些示例代码,让你可以更快速地上手开发。
Alexa 开发示例
在 Alexa 技能中,我们需要编写 Intents 和相应的 Handlers 来响应用户的命令。
以下是一个简单的 Intents 和 Handlers 示例:
-- -------------------- ---- ------- ------ - -------------- - ---- --------------- ----- ------------------ -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- ------------------------------------------------ --- -------------------- -- -------------------- - ----- ---------- - ----------------------- ------ ---------------------------- ------------------ --------------------- --------------- - -- ----- ------------------------ -------------- - - ----------------------- - ------ ----------------------------------------- --- --------------- -- ------------------------------------------------ --- ------------------- -- ----- -------------------- - ----- ---------- - --------------- ------ ---------------------------- ------------------ --------------- - -- ------ ----- ------------- - - ------ ---------------------- -------------------------------------- ------------------------ ---------- --
在以上代码中,我们创建了两个 Intent Handlers:HelpIntentHandler 和 HelloWorldIntentHandler。HelpIntentHandler 是用来响应用户的帮助请求,HelloWorldIntentHandler 是用来响应用户的 HelloWorldIntent 命令。
在上述代码中,我们使用了 ask-sdk-core
模块提供的 RequestHandler 和 SkillBuilders 接口来编写技能逻辑。其中,SkillBuilders.custom() 是一个用来创建 SkillBuilder 实例的工厂方法,addRequestHandlers() 方法用来添加 Intent Handler。
启动技能后,我们可以在 Alexa 开发者控制台的测试页面中测试技能的运行情况。
Google Assistant 开发示例
在 Google Assistant 技能中,我们需要借助 Dialogflow Agent 来识别用户的命令,并编写相应的 Intent,以便 DialogueFlow 可以将用户的命令转化为机器可以理解的数据格式。
以下是一个简单的 Intent 和相应的 Handler 示例:
-- -------------------- ---- ------- ------ - ---------- - ---- -------------------- ----- --- - ---------------------- --------------------------- ----- ------ -- - ------------------------- --- ------ ----- ------------- - - ----------- ---- --
以上代码中,我们创建了一个 input.welcome Intent,并编写了相应的 Handler 来响应用户的命令。在 Handler 中,我们使用 actions-on-google
模块提供的 dialogflow() 接口创建了一个 DialogflowApp 实例,并在其上添加了一个 intent() 方法。
启动技能后,我们可以在 Actions Console 的测试面板中测试技能的运行情况。
部署技能
完成技能代码编写和测试后,我们需要将技能部署到线上环境以供用户使用。本节将为大家介绍如何将技能部署到云端。
部署 Alexa 技能
在部署 Alexa 技能之前,你需要确保你已经在 AWS Lambda 上创建了一个用来部署技能逻辑的 Lambda 函数,并将其与技能的 Skill ID 关联。
完成上述准备工作后,你可以将技能上传到 AWS Lambda:
npm run build npm run deploy:alexa
以上命令将生成一个 dist 目录并将其上传到 AWS Lambda 上,你也可以在当前目录下的 .ask/config
文件中修改相关的部署配置。
部署 Google Assistant 技能
在部署 Google Assistant 技能之前,你需要确保你已经完成了 Dialogflow Agent 的配置,并将其与你的 Google Cloud 服务账号关联。
完成上述准备工作后,你可以将技能上传到 Google Cloud Functions:
npm run build npm run deploy:google
以上命令将生成一个 dist 目录并将其上传到 Google Cloud Functions 上,你也可以在当前目录下的 serverless.yml
文件中修改相关的部署配置。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055edd81e8991b448dc930