Предупреждение, оценка Firebase Config на основе GCLOUD_PROJECT. При инициализации firebase-admin может произойти сбой - PullRequest
2 голосов
/ 13 июня 2019

Я строю бота на Dialogflow и использую Dialogflow-выполнение.Однако при каждом развертывании я получаю сообщение об ошибке:

Warning, estimating Firebase Config based on GCLOUD_PROJECT. Initializing firebase-admin may fail

Я пытаюсь получить доступ к внешнему API из кода.Это правильный способ сделать это?Или ошибка связана с какой-то другой причиной?

PS: я новичок в Dialogflow.

Вот файл index.js:

'use strict';

const functions = require('firebase-functions');
const request = require('request');
const admin = require('firebase-admin');
admin.initializeApp();
const {dialogflow} = require('actions-on-google');
const app =dialogflow();

function helper() {
   var username = '<USER_NAME>',
     password = '<PASSWORD>',
     sugar_id = '<SUGAR_ID>',
     from_date = '2019-06-10',
     to_date = '2019-06-11',
     url1 = '<SOME_URL_HERE>',
     auth = "Basic " + new Buffer.from(username + ":" + password).toString("base64");
  return new Promise((resolve, reject)=> {
    request(
         {
             url : url1,
             headers : {
                 "Authorization" : auth,
                 'x-api-key': '<API_KEY>',
                 'x-source': '<X_SOURCE>'
             }
         },
         (error, response, body) => {
             if(error) throw error;
            console.log('success 1');
             // console.log(JSON.parse(response.body));
             var obj = JSON.parse(body);
             if(obj.data!==null) {
                 // console.log(obj.data[0].booking_id);
                 var latest_booking_id = obj.data[0].booking_id;
                 var url2 = '<SOME_URL_HERE>';

                 request(
                     {
                         url: url2,
                         headers : {
                             "Authorization" : auth,
                             'x-api-key': '<API_KEY>',
                             'x-source': '<X_SOURCE>'
                         }
                     },
                     (error, response, body) => {
                         if(error) throw error;
                       console.log('success 2');
                         var obj = JSON.parse(body);
                       if(error) reject(error);
                       console.log(obj);
                       resolve(obj);
                     }
                 );
             } else {
                 console.log('No booking found.');
             }

         }
     );

  });
}   

app.intent('customer details', (conv) => {
  helper().then((res)=> {
    conv.ask(res);
  }).catch((err)=> {
    throw (err);
  });
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

Файл Package.json

{
  "name": "dialogflowFirebaseFulfillment",
  "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "8"
  },
  "scripts": {
    "start": "firebase serve --only functions:dialogflowFirebaseFulfillment",
    "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment"
  },
  "dependencies": {
    "actions-on-google": "^2.2.0",
    "firebase-admin": "^5.9.1",
    "firebase-functions": "^2.0.2",
    "request": "^2.88.0"
  }
}

1 Ответ

1 голос
/ 13 июня 2019

Этот вопрос может помочь: Создание HTTP-запроса POST из выполнения в Dialogflow .Процитируем ответ Узника:

Самый простой способ использовать обещания с сетевыми вызовами - это использовать пакет, такой как request-обещание-native .Используя это, ваш код может выглядеть примерно так:

var options = {
  uri: url,
  method: 'POST',
  json: true,
  headers: { ... }
};
return rp(options)
  .then( body => {
    var val = body.someParameter;
    var msg = `The value is ${val}`;
    agent.add( msg );
  });

Я заметил, что вам нужна библиотека actions-on-google.Если вы создаете действие для Google Assistant, может быть полезно просмотреть кодовые метки Google для клиентской библиотеки Actions в Google Actions.

...