Я пытаюсь составить расписание-Google-Action. Акция должна сообщать всем субъектам определенного дня при звонке.
Проблема в том, как мне постоянно сохранить данные на моем устройстве для доступа к данным в любое время?
Я пытался объявить поля в файле NODE.JS выполнения, но это не сработало вообще. (Я понял, что это была действительно глупая идея, так как код не работает как «программа», поэтому в фоновом режиме не работает скомпилированный материал).
Следующим, что я попробовал, был фрагмент кода на сайте Google-Developer (https://developers.google.com/actions/assistant/save-data#df_nodejs) -> Snippet 1
У меня нет никаких дополнительных знаний о Java-Script или Node.JS или Google Actions в Dialogflow, но мой учитель сказал нам разработать приложение, не предоставляя никакой информации по этой теме.
Вы можете увидеть мой код выполнения в фрагменте 2
Фрагмент 1
function simpleResponse(conv) {
conv.user.storage.count = 1;
conv.ask('When is your birthday?');
}
Фрагмент 2
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
/* FUNCTIONS */
function getSubjects(agent) {
const date = agent.parameters.date;
const dateIso = new Date(date);
const weekDayInt = dateIso.getDay();
var dayString = '';
switch (weekDayInt){
case 0: dayString='Sonntag';
var output = agent.user.storage.sun.join(' ');
break;
case 1: dayString='Montag';
var output = agent.user.storage.mon.join(' ');
break;
case 2: dayString='Dienstag';
var output = agent.user.storage.tue.join(' ');
break;
case 3: dayString='Mittwoch';
var output = agent.user.storage.wed.join(' ');
break;
case 4: dayString='Donnerstag';
var output = agent.user.storage.thu.join(' ');
break;
case 5: dayString='Freitag';
var output = agent.user.storage.fri.join(' ');
break;
case 6: dayString='Samstag';
var output = agent.user.storage.sat.join(' ');
break;
}
agent.add(`This message is from Dialogflow's Cloud Functions for Firebase editor!`);
agent.add(new Card({
title:`Dein Stundenplan für `+dayString+`:`,
//imageUrl: 'https://developers.google.com/actions/images/badges/XPM_BADGING_GoogleAssistant_VER.png',
text: 'Du hast heute'+output+' .',
buttonText: 'This is a button',
buttonUrl: 'https://assistant.google.com/'
})
);
agent.add(new Suggestion(`Stundenplan für heute`));
agent.add(new Suggestion(`Stundenplan für morgen`));
}
function setSubject(agent){
const subject = agent.parameters.subject;
const date = agent.context.get('date');
const dateIso = new Date(date);
const weekDayInt = dateIso.getDay();
var dayString = '';
switch (weekDayInt){
case 0: dayString='Sonntag';
agent.user.storage.sun.push(subject);
break;
case 1: dayString='Montag';
agent.user.storage.mon.push(subject);
break;
case 2: dayString='Dienstag';
agent.user.storage.tue.push(subject);
break;
case 3: dayString='Mittwoch';
agent.user.storage.wed.push(subject);
break;
case 4: dayString='Donnerstag';
agent.user.storage.thu.push(subject);
break;
case 5: dayString='Freitag';
agent.user.storage.fri.push(subject);
break;
case 6: dayString='Samstag';
agent.user.storage.sat.push(subject);
break;
}
}
let intentMap = new Map();
intentMap.set('Stundenplan', getSubjects);
intentMap.set('WhichSubject', setSubject);
// intentMap.set('your intent name here', yourFunctionHandler);
// intentMap.set('your intent name here', googleAssistantHandler);
agent.handleRequest(intentMap);
});
/////
ОБНОВИТЬ
/////
Я сейчас попробовал ваш код, но он вообще не работал. Google неверно истолковывает этот день без каких-либо изменений кода (я немного запутался), и строку (без тем) также нельзя сохранить.
Было бы здорово, если бы вы снова посмотрели на мой новый код выполнения и сказали, что не так.
Фрагмент 3
'use strict';
const functions = require('firebase-functions');
const {dialogflow, BasicCard, Suggestions} = require('actions-on-google');
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
const app = dialogflow();
app.intent('GetTimeTable', (conv, {date}) => {
const dateIso = new Date(date);
const weekDayInt = dateIso.getDay();
let dayString = '';
let output = '';
switch (weekDayInt) {
case 0:
dayString = 'Sonntag';
output = conv.user.storage.sun;
break;
case 1:
dayString='Montag';
output = conv.user.storage.mon;
break;
case 2:
dayString='Dienstag';
output = conv.user.storage.tue;
break;
case 3:
dayString='Mittwoch';
output = conv.user.storage.wed;
break;
case 4:
dayString='Donnerstag';
output = conv.user.storage.thu;
break;
case 5:
dayString='Freitag';
output = conv.user.storage.fri;
break;
case 6:
dayString='Samstag';
output = conv.user.storage.sat;
break;
}
conv.ask(`Du hast am ${dayString} ${output}`);
conv.ask(new BasicCard({
title: `Dein Studenplan für ${dayString}:`,
text: `Du hast ${dayString} ${output}.`,
}));
});
app.intent('WhichSubject', (conv, {date, subject}) => {
const dateIso = new Date(date);
const weekDayInt = dateIso.getDay();
let dayString = '';
//conv.user.storage.sun = 'Deutsch';
switch (weekDayInt){
case 0:
dayString='Sonntag';
conv.user.storage.sun = ''+subject;
break;
case 1:
dayString='Montag';
conv.user.storage.mon = ''+subject;
break;
case 2:
dayString='Dienstag';
conv.user.storage.tue = subject;
break;
case 3:
dayString='Mittwoch';
conv.user.storage.wed = subject;
break;
case 4:
dayString='Donnerstag';
conv.user.storage.thu = subject;
break;
case 5:
dayString='Freitag';
conv.user.storage.fri = subject;
break;
case 6:
dayString='Samstag';
conv.user.storage.sat = subject;
break;
}
conv.ask(`Am ${dayString} das Fach ${subject}.`);
conv.ask(new BasicCard({
title: `Neu gespeichert:`,
text: `Am ${dayString} das Fach ${subject}.`,
}));
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);