Dialogflow Node.js не получает значение https.get внутри app.inent - PullRequest
0 голосов
/ 16 декабря 2018

У меня возникли проблемы с получением значения, возвращаемого моей функцией https.get внутри моего диалога намерения закрыть диалог.Независимо от того, выполняю ли я этот вызов в app.intent или передаю его внешнему вызову, он не выполняется.Я новичок в node.js, но раньше использовал angular.js и javascript, но не смог завершить беседу ответом.Эмулятор Google Actions выдает мне ошибку

MalformedResponse Ожидаемые_инвенты [0] .input_prompt.rich_initial_prompt: 'rich_response' должен содержать хотя бы один элемент.

Ниже приведен мой код:

app.intent('mywebhook', (conv, params) => {
    const stateName = params['geo-state-us'];
    console.log("My State is " + stateName);
    var pathString = 'api path' + encodeURIComponent(stateName);

    var request = https.get({
        host: 'www.mydomainame.com',
        path: pathString
    }, function (response){
        var json = "";

        response.on('data', function(chunk) {
            json += chunk;

        });

        response.on('end', function(){
            var jsonData = JSON.parse(json);
            var myfirstvar = jsonData[0].firstvar;
            var chat = "the value of first var is " + chat;
            console.log(chat); // this works fine
            conv.close(chat);
        });

    }).on('error', (e) => {
        console.error(e);
    });


}

Я даже пытался сделать conv.close (chat) снаружи и JSON.stringify (request), чтобы получить значение myfirstvar, но ничего не получалось.Целый день провел, пробуя разные вещи, но безрезультатно.

1 Ответ

0 голосов
/ 16 декабря 2018

Попробуйте реорганизованный код ниже (и прокомментируйте, работает ли он или нет):

app.intent('mywebhook', myWebHookFunction);

function myWebHookFunction(conv, params) {

  return new Promise(function (resolve, reject) {

    const stateName = params['geo-state-us'];
    console.log("My State is " + stateName);
    var pathString = 'api path' + encodeURIComponent(stateName);

    var request = https.get({
      host: 'www.mydomainame.com',
      path: pathString
    }, function (response) {
      var json = "";

      response.on('data', function (chunk) {
        json += chunk;

      });

      response.on('end', function () {
        var jsonData = JSON.parse(json);
        var myfirstvar = jsonData[0].firstvar;
        var chat = "the value of first var is " + chat; // chat or myfirstvar?
        console.log(chat); // this works fine 
        conv.close(chat);
        resolve();
      });

    }).on('error', (e) => {
      console.error(e);
      reject();
    });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...