요청 호출을 포함하는 모듈이 있는데, 실행되지 않는 것으로 보입니다.노드 Alexa 스킬을 사용하는 JS 콜백
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = <my alexa app ID>;
var self = module.exports = {
handler : function (event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(self);
alexa.execute();
},
"TestIntent": function() {
var speechOutput = "Recorded Test";
request("http://www.google.com",
function(error, response,body)
{
return console.log(body);
}
);
this.emit(':tell', speechOutput);
}
}
나는 구글의 몸이 다른 곳 람다 콘솔이나 내 CONSOLE.LOG에 표시 볼 수 없습니다. 다른 호출 (예 : 내 응용 프로그램 서버 API에 대한 API 게시물)을 시도했지만 해당 서버에서도 해당 호출이 표시되지 않습니다.
요청 콜백이 완료되기 전에 프로세스가 종료 된 것처럼 보입니다.
Amazon Lambda "테스터"에서 나는 유효한 응답을 얻습니다. Alexa "테스터"에서는 "기록 테스트"의 응답을 받았습니다. 그리고 에코 (알렉사 경유)에서, 나는 장치로부터 "기록 된 테스트"응답을 되 찾는다. 그래서 스킬이 훌륭하게 작동하는 것 같습니다. 실패한 '요청'액션 (이 경우 단순히 google.com을 가져 오는 행위) 일뿐입니다.
감사합니다.
업데이트 : 업데이트를 완료 할 수 있었지만 아마도 가장 깨끗한 방법은 아닐 수 있습니다.
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = <my alexa app ID>;
var self = module.exports = {
handler : function (event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(self);
alexa.execute();
},
"TestIntent": function() {
var that = this;
var speechOutput = "Recorded Test";
request("http://www.google.com",
function(error, response,body)
{
console.log(body);
that.emit(':tell', speechOutput);
return;
}
);
}
}
에서 람다 프로그래밍 모델에 대해 자세히 알아볼 수 있습니다에서 당신은 현재 버전을 사용하고 있습니까 람다 (4.3)의? 콜백을 호출 할 때 이전 버전이 프로세스를 중단시킬 수 있는지 궁금합니다. 내가 사용하는 테스트 하니스 (node-lamdba)가 이것을 수행한다는 것을 알았습니다.이 동작은 이전 람다를 위해 설계되었고 업데이트되지 않았기 때문에 생각합니다. – Tom
또한 호출이 실패하고 본문이 비어있을 수 있습니다. 나는 정말로 기록 된 것이 아닌지 확실하게하기 위해 거기에 명시적인 로그 메시지를 붙일 것이다. 그리고 관련없는 주석,하지만 당신은 APP_ID에 alexa.appId를 설정하지 않아도, 당신은 그들이 일치하는지 확인하기로되어 있습니다. – Tom
Thanks @Tom, "this.emit"을 실행하기 전에 버그를 통해 확인한 경우 요청 기능 내에 명시 적 "I got here"라는 메시지가 표시 될 수 있습니다. 따라서 TestIntent 함수가 완료되지 않으면 콜백은 실행하고보고 할 시간이 있습니다. 그래서 나는 어떻게 든 콜백이 끝날 때까지 기다리는 this.emit을 얻을 필요가있다. – probbins222