我正在尝试使用HTTP.request将Alexa技能(JS / Lambda)发布到REST服务器。我试图破解一些简单的东西来完成工作。我想我错过了一些明显的东西。
我有两个问题:
口语与打字的话语。如果我在亚马逊服务模拟器中键入我的插槽值("五"),则该值将发布到我的服务器,应该是这样。但是,如果我说话相同的话语,即使Alexa正确识别单词(通过查看应用中的卡片确认),该值也不会发布,她说,"我可以&找到问题的答案。"
在何处以及如何调用输出功能。我想我需要添加类似下面两行的内容,但根据我在当前代码中添加它的位置,Alexa要么在不更新节点的情况下做出响应,要么不做任何事情。
var text = 'I have updated the value to' + targetSlot;
output( text, context );
posting test
{
"intents": [ {
"intent": "writeTarget",
"slots": [ {
"name": "Target",
"type": "NUMBER"
} ]
}]
}
writeTarget {Target}
我正在使用每个示例here中都可以找到的AlexaSkill.js文件。
我的index.js看起来像这样。 URL,req.write字符串等替换为****。
exports.handler = function( event, context ) {
var APP_ID = undefined;
const http = require( 'http' );
var AlexaSkill = require('./AlexaSkill');
var options = {
host: '****.com',
path: '/****',
port: '****',
method: 'PUT'
};
callback = function(response) {
var str = ''
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
});
};
var targetSlot = event.request.intent.slots.Target.value;
var req = http.request(options, callback);
req.write("****");
req.end();
};
function output( text, context ) {
var answer = {
outputSpeech: {
type: "PlainText",
text: text
},
card: {
type: "Simple",
title: "System Data",
content: text
},
shouldEndSession: true
};
context.succeed( { answer: answer } );
}
提前感谢您的帮助。
更新帖子以添加日志:
{
"errorMessage": "Process exited before completing request"
}
TypeError: Cannot read property 'intent' of undefined
at exports.handler (/var/task/index.js:24:35)
The response is invalid