我正在使用alexa-sdk
开发自定义技能,该技能适合用作Lambda函数。但是,我能够在this discussion之后设置一个快速服务器,它涉及模拟lambda上下文。
当我设置我的服务器并使用Alexa开发控制台中的服务模拟器测试技能时。有两种方式可以通过" Text"发送请求。或" JSON"。
如果我使用"文字"选项卡,我得到的只是一个错误,说"无法调用远程端点,或者它返回的响应无效"。但是,如果我复制"服务器请求" (这是一个JSON对象)并在" JSON"下发送它。选项卡,一切正常。
使用echosim和真实的生态设备进行测试,结果"无法达到技能"错误。我怀疑Alexa发送" Text"对我的服务器的请求与" JSON"不同,不管它是什么......但我找不到任何文档。我检查了我的服务器,在通过" Text"进行测试时,它甚至没有收到请求。
下面是我使用express的服务器代码。它是一个监听端口8080的简单服务器,但我使用ngrok将其转发到https地址。
'use strict'
const express = require('express')
const bodyParser = require('body-parser')
const context = require('aws-lambda-mock-context')
const alexaLambda = require('./alexaLambda') // where the alexa handler is
const app = express()
app.use(bodyParser.json({ type: 'application/json' }))
app.get('/', (req, res) => {
console.log('received get')
resp => res.status(200)
})
app.post('/alexa', (req, res) => {
var ctx = context()
console.log('received post: ', req.body)
alexaLambda.handler(req.body, ctx)
ctx.Promise
.then(resp => res.status(200).json(resp))
.catch(err => console.log(err))
})
app.listen(8080);
答案 0 :(得分:2)
好吧,我通过摆弄SSL配置解决了这个问题...我检查了单选按钮说" 我的开发端点有来自可靠证书颁发机构的证书"我应该检查的地方" 我的开发端点是域的子域,该域具有来自证书颁发机构的通配符证书"。
尽管如此,在文本失败时,为什么使用JSON进行测试仍然困扰我。
答案 1 :(得分:1)
如果您想在没有额外快递代码的情况下使用AWS Lambdas,您还可以使用我们的bst代理工具:
this
它类似于ngrok,因为它使您的本地机器可以访问Alexa服务。它具有额外的好处,但您可以使用它直接使用Lambdas。所以你可以说
bst proxy lambda index.js
它将创建一个可用于测试技能的端点。