使用DialogFlow中的内联编辑器进行http请求调用

时间:2019-01-29 11:40:39

标签: node.js dialogflow

下面是我正在调用的函数,但是每次我遇到错误以下时 错误-格式错误的响应 由于语音响应为空,无法将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);
});

1 个答案:

答案 0 :(得分:0)

内联编辑器使用Cloud Functions for Firebase。默认情况下,您的项目使用Firebase“ Spark”计划,该计划将网络连接限制为仅与Google服务相关。

由于连接被拒绝,因此if (err)块被触发,并且您没有指定在发生这种情况时将其发送回用户的响应,因此您将获得“空语音响应”错误。

最简单的解决方案是升级到paid plan,例如“ Blaze”计划,该计划要求您注册信用卡,但具有免费套餐,因此您无需为基本操作级别,通常涵盖您的开发和测试,甚至可能涵盖轻量级产品的使用。

如果发生错误,您也应该设置响应。