【发布时间】:2017-06-15 19:56:07
【问题描述】:
我正在创建一个 Alexa 技能(Lambda 函数)node.js - 我在将“邮政编码”常量传递给 getLocation 回调函数时遇到问题,如果我输出邮政编码它将起作用。
getLocation 函数没有返回任何内容,我猜这是因为邮政编码参数未正确传递到函数中。
这个功能没有问题,因为如果我更换了
var url = "localhost/api.php?zip="+zipcode;
与
var url = "localhost/api.php?zip=41242";或任何有效的邮政编码。
我做错了什么?
let zipcode = request.intent.slots.zipcode.value;
getLocation(function(location, err) {
if(err) {
context.fail(err);
} else {
options.speechText += location.distance + " miles away,
You can get there by going to " + location.street_address + " in " + location.city + ", " + location.state;
options.endSession = true;
context.succeed(buildResponse(options));
}
});
function getLocation(callback, zipcode) {
var url = "localhost/api.php?zip="+zipcode;
var req = http.get(url, function(res) {
var body = "";
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
body = body.replace(/\\/g, '');
var location = JSON.parse(body);
callback(location);
});
res.on('error', function(err) {
callback('', err);
});
}); }
【问题讨论】:
-
当您调用 getLocation 时,您只传递一个参数 - 回调 - 所以 zipcode 参数将始终为 undefined .
-
@JulianGoacher 那我该如何处理呢?
-
好吧,如果邮政编码类似于“abc123”,那么您想将函数调用更改为
getLocation(function(location, err) { /*... callback code ... */, "abc123")- 即将它作为函数调用的第二个参数包含在内。 -
成功了,谢谢! @JulianGoacher
标签: node.js lambda alexa-skill