Я создал приложение для Android, в котором, если нажать кнопку и изменить значение в базе данных Firebase (0/1), я хочу сделать это с помощью помощника Google, пожалуйста, помогите мне, я искал, но не нашел подходящего руководства, пожалуйста выручи меня
Использование Google Assistant для изменения значения базы данных Firebase
Ответы (3)
Код для этого довольно прост - для выполнения вашего веб-перехватчика вам понадобится объект базы данных 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
});
Настоящая проблема заключается в том, какого пользователя вы хотите использовать для обновления. Вы можете сделать это с помощью соединения на уровне администратора, которое может предоставить вам широкий доступ, превышающий то, что разрешено вашими правилами безопасности. Проконсультируйтесь с руководствами по аутентификации и будьте осторожны.
На самом деле я работаю над проектом с использованием веб-перехватчика Dialogflow и интегрированной базы данных Firebase. Чтобы сделать это возможным, вы должны использовать выполнение в формате JSON (вы не можете вызывать базу данных firebased таким образом, как вы это делаете)
Вот пример вызова базы данных firebase и отображения простого текста в функции. Сначала вы должны взять переменную из json .. это что-то вроде этого (в моем случае это зависит от вашего имени сущности, в моем случае это была «тема»)
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: Paraformatear JSON:
A) https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/Shared.Types/Platform
Б) https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/Shared.Types/Message#Text
И вот, наконец, образец, который очень помог !! https://www.youtube.com/watch?v=FuKPQJoHJ_g
Хороший день!
после поиска я нахожу руководство что может в этом помочь:
- нам нужно сначала создать чат-бота в dialogflow / api.pi
- Затем нужно обучить нашего бота и использовать в ответ webhook в качестве фулфилла.
- Теперь нам нужно настроить firebase-tools для отправки ответа и внесения изменений в базу данных firebase.
- Наконец, нам нужно интегрировать диалог с помощником Google с помощью 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"
});
});`