错误:node.js webhook中的getaddrinfo ENOTFOUND用于对话框流

时间:2018-05-27 18:45:44

标签: node.js webhooks dialogflow

我正在尝试按照对话框流程教程。我已经设置了一个node.js webhook,它是从Dialogflow调用的,在我调用api的webhook代码中。但是,我的node.js webhook正在说"错误:getaddrinfo ENOTFOUND"。当我在可视代码中运行它但在通过DialogFlow调用时无法在nodejs webhook中找到api时,这可以正常工作。事实上,从Dialogflow调用它似乎使它无法正常工作。

我花了很多时间在这上面,并且预先发现DialogFlow不能使用https,因为它是一个自签名证书,因此我放了一个azure函数,所以webhook调用azure函数然后是azure函数调用我需要的api。 很抱歉很长的帖子......

这是node.js代码:

'use strict';
const http = require('http');
var request = require('request');

const apiUrl ="https://myapi";
exports.saledurationWebhook = (req, res) => {
  // Get the city and date from the request
 // let city = req.body.queryResult.parameters['geo-city']; // city is a required param
let city = "sdjk"; 
  // Call the weather API
  callSalesDurationApi(city).then((output) => {
    res.json({ 'fulfillmentText': output }); // Return the results of the weather API to Dialogflow
  })
  .catch((err) => {
    console.log(err);

    //res.json({ 'fulfillmentText': `I don't know the sales duration is but I hope it's quick!` });
    res.json({ 'fulfillmentText': err.message});

  })
  ;
};

function callSalesDurationApi(city) {
  return new Promise((resolve, reject) => {

    console.log('API Request: ' + apiUrl);

    var myJSONObject = {
      "Inputs": "stuff"
    };

    request({
      url: apiUrl,
      method: "POST",
      json: true,   // <--Very important!!!
      body: myJSONObject
    }, function (error, response, body) {

      console.log("successfully called api");
      let output = "Current conditions in the " + body;

      console.log(output);
      console.log(body);
      resolve(output);

    });
  });
}

有谁知道为什么会这样?或者我可以采取哪些进一步的调查措施?我已经看过webhook和天蓝色功能的隐藏。

任何帮助都会非常感激地收到,我已经浪费了很多天。如果这是一个重复的问题,那么我很抱歉,我试图在这个问题上寻找现有的答案。

谢谢劳拉

1 个答案:

答案 0 :(得分:1)

我在https://stackoverflow.com/a/46692487/7654050

找到了这个问题

这是因为我没有为这个项目设定账单。我认为它已经设置好,因为它在我的工作帐户上。