使用Google智能助理更改Firebase数据库值

时间:2018-06-08 16:04:18

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

我创建了一个Android应用程序,如果按下一个按钮并在Firebase数据库(0/1)中更改值,我想使用谷歌助手这样做,请帮帮我,我搜索出来但没有找到任何相关指南请帮帮我

3 个答案:

答案 0 :(得分:0)

执行此操作的代码非常简单 - 在您的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并小心。

答案 1 :(得分:0)

我实际上正在使用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的链接: Para formatear 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

美好的一天!

答案 2 :(得分:0)

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

  • 我们首先需要在dialogflow / api.pi上创建聊天机器人
  • 然后需要训练我们的机器人,并需要使用webhook作为完全实现 回应。
  • 现在我们需要设置firebase-tools来发送回复和执行 Firebase数据库中的更改。
  • 最后,我们需要使用google-actions将dialogflow与google Assistant集成

这是我使用的示例代码:

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