2017-05-05 7 views
0

나는 람다 함수로 사용되는 방향으로 맞추어 진 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); 

답변

1

글쎄, 나는 SSL의 설정 손보는하여 문제를 해결 ... 내가 "내 개발 엔드 포인트가 신뢰할 수있는 인증 기관에서 인증서를 가지고"라는 라디오 버튼을 선택 어디 "확인 했어야 내 개발 끝점은 인증 기관의 와일드 카드 인증서가있는 도메인의 하위 도메인입니다. ".

여전히 Text가 실패하는 동안 JSON으로 테스트하는 것이 왜 효과가 있는지는 신경 쓰입니다.

1

당신은 별도의 명시 적 코드없이 AWS 주면서 작업 할 경우, 당신은 또한 우리의 BST 프록시 도구를 사용할 수 있습니다 :
https://bespoken.tools/blog/2016/08/24/introducing-bst-proxy-for-alexa-skill-development

알렉사에 로컬 컴퓨터를 액세스 할 수 있는지에 ngrok와 유사 서비스. 그것은 당신이 그것을 사용하여 Lambdas와 직접 작업 할 수 있지만 추가 된 이점이 있습니다. 그럼 그냥 말해 줄 수 있습니다

bst proxy lambda index.js 

그리고 테스트를 위해 기술에서 사용할 수있는 끝점이 만들어집니다.