基于HTTPS端点开发Amazon Alexa技能的步骤指导请求
从AWS Lambda切换到HTTPS端点开发Alexa技能的详细步骤
嘿,我之前也把自己的Alexa技能从Lambda迁移到了HTTPS端点,踩过几个小坑,给你梳理下完整流程,一步步来就没问题:
1. 准备你的HTTPS服务器
首先得有一个能被公网访问的服务器,并且配置好有效的SSL证书(Alexa只信任正规CA签发的证书,比如Let's Encrypt的免费证书就完全够用,别用自签证书,不然Alexa会直接拒绝请求)。
服务器可以选云服务商的EC2、轻量应用服务器,甚至是自己的物理服务器(只要有公网IP),端口建议用HTTPS默认的443端口,省得额外配置防火墙规则。
2. 迁移技能逻辑到服务器
你之前在Lambda里写的请求处理代码,现在要迁移到自己的服务器上。核心就是创建一个POST接口,接收Alexa发送的JSON请求,处理后返回符合Alexa规范的JSON响应。
举个Node.js的简单例子(用Express框架):
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); // 处理Alexa请求的接口路径 app.post('/my-alexa-skill', (req, res) => { // 这里直接复用你Lambda里的业务逻辑就行 const alexaRequest = req.body; // 比如处理LaunchRequest或自定义意图 const response = { version: '1.0', response: { outputSpeech: { type: 'PlainText', text: '终于通过HTTPS端点响应你啦!' }, shouldEndSession: true } }; res.json(response); }); // 启动服务器(443端口需要root权限,也可以用Nginx反向代理转成普通端口) app.listen(443, () => { console.log('HTTPS服务器已启动,等待Alexa请求'); });
如果想省事儿,直接用Alexa SDK的适配工具,还能自动处理请求签名验证(这个是必做项,后面会说),比如Node.js的ask-sdk-express-adapter:
const { ExpressAdapter } = require('ask-sdk-express-adapter'); const { SkillBuilders } = require('ask-sdk-core'); // 这里就是你之前Lambda里的请求处理器 const LaunchRequestHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === 'LaunchRequest'; }, handle(handlerInput) { return handlerInput.responseBuilder .speak('欢迎使用我的HTTPS技能!') .getResponse(); } }; // 构建技能实例 const skill = SkillBuilders.custom() .addRequestHandlers(LaunchRequestHandler) .create(); // 适配Express服务器,自动处理签名验证 const adapter = new ExpressAdapter(skill, true, true); app.post('/my-alexa-skill', adapter.getRequestHandlers()); app.listen(443);
3. 在Alexa开发者控制台配置HTTPS端点
打开你的技能项目,进入Build > Endpoint页面:
- 把原来的Lambda ARN选项切换到HTTPS
- 输入你的服务器完整URL,比如
https://your-domain.com/my-alexa-skill - 在下方的“SSL Certificate Type”里选对应选项:
- 如果是通配符证书或覆盖该域名的证书,选第一个选项
- 如果是单域名证书,选第二个选项(“My development endpoint has a certificate from a trusted certificate authority”)
保存配置即可。
4. 验证请求签名(必做!)
Alexa会对每个请求进行签名,你的服务器必须验证签名,确保请求确实来自Alexa——不然技能可能被恶意攻击,甚至被Alexa封禁。
如果用了上面的Alexa SDK适配器,这个验证会自动完成。如果是自己写逻辑,需要:
- 提取请求头里的
Signature和SignatureCertChainUrl - 下载证书链并验证其有效性
- 用证书验证请求体的签名
5. 测试技能
配置完成后,进入Alexa开发者控制台的Test页面,开启测试模式:
- 用控制台的模拟器发送请求,检查服务器是否能正确返回响应
- 也可以用实际的Alexa设备测试,确保交互流程正常
几个关键注意点
- 服务器必须能被公网访问,检查防火墙是否开放了443端口
- SSL证书要定期更新,避免过期导致技能失效
- 确保响应符合Alexa的JSON格式,比如
version字段必须是1.0,响应结构不能错 - Alexa要求端点在8秒内返回响应,所以服务器的响应速度要达标
内容的提问来源于stack exchange,提问作者Krishna priya v
相关产品推荐
相关产品推荐

