【免费下载链接】susi_alexa_skill
An alexa skill which can be used to ask susi for answers: "Alexa, Ask Susi Who Are You"
🤖 想了解如何让语音助手帮你随时提问吗?开源项目susi_alexa_skill是一个 Alexa 技能:它用Node.js接收你的语音问题,转发调用Susi AI的chat.json接口,再把智能回答用语音朗读给你听——一句 "Alexa, ask Susi who are you" 就能得到 Susi 的回答。本文将带你拆解它的工作原理,并一步步跑起来。
项目简介:susi_alexa_skill 是什么
susi_alexa_skill 把 Susi(一个开源 AI 聊天机器人)接入 Amazon Alexa。整个后端非常轻量,核心只有几个 Node.js 文件:
| 文件 | 作用 |
|---|---|
| server.js | Express 服务,提供/susiapi接口,接收 Alexa 请求 |
| handlers.js | 业务逻辑:调用chat.json并解析回答 |
| alexa.js | 封装 Alexa 请求/响应对象,生成语音回复 |
| intent_schema.json | Alexa 意图模型定义 |
| sample_utterances.txt | 示例语句 |
| Dockerfile | 容器化部署 |
核心原理:一次提问的三步流程
当你说 "Alexa, ask Susi what is the temperature in Berlin" 时,背后发生了这样一条链路:
- Alexa 做意图识别:整句问题被作为
query槽位传给callSusiApi意图(定义在 intent_schema.json 中,槽位类型为AMAZON.LITERAL); - Node.js 服务端转发请求:server.js 监听 POST 请求,识别出
IntentRequest后交给 handlers.js 中的callSusiApi处理器; - 调用 Susi AI 的 chat.json:实际请求形如
http://api.susi.ai/susi/chat.json?q=你的问题,Susi 返回 JSON,服务取出答案后以PlainText语音读回给你。
整个过程可以概括为:
用户语音 → Alexa意图(query) → server.js → chat.json?q=问题 → 解析JSON → 语音回答代码解读:server.js 如何接收 Alexa 请求
server.js 中用 Express 挂载了/susiapi路由,它把 Alexa 发来的 JSON 交给 alexa.js 封装,然后按请求类型分流:
if (type === "LaunchRequest") { // 首次唤醒:连问两次 chat.json(Welcome / Get started) } else if (type === "IntentRequest") { // 用户提问:交给对应意图处理器 handler(slots, session, response); }而 alexa.js 里的say(text, shouldEndSession)函数负责把文字包成 Alexa 能朗读的响应格式,这是"智能回答"最终变成语音的关键一步。
解析响应:从 chat.json 拿到智能回答
chat.json返回的 JSON 结构中,答案位于answers[0].actions[0].expression。在 handlers.js 中可以看到完整的解析逻辑,它还贴心地处理了两种特殊场景:
rss类型:Susi 不知道答案时,固定回复 "I have no idea about it, sorry.";table类型:数据类回答只朗读前 10 条,避免语音过长。
此外,handlers.js 还支持两个"魔法词":说help会请求聊天引导,说stop或cancel则结束会话。
快速上手:本地三步跑起来
✅ 只需 Node.js 环境,三步即可启动服务:
git clone https://gitcode.com/gh_mirrors/su/susi_alexa_skill cd susi_alexa_skill npm install npm start启动后服务默认监听8080端口(见 server.js 与 package.json),依赖只有express和body-parser两个,非常轻量。
Alexa 控制台配置:让技能听懂你的问题
服务端就绪后,需要在 Amazon 开发者控制台完成技能配置:
- 技能信息:填写技能名和调用名(invocation name)。本项目的调用名是
susi,所以提问前缀就是 "Alexa, ask Susi..."; - 交互模型:把 intent_schema.json 和 sample_utterances.txt 的内容分别填入意图模式和示例语句栏,只需一行示例语句:
- 服务配置:选择 HTTPS 端点类型,把部署后的服务地址(如 Heroku 或自有域名 URL)填入端点字段:
测试验证:试着问 "who are you"
配置完成后进入 Test 标签页,可以直接在 Service Simulator 中输入问题测试。输入who are you后,右侧会看到 Susi 的回答 "My name is Susi.":
也可以直接对真机或模拟器说话试试这些句子:
- "Alexa, ask susi where are you"
- "Alexa, ask susi tell me a joke"
- "Alexa, ask susi what is a table"
部署方案:从 Heroku 到 Kubernetes
项目自带多种部署选项,按规模任选:
- Docker:Dockerfile 基于
node:boron镜像,npm install后直接npm start,暴露 8080 端口; - Kubernetes:kubernetes/ 目录提供了完整的 YAML 清单(application/deployment.yaml、service.yaml、ingress-tls.yaml 等),配合 kubernetes/deploy.sh 一键部署,官方步骤见 docs/gce-kubernetes.md;
- Travis CI:kubernetes/travis/deploy.sh 支持自动化部署。
总结:从一行代码到语音智能问答
回顾一下 susi_alexa_skill 的精髓:
- 薄后端:一个 Express 路由 + 一个意图处理器,就把 Susi AI 的能力接进了语音世界;
- 标准 API:
chat.json?q=问题是通用的 HTTP 接口,任何语言都能复刻这套调用方式; - 易扩展:想换问答引擎?只需在 handlers.js 中替换 endpoint 和解析逻辑。
这套"语音入口 + Node.js 网关 + AI API"的模式,对想接入其他聊天 API 的项目同样适用。动手试试吧!🚀
【免费下载链接】susi_alexa_skill
An alexa skill which can be used to ask susi for answers: "Alexa, Ask Susi Who Are You"
相关推荐
一句"Alexa, Ask Susi"是如何工作的:susi_alexa_skill从麦克风到AI回答的完整请求流程
一句"Alexa, Ask Susi"是如何工作的:susi_alexa_skill从麦克风到AI回答的完整请求流程 susi_alexa_skill 是一款为
Vane Search API 集成指南:从获取模型到流式问答的完整调用实战
Vane Search API 集成指南:从获取模型到流式问答的完整调用实战 Vane 是一个运行在自有硬件上的 AI 问答引擎,其 Search API ht
人工智能大模型AI 应用本地部署后端前端JumpServer Node.js SDK 实战:通过签名鉴权调用 PAM 账户密钥获取 API
JumpServer Node.js SDK 实战:通过签名鉴权调用 PAM 账户密钥获取 API 导读 本文基于 JumpServer 开源仓库中 apps/
后端认证鉴权运维网络安全
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考