npm 包 node-alexa-smapi 使用教程

阅读时长 7 分钟读完

前言

随着互联网技术的发展,智能音箱正成为智能家居的重要组成部分,而 Amazon 的 Alexa 是其中最受欢迎的智能音箱之一。为了对接 Alexa 平台,开发者需要使用 Alexa Skills Kit (ASK) 平台来创建技能。而为了更好地管理和部署技能代码,使用 npm 包 node-alexa-smapi 是一种很好的选择。

node-alexa-smapi 简介

node-alexa-smapi 是一个 npm 包,提供了一个简单的 API 来和 Alexa Skills Management API (SMAPI) 执行操作,如上传和更新技能代码、发布、部署、测试和撤销技能等。该包是以 Node.js 编写的,并提供了一些简单的方法来操作 SMAPI 接口。

安装

首先,我们需要在安装 node-alexa-smapi 之前,确认已经安装了 Node.js 和 NPM。如果还没有,请先安装它们。

要安装 node-alexa-smapi,请在终端中运行以下命令:

使用方法

在使用 node-alexa-smapi 之前,你需要创建一个 Alexa Developer Console 帐号,并创建一个新的 Alexa 技能。在创建完毕后,你将获得一个 clientId 和 clientSecret 用于后续的操作。

基本操作

我们可以通过以下方式在 Node.js 代码中使用 node-alexa-smapi:

-- -------------------- ---- -------
----- ------------------------ - ----------------------------
----- ----------- - --- --------------------------
    --------- -------------------
    ------------- -----------------------
    ------------- -----------------------
---

-- ------------
----------------------------------- ----
    -------------- -- -
        --------------------
    --
    -------------- -- -
        -----------------------------
    ---

在上面的代码中,我们首先导入 node-alexa-smapi,然后通过 new SkillManagementApiClient() 创建了一个 smapiClient 并传入了 clientId、clientSecret 和 refreshToken(我们将在后面介绍如何获得 refreshToken)。

然后,我们使用 smapiClient.listSkills() 方法列出了当前帐号中的所有技能,并将结果打印到控制台。

获得 refreshToken

在使用 Alexa Skills Management API 之前,你需要获得一个 refreshToken。你可以通过以下步骤获得 refreshToken:

  1. 登录 Alexa Developer Console
  2. 点击 "Your Alexa Consoles",选择 "Security Profiles"。
  3. 在 "Security Profiles" 模块中,选择一个工程。
  4. 选择一个 Skill 并进入 "Overview" 面板。
  5. 点击 "Permissions" 并在 "OAuth 2.0 Client ID" 下面找到 "Refresh Token" 标签。
  6. 点击 "Generate New Refresh Token" 并在弹出窗口中输入 "Rewrite profile name for creating new token" 和权限列表,然后点击 "Generate Refresh Token"。
  7. 记录新生成的 refreshToken,这将是后续使用 SMAPI 的授权凭证。

示例代码

接下来,我们将创建一个 Alexa 技能并使用 node-alexa-smapi 对其进行管理。我们将创建一个简单的 Node.js 程序,该程序将在 Alexa 技能的帮助下向用户提供一个欢迎消息。

1. 创建项目

在你的工作目录中,通过以下命令创建一个新的 Node.js 项目:

2. 安装依赖

运行以下命令安装所需的依赖项:

3. 编写代码

在 my-skill 目录下创建一个名为 index.js 的文件,并将以下代码复制到其中:

-- -------------------- ---- -------
----- ------- - -------------------
----- ----- - ---------------------
----- ------------------------ - ----------------------------
----- --- - ----------

----- ----------- - --- --------------------------
    --------- -------------------
    ------------- -----------------------
    ------------- -----------------------
---

----- ------------ - ------- -------- --------- -- -
  ----- ----- - -------------------- -------- ----------
  ----------- - ------------------
  ---------------------------------
  ----------------
--

----- -------- - -
  ---------------- -------- -- -
    ------------------ ------- ----- ------
  -
--

------------- ----- ---- -- -
  ---------------------- ----- -------- -- -
      -------------------
  ---
---

------------ ----- ---- -- -
  ------------ ----- --------
---

---------------- -- -- -
  -------------------- --- --------- -- ---- --------
---

在上面的代码中,我们创建了一个 express 应用程序,并将 SkillManagementApiClient 和 Alexa SDK 导入到应用程序中。

然后,我们使用 SkillManagementApiClient 创建了一个 smapiClient 并传入了 clientId、clientSecret 和 refreshToken。

接下来,我们定义了 skillHandler,并使用 Alexa.handler() 方法将其传递给 Alexa。我们还为 LaunchRequest 事件注册了一个处理程序,该处理程序将欢迎消息发送回用户。

在应用程序中,我们通过将请求体传递给 skillHandler,并使用 res.json() 方法来响应 Alexa 技能的请求。

4. 部署和测试

最后,我们可以使用 npm start 命令来启动我们的程序,并使用 Alexa Developer Console 测试它。必须使用 HTTPS 将应用程序部署到生产环境中,但为了方便,我们可以在本地使用 ngrok 来启动一个加密的隧道,并将请求转发到本地端口。

在终端中,我们可以使用以下命令启动 ngrok:

启动后,ngrok 将在终端中显示一个 HTTPS URL。复制此 URL 并访问 Alexa Developer Console 中的 Skill Information 面板,将其添加到 "Endpoint" 字段中。

现在,我们已经成功创建了一个使用 node-alexa-smapi 的 Alexa 技能!用户将通过说 "Alexa, start my skill" 启动技能,然后 Alexa 将发送一个欢迎消息。

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

纠错
反馈