Dialogflow es 警告,根据GCLOUD\u项目估算Firebase配置。初始化firebase管理员可能会失败

Dialogflow es 警告,根据GCLOUD\u项目估算Firebase配置。初始化firebase管理员可能会失败,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我正在Dialogflow上构建一个机器人,我正在使用Dialogflow实现。但是,无论何时部署,我都会收到以下错误: Warning, estimating Firebase Config based on GCLOUD_PROJECT. Initializing firebase-admin may fail 我试图从代码中访问外部API。这样做对吗?或者错误是由于其他原因造成的 注:我是Dialogflow的新手 以下是index.js文件: 'use strict'; const

我正在Dialogflow上构建一个机器人,我正在使用Dialogflow实现。但是,无论何时部署,我都会收到以下错误:

Warning, estimating Firebase Config based on GCLOUD_PROJECT. Initializing firebase-admin may fail
我试图从代码中访问外部API。这样做对吗?或者错误是由于其他原因造成的

注:我是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);
这个问题可能会有帮助:。引用囚犯的回答:

在网络调用中使用承诺最简单的方法是使用包 比如。使用此选项,您的代码可能看起来 比如:

我注意到您需要在google库上执行
操作。如果您正在为Google助手构建一个操作,那么在Google客户端库中查看操作可能会有所帮助

{
  "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"
  }
}
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 );
  });