下面是我正在调用的函数,但是每次我遇到错误以下时 错误-格式错误的响应 由于语音响应为空,无法将Dialogflow响应解析为AppResponse。
$是完整的代码
function callExternalAPI () {
return new Promise((resolve, reject) => {
let path = 'path';
console.log('API Request: ' + path);
http.get({host: host, path: path}, (res) => {
let body = '';
res.on('data', (d) => { body += d; });
res.on('end', () => {
let response = JSON.parse(body);
let output = 'response';
console.log(output);
resolve(output);
});
res.on('error', (error) => {
console.log(`Error calling the weather API: ${error}`);
reject();
});
});
let intentMap = new Map();
intentMap.set('CardView',callExternalAPI);
agent.handleRequest(intentMap);
});
答案 0 :(得分:0)
内联编辑器使用Cloud Functions for Firebase。默认情况下,您的项目使用Firebase“ Spark”计划,该计划将网络连接限制为仅与Google服务相关。
由于连接被拒绝,因此if (err)
块被触发,并且您没有指定在发生这种情况时将其发送回用户的响应,因此您将获得“空语音响应”错误。
最简单的解决方案是升级到paid plan,例如“ Blaze”计划,该计划要求您注册信用卡,但具有免费套餐,因此您无需为基本操作级别,通常涵盖您的开发和测试,甚至可能涵盖轻量级产品的使用。
如果发生错误,您也应该设置响应。