나는 람다 함수로 사용되는 방향으로 맞추어 진 alexa-sdk
을 사용하여 맞춤 스킬을 개발 중이다. 그러나 λ 문맥 조롱과 관련된 this discussion 다음의 고속 서버를 설정할 수있었습니다.Alexa 테스트 시뮬레이터 (텍스트 대 json)
서버를 설정하고 Alexa 개발 콘솔의 Service Simulator를 사용하여 스킬을 테스트했습니다. '텍스트'또는 'JSON'을 통해 요청을 보내는 방법에는 두 가지가 있습니다.
"텍스트"탭을 사용하면 "원격 종단점을 호출 할 수 없거나 반환 된 응답이 유효하지 않습니다."라는 오류 메시지 만 표시됩니다. 그러나 "서버 요청"(JSON 개체)의 내용을 복사하여 "JSON"탭 아래로 보내면 모든 것이 잘 동작합니다.
echosim과 실제 eco 장치를 사용한 테스트에서 "스킬에 도달 할 수 없음"오류가 발생했습니다. 알렉사가 내 서버에 보내는 "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);