npm 包 alexa-conversation 使用教程

阅读时长 6 分钟读完

前言

在开发 Alexa 技能时,我们需要强制性地按照 Alexa 提供的技能模板(skill template)来编写,并且一旦上传到 AWS Lambda 后就不能轻易修改,这让新手开发者体验很不友好。另外,开发过程会经常用到复杂的语音命令,需要手动一步步执行测试,效率极低。为了解决这些问题,有开发者开发出了 alexa-conversation 这个 npm 包,能够在开发过程中更轻松地测试技能,并且支持自定义语音命令。本文将详细介绍如何使用 alexa-conversation。

安装

使用 npm 直接安装:

前置条件

使用 alexa-conversation 需要以下前置条件:

  1. 一个发布到 Alexa Skills Kit 的技能,并记录好技能的 Skill ID。
  2. 一个开发环境的 AWS Lambda 函数,并提前在 Alexa 开发者控制台中配置好相应的 ARN 信息。

使用

初始化

在使用 alexa-conversation 前,需要将其引入项目中:

然后在测试用例中初始化一个 alexa 实例:

其中各个参数的含义分别是:

  • accessToken: Alexa 接口所需要的 token。
  • refreshToken: 同上。
  • clientId: 与 Skill 连接的 Client ID。
  • clientSecret: 与 Skill 连接的 Client Secret。
  • skillURL: Skill 的 AWS Lambda ARN。
  • locale: 语音命令的区域。

测试用例

在 alexa 实例初始化后,就可以开始编写测试用例了。

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

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

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

其中 startSession 用于初始化 session,launch 用于启动 Skill。say 表示用户输入的语音命令,通过 repromptend 表示 Alexa 对用户输入的语音命令的回应。最后可以通过 then 获取 Skill 返回的数据等。

动态设置参数

有时候我们需要动态设置一些参数,比如语音输出是根据搜索结果实时生成的,这时候可以在 say 中传入函数进行动态设置:

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

模拟用户的回复

除了上面说到的常规测试用例外,有时我们需要模拟用户的一些回复,比如询问是否搜索当前电影的续集:

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

测试错误处理

在真实的应用场景中,不同用户的输入和场景都会有很大的差异,因此必须考虑一些错误处理机制。下面是一个处理无法查询结果的测试示例:

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

总结

通过以上介绍,我们可以看到 alexa-conversation 能够非常方便地模拟语音命令进行测试,并支持动态设置参数、模拟用户回复、测试错误处理等。有了它,开发者可以更快更好地编写出高品质的 Alexa 技能,不仅提升了开发效率,也增加了开发体验和用户体验。

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

纠错
反馈