前言
广义上的前端,指的是运行在用户设备(像电脑、移动端)上的应用程序,提供用户与后端服务进行交互的界面和功能。在这些应用程序中,语音交互成为了近几年非常热门的话题。Alexa 是亚马逊的智能语音助手,针对其语音应用程序开发,官方提供了 ask-sdk for Node.js 的 npm 包,本文将介绍如何使用其中的 ask-sdk-runtime。
安装与引入
在使用 npm 进行包管理的前提下,使用以下指令可以安装 ask-sdk-runtime 包
npm i ask-sdk-runtime
在项目中引入
const Alexa = require('ask-sdk-runtime');
基本概念
- Handler:通过 Request、Response 对象处理请求、响应,处理函数就被称作 Handler
- Request:Alexa Skill 发出的请求
- Response:返回给 Alexa 的相应
- Skill Builder:提供 ErrorHandler、Request Interceptor、Response Interceptor、Handler Interceptor 等等各种方法的构建器,适用于构建较为复杂的 Skill
- Standard Skill Builder:提供大量的默认配置,适用于较为简单的 Skill
基本操作
-- -------------------- ---- ------- ----- ------------ - - ----------------------- - ----- ------- - ------------------------------------- ------ ------------ --- --------------- -- -------------------- - ----- --------------- - ----------------------------- ---------------------------- --------- ------ ------------------------------ - -- ----- ------------ - ------------------------------- --------------- - -------------------------------------------------------
上面的代码演示了创建一个返回 Hello World! 的 Skill,并将其发布到 lambda 后台。其中,HelloHandler 为 Handler 的实例,canHandle 方法定义操作条件(判断请求是否为想要操作的类型),handle 方法则是实际执行的操作。在 Skill Builder 中,通过 addRequestHandlers 方法将 Handler 实例对象注册到 Skill Builder 实例下,最后通过 lambda 方法发布到后台。以 Alexa Skill 开发为例,可以用以下代码进行 endpoint 的注册:
-- -------------------- ---- ------- ------------- -------- ----- ---- - ----- -------------------- - ----------------------------------------- ----- -------------------------- - ----------------------------------------------------- --------------------------------------------------- --------------- -- - ----- ------------ - ----------------------------- ------------------------------ ------------------------- --------------------------------------- ------------------------------- -------------------------- ---- ------- --------- -- - ----- ---------- - ----- - ---------------- -- --- - ---- ------------------- ----- --------------- ------------------ -------- ---------- -------------------------------------- --- -- -------------- -- - --------------------- ------------------- ------------------------- -------------------------------- ----------------------- --- --
其中的 requestHandlers 可以是一个数组,包含所有的 Handler 实例。
Skill Builder 的配置参数
-- -------------------- ---- ------- ----- ------------ - ---------------------------- -------------------- --- --------------------- --- ------------------- - --------------------- - -- ------- ---- ----- -------- - ------------------------------------------- -- ------- ---- ------ --------- - -- ------------- - ----------- - -- -------- -- -------- - -- -------- - - ---
结语
本文简要介绍了如何在 Alexa Skill 开发中使用 ask-sdk-runtime 进行 Handler 的实现与 Skill 的注册。需要注意的是,遵循语音应用的规范,应该在 Handler 中提前返回权限不足等情况的 Response。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f22b516403f2923b035c6d5