javascript 用于连接DialogFlow和Firebase实时数据库的云功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 用于连接DialogFlow和Firebase实时数据库的云功能相关的知识,希望对你有一定的参考价值。
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const DialogflowApp = require('actions-on-google').DialogflowApp;
admin.initializeApp(functions.config().firebase);
exports.dialogflowWithRealtimeDetabase = functions.https.onRequest((request, response) => {
if (!request.body.result) {
console.log('Invalid Request');
return response.status(400).end('Invalid Webhook Request (expecting v1 or v2 webhook request)');
}
let action = request.body.result.action;
const parameters = request.body.result.parameters;
const requestSource = (request.body.originalRequest) ? request.body.originalRequest.source : undefined;
const path = "/faceName";
// realtime databaseにデータを突っ込む
admin.database().ref(path).set(parameters.change_name);
const googleAssistantRequest = 'google';
const app = new DialogflowApp({request: request, response: response});
const actionHandlers = {
'input.welcome': () => {
if (requestSource === googleAssistantRequest) {
sendGoogleResponse('Hello, Welcome to my Dialogflow agent!');
} else {
sendResponse('Hello, Welcome to my Dialogflow agent!');
}
},
'input.unknown': () => {
if (requestSource === googleAssistantRequest) {
sendGoogleResponse('I\'m having trouble, can you try that again?');
} else {
sendResponse('I\'m having trouble, can you try that again?');
}
},
'default': () => {
if (requestSource === googleAssistantRequest) {
let responseToUser = {
speech: 'シャキーン',
text: 'シャキーン'
};
sendGoogleResponse(responseToUser);
} else {
let responseToUser = {
speech: 'シャキーン',
text: `シャキーン`
};
sendResponse(responseToUser);
}
}
}
if (!actionHandlers[action]) {
action = 'default';
}
actionHandlers[action]();
function sendGoogleResponse (responseToUser) {
if (typeof responseToUser === 'string') {
app.ask(responseToUser);
} else {
let googleResponse = app.buildRichResponse().addSimpleResponse({
speech: responseToUser.speech || responseToUser.displayText,
displayText: responseToUser.displayText || responseToUser.speech
});
if (responseToUser.googleRichResponse) {
googleResponse = responseToUser.googleRichResponse;
}
if (responseToUser.googleOutputContexts) {
app.setContext(...responseToUser.googleOutputContexts);
}
app.ask(googleResponse);
}
}
function sendResponse (responseToUser) {
if (typeof responseToUser === 'string') {
let responseJson = {};
responseJson.speech = responseToUser;
responseJson.displayText = responseToUser;
response.json(responseJson);
} else {
let responseJson = {};
responseJson.speech = responseToUser.speech || responseToUser.displayText;
responseJson.displayText = responseToUser.displayText || responseToUser.speech;
responseJson.data = responseToUser.data;
responseJson.contextOut = responseToUser.outputContexts;
response.json(responseJson);
}
}
});
以上是关于javascript 用于连接DialogFlow和Firebase实时数据库的云功能的主要内容,如果未能解决你的问题,请参考以下文章
“流”的所有声明必须具有相同的修饰符 api-ai-javascript - Dialogflow
javascript Dialogflow示例自定义有效负载
Expo 中用于 React Native 的 Dialogflow API 聊天机器人
Dialogflow 使用 Firebase 连接到 MQTT 代理?
聊天机器人開發好消息!!DIALOGFLOW與微信的天作之合!!
如何从网页访问 Dialogflow V2 API?