繁体   English   中英

通过api.ai的函数回调获取json正文

[英]Get json body through function callback for api.ai

我正在使用Firebase托管云功能,因为许多功能(大约每个功能)都需要发出http请求并获取json主体以从中获取数据。 但是,回调对我而言效果不佳,我已经搜索了一些现有答案,但仍然对此感到困惑。 这是代码段,选项是在之前声明的,如果我不将请求放入get_request_handler中,它将正常工作。

function get_request_handler(assistant, input_url, callback) {
  req(options, function (error, response, body) {
     if (!error && response.statusCode == 200) {
      var cookie = req.cookie('BPMSTS=' + body );
      var headers = {
          'Content-Type': 'application/json',
          'Cookie': cookie
      };
      var option = {
          url: input_url,
          method: 'GET',
          headers: headers
      }
      req(option, function(error, res, body) {
          assistant.ask(input_url);
          if (!error && res.statusCode == 200) {
              callback(JSON.parse(body));
          } else {
              assistant.ask('inner request with error code: ' + (res.statusCode).toString());
          }
      });
     } else {
      assistant.ask('outer request with error code: ' + (response.statusCode).toString());
    }
  });
}

我将函数调用如下:

get_request_handler(assistant, workflow_url, function(cur_json){assistant.ask(cur_json);});

现在的问题是无法在get_request_handler函数中发出第一个请求。 换句话说,它仅进入get_request_handler而不进入该请求正文。 如果我不创建get_request_handler并保留req(options,function(error,response,body){...},那么它没有任何问题。对此有什么想法吗?

注意:我刚刚检查了Firebase日志,它说了这一行:req(选项,函数(错误,响应,正文),它得到TypeError:分配给常量变量,位于get_request_handler(/user_code/index.js:116:13)

您在这里遇到了很多问题,但是最基本的问题是您试图多次响应用户响应来调用assistant.ask() 调用assistant.ask() ,将无法再发送任何响应,也不会处理对ask()的其他调用。

您似乎正在使用它进行调试。 当您应该使用console.log()时,这似乎是一个糟糕的选择。

您还表示您正在使用Firebase Functions。 请注意,如果您使用的是免费方案,则从Firebase函数中调出电话将受到限制。 如果您使用的是付费计划中的一种,则没有任何限制,并且有免费的套餐,对于测试而言,该套餐应绰绰有余。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM