我正在尝试建立一个时间表-谷歌-行动。动作应该是在呼叫时告诉特定日期的所有主体。问题是,如何将数据永久保存在我的设备上,以便随时访问数据?
我试图在fulfillment NODE.JS-File中声明字段,但根本不起作用。(我意识到这是一个非常愚蠢的想法,因为代码不能作为“程序员”工作,所以没有编译好的东西在后台运行)。我尝试的下一件事是谷歌开发人员网站(https://developers.google.com/actions/assistant/save-data#df_nodejs)上的->代码片段1
我对对话流中的Java-Script或Node.JS或Google Actions没有任何进一步的了解,但我的老师告诉我们开发一个应用程序时,不要给出任何关于那个主题的信息。
您可以在代码片段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);
});/更新/
我现在尝试了你的代码,但它根本不起作用。谷歌解释错误的一天没有任何改变的代码(我有点困惑)和字符串(主题)也不能保存。
如果你能再看一遍我的新实现代码,告诉我哪里出了问题,那就太好了。
代码片段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);发布于 2019-04-30 03:19:10
您的主要问题是,在第一个代码片段中,它假定使用actions-on-google库而不是dialogflow-fulfillment库。
userStorage功能仅适用于谷歌上的操作,因此您需要将所有代码转换为使用actions-on-google而不是dialogflow-fulfillment。
下面是一个快速示例,说明如何调整代码以使用库。这不是一组完整的更改,但应该可以帮助您入门。
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('Stundenplan', (conv, {date}) => {
const dateIso = new Date(date);
const weekDayInt = dateIso.getDay();
let dayString = '';
let output = '';
switch (weekDayInt) {
case 0:
dayStrin = 'Sonntag';
output = conv.user.storage.sun.join(' ');
break;
// ...
}
conv.ask('This message is from the Dialogflow Cloud Function for Firebase editor');
conv.ask(new BasicCard({
title: `Dein Studenplan für ${dayString}:`,
text: `Du hast heute ${output}.`,
buttonText: 'This is a button',
buttonUrl: 'https://assistant.google.com/'
}));
conv.ask(new Suggestions('Stundenplan für heute', 'Stundenplan für morgen'))
})
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);https://stackoverflow.com/questions/55907685
复制相似问题