npm 包 create-skill 使用教程

阅读时长 9 分钟读完

介绍

create-skill 是一个基于 Node.js 和 TypeScript 打造的快速创建技能项目的命令行工具。它提供了简单易用的命令,可以帮助开发者快速创建一个 Alexa 或 Google Assistant 技能初始项目,省去了枯燥无味的配置工作,让开发者可以更专注于业务逻辑的实现。

本文将为大家介绍如何使用 create-skill 包创建自己的技能项目,并提供详细的指导和示例代码。

安装和使用

使用 create-skill 之前,你需要确保你的系统已经安装了 Node.js 和 npm。如果你还没有安装它们,你可以访问官方网站进行下载安装。

接下来你可以使用以下命令安装 create-skill:

安装完成后,你可以使用以下命令创建一个技能项目:

其中,my-skill 是你要创建的技能项目名称。运行以上命令后,create-skill 将询问你要创建什么类型的技能(Alexa 或 Google Assistant)以及使用什么语言(TypeScript 或 JavaScript)进行开发。

根据你的选择,create-skill 将自动下载所需的模板文件以及相关依赖,并在当前目录下创建一个名为 my-skill 的文件夹,其中包含了一个初始的技能项目结构。

接下来你可以使用以下命令在本地启动技能项目:

启动成功后,你可以访问 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 是在 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:

以上命令将生成一个 dist 目录并将其上传到 AWS Lambda 上,你也可以在当前目录下的 .ask/config 文件中修改相关的部署配置。

部署 Google Assistant 技能

在部署 Google Assistant 技能之前,你需要确保你已经完成了 Dialogflow Agent 的配置,并将其与你的 Google Cloud 服务账号关联。

完成上述准备工作后,你可以将技能上传到 Google Cloud Functions:

以上命令将生成一个 dist 目录并将其上传到 Google Cloud Functions 上,你也可以在当前目录下的 serverless.yml 文件中修改相关的部署配置。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055edd81e8991b448dc930

纠错
反馈