Использовать модуль запросов HTTP GET Firebase Function Node.js

Я использую тарифный план функций Firebase Cloud (!) для веб-перехватчика для действий Google. Я пытаюсь реализовать HTTP GET с модулем запроса. Я установил модуль с запросом на установку npm и правильно развернул. Я хочу использовать Google Maps Distance-Matrix API.

По некоторым причинам я вообще не могу использовать модуль запроса. В журнале я не вижу ни «ОШИБКА в GET», ни «УСПЕШНО». Есть идеи, в чем может быть проблема?

// Handle the Dialogflow intent named 'Default Welcome Intent'.
app.intent('Default Welcome Intent', (conv) => {

  var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC&destinations=New+York+City,NY&key=AIzaSyBich-7OBAxvtAwX5XnHQyJ7xZiJ8libVQ";

  request({url: url, json: true}, (err, resp, body) => {
    if (err) {
      console.log('ERROR in GET');
      conv.ask('ERROR in GET');
    }
    else { 
      conv.ask('beeing SUCCESSFULL');
      console.log('beeing SUCCESSFULL');
    }
  })

Заранее спасибо и с наилучшими пожеланиями. ОлиДев


person Oli Dev    schedule 11.11.2018    source источник


Ответы (1)


Здесь, когда вы выполняете асинхронную работу внутри функции-обработчика, вы должны вернуть обещание, которое выполняет эту работу, потому что в противном случае будет пустой ответ и ошибка. так

app.intent('Default Welcome Intent', (conv) => {
     return Promise(function(resolve,reject){
          request({url: url, json: true}, (err, resp, body) => {
               if (err) {
                  console.log('ERROR in GET');
                  conv.ask('ERROR in GET');
               }else { 
                  conv.ask('beeing SUCCESSFULL');
                  console.log('beeing SUCCESSFULL');
               }
               resolve()
          })   
     })
})

Надеюсь, что это работает для вас.

person siddhant sankhe    schedule 12.11.2018
comment
я получаю сообщение об ошибке: должен быть установлен MalformedResponse 'final_response'. - person Oli Dev; 12.11.2018
comment
что говорится в журналах firebase?, и регистрирует ли он console.log заявления - person siddhant sankhe; 13.11.2018
comment
Здесь вы можете увидеть журнал ошибок. Он НЕ регистрирует операторы console.log. drive.google.com/file/d/1ziUdFBfn5QZugEVyLYBA_Ye7JyyW-qq1/ - person Oli Dev; 14.11.2018