【发布时间】:2019-05-10 09:03:09
【问题描述】:
首先,我是 Javascript 的初学者,所以如果我的信息中有任何不确定或不明确之处,请随时纠正我。
我尝试创建一个操作来支持我的 IBM Watson Assistant。一旦被调用,该操作应该从 http 获取一些信息并返回一些答案。
“get”操作是 Webhook 的一部分,通过 Heroku 成功部署为对 Dialogflow 的支持。我只是稍微改变了一下,让答案更容易。
function main(req){
const http = require('http');
const API_KEY = '85324cac';
const prodname = req.prodname;
const reqUrl = encodeURI(`http://www.omdbapi.com/?t=${prodname}&apikey=${API_KEY}`);
http.get(reqUrl, (responseFromAPI) => {
let completeResponse = '';
responseFromAPI.on('data', (chunk) => {
completeResponse += chunk;
});
responseFromAPI.on('end', () => {
const movie = JSON.parse(completeResponse);
let dataToSend = prodname ;
dataToSend += (typeof movie.Title === "undefined") ? `Sorry the film is not in our database` : `${movie.Title} is a ${movie.Actors} starer ${movie.Genre} movie, released in ${movie.Year}. It was directed by ${movie.Director}.`;
return {answer: dataToSend};
});
});
//return {answer: dataToSend};
}
我期待“返回”操作后的答案,但它只显示空值。我很确定该操作永远不会进入“http.get”部分。当我删除 // 并调用代码时,它返回以下消息:“dataToSend 未定义”;如果我保持代码原样(带有注释),则不会弹出错误。
omdapi 是免费的,但托管在美国,以防万一。
有什么想法吗?无论如何,提前致谢。
【问题讨论】:
标签: node.js get ibm-watson watson-assistant