【问题标题】:Using Google Assistant Change Firebase Database Value使用 Google Assistant 更改 Firebase 数据库值
【发布时间】:2018-11-18 17:48:47
【问题描述】:

我创建了一个 android 应用程序,如果在其中按下按钮并且 Firebase 数据库 (0/1) 中的值发生变化,我想使用谷歌助手执行此操作,请帮帮我,我搜索了但没有找到相关指南请帮帮我

【问题讨论】:

    标签: firebase-realtime-database actions-on-google dialogflow-es google-assist-api


    【解决方案1】:

    执行此操作的代码非常简单 - 在您的 webhook 实现中,您需要一个 Firebase 数据库对象,我在下面将其称为 fbdb。在您的 Intent 处理程序中,您将获得对要更改的位置的引用并进行更改。

    在 Javascript 中,这可能看起来像这样:

    app.intent('value.update', conv => {
      var newValue = conv.prameters.value;
      var ref = fbdb.ref('path/to/value');
      return ref.set(newValue)
        .then(result => {
          return conv.ask(`Ok, I've set it to ${newValue}, what do you want to do now?`);
        })
        .catch(err => {
          console.error( err );
          return conv.close('I had a problem with the database. Try again later.');
        });
      return 
    });
    

    您遇到的真正问题是您希望使用哪个用户来进行更新。您可以使用管理员级别的连接来执行此操作,这可以为您提供超出安全规则允许范围的广泛访问权限。请咨询the authentication guides并小心。

    【讨论】:

      【解决方案2】:

      我实际上正在使用 Dialogflow webhook 和集成的 Firebase 数据库进行项目。为了使这成为可能,您必须使用 JSON 格式的实现(您不能以您的方式调用 firebasedatabase)

      这是一个调用 firebase 数据库并在函数上显示简单文本的示例。 首先,您必须从 json 中获取变量 .. 它类似于这个(在我的情况下,这取决于您的实体名称,在我的情况下是“tema”)

      var concepto = request.body.queryResult.parameters.tema;
      

      然后在你的函数中:

          'Sample': () => {
       db.child(variable).child("DESCRIP").once('value', snap => {
       var descript = snap.val(); //firebasedata
                let responseToUser = {
                    "fulfillmentMessages": [
                        { //RESPONSE FOR WEB PLATFORM===================================
                            'platform': 'PLATFORM_UNSPECIFIED',
                            "text": {
                                "text": [
                                    "Esta es una respuesta por escritura de PLATFORM_UNSPECIFIED" + descript;
                                ]
                            },
                        }
                    ]
                }
                sendResponse(responseToUser); // Send simple response to user
       });
            },
      

      这些是格式化 json 的链接: 对格式 JSON:

      A)https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/Shared.Types/Platform

      B)https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/Shared.Types/Message#Text

      最后,这是一个很有帮助的样本!! https://www.youtube.com/watch?v=FuKPQJoHJ_g

      美好的一天!

      【讨论】:

        【解决方案3】:

        搜索后我发现guide 可以帮助解决这个问题:

        • 我们需要先在 dialogflow/api.pi 上创建聊天机器人
        • 然后需要训练我们的机器人并需要使用 webhook 作为填充 回应。
        • 现在我们需要设置 firebase-tools 来发送回复和执行 Firebase 数据库的变化。
        • 最后我们需要使用 google-actions 将 dialogflow 与 google 助手集成

        这是我使用的示例代码:

        `var admin = require('firebase-admin');
        const functions = require('firebase-functions');
        admin.initializeApp(functions.config().firebase);
        var database = admin.database();
        // // Create and Deploy Your First Cloud Functions
        // // https://firebase.google.com/docs/functions/write-firebase-functions
        //
        exports.hello = functions.https.onRequest((request, response) => {
        let params = request.body.result.parameters;
        database.ref().set(params);
        response.send({
        speech: "Light controlled successfully"
        });
        });`
        

        【讨论】:

          猜你喜欢
          • 2019-04-08
          • 1970-01-01
          • 2017-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-27
          相关资源
          最近更新 更多