Commit ce52f3ff authored by Navodya Pasqual's avatar Navodya Pasqual

Dialogflow backend

parent e3fa89b0
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -20,7 +20,10 @@ ...@@ -20,7 +20,10 @@
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mongoose": "^6.0.8", "mongoose": "^6.0.8",
"nodeJS": "^1.0.0", "nodeJS": "^1.0.0",
"nodemon": "^2.0.13" "nodemon": "^2.0.13",
"actions-on-google": "^2.6.0",
"dialogflow": "^0.10.2",
"dialogflow-fulfillment": "^0.6.1"
}, },
"devDependencies": { "devDependencies": {
"formidable": "^1.2.2", "formidable": "^1.2.2",
......
...@@ -4,6 +4,9 @@ const dotenv = require('dotenv'); ...@@ -4,6 +4,9 @@ const dotenv = require('dotenv');
const cors = require('cors'); const cors = require('cors');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
//Importing chatbot api
const chatbotAPI = require('./src/routes/chatbot/dialogFlow');
dotenv.config(); dotenv.config();
const app = express(); const app = express();
app.use(cors()); app.use(cors());
...@@ -45,6 +48,8 @@ app.route('/').get((req, res) => { ...@@ -45,6 +48,8 @@ app.route('/').get((req, res) => {
require('./src/routes/auth.routes')(app); require('./src/routes/auth.routes')(app);
require('./src/routes/user.routes')(app); require('./src/routes/user.routes')(app);
app.use('/api/dialogflow', chatbotAPI);
app.listen(PORT, () => { app.listen(PORT, () => {
console.log('######################################################'); console.log('######################################################');
console.log(`Server is ON and running on PORT : ${PORT}`); console.log(`Server is ON and running on PORT : ${PORT}`);
......
module.exports = {
googleProjectID: 'test-chat-bot-app-348111',
dialogFlowSessionID: 'bot-session',
dialogFlowSessionLanguageCode: 'en-US',
googleClientEmail: 'chat-bot-app-test@test-chat-bot-app-348111.iam.gserviceaccount.com',
googlePrivateKey: "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkloXDObe/iKVG\n5VShLLT8X/qP+WUuL9pqkz+CbrbPMKpWVErRomsaUpvZzUnqRGGFizy9Q7jLdtBv\nJCBAhBq3Jdaeq+a0D2qt/gz2kTodbLKdWZ4WK4dXLRu4I+VhJWpu4W8ay5gDtHz/\nB7KI762QRSUuX58gnnPb9gg5692TtTzgKO+pRLpnTB36Jwb8uIcfE8S1VnmNPdM/\nEb1XjeAEhFXBdpULq0aXrKm6bu0Vv3ON0bUzHUR3VhQR+fDYJfK7MmfxwvymXXCM\nAHReTVxuIGBUh6DSq/CrcyAZykIEewrLK3Yyyeiy/1cku2X3tG7+YGe8x0Eunvna\nmr1DaqgfAgMBAAECggEAKr4KW9Iz5VI7tccdrMOa9sWIIPaf75guzSmTPzC4WeMm\nAUhfq8RVsx7L6YqWDPgYKWGo8u/Q4EnpREup8oc8Ft8FNuyme5FbX3cP78J0SKrv\nUcyxsMk6GwoUXkQ4L/vTAZuaymcgAapQIbzigQxZUxOZ3cqoXQS5SuDAbyZRQyfN\nKbYHu6PdXxTWwl0qoA6LAitWThJjNAGmS5i33oDOkNwMNrKRpT//VpnphWd8iULu\n/MYXvBon7RY95l7ai4Tf7iVg19JBwTDHSr8FcmQ1iVNNdix14DClqnXH/G5+F92r\nWvO34nUFO6AlMbZz/Nx8mZ5A6KKfzGrBN8pZtOKLGQKBgQDmE5fURMqMm3+Jqow5\nTr7TR6593AlC8XjhACtuc00XZP2xSEU1xV7Xps92b/YLMVCZlMBDNMQp7q6DL2jT\nGMJsjv0nyIoNKafcK4DN3YeVj/TEaZrg/nn/hzJ4/0ik0EKMggakXgRbzGYavfb0\nP9KpyIfgGLN4wAboLk74DGVb1wKBgQC3IfR1GQzCQdebcfQHuqr/GzC24TuvjUOR\ntnUVURGTHibVhx36eetJOuzL734+4CWI/GnnleqEgWrCt0+ec+V2I1gI0ARRpjNy\nnaNNtNgZOjooTvuE+A3IwN29fV4KVxke65tR0TVQXSDDYQyiGi+9KVk1x2MJuCWA\nvUMIAOPM+QKBgQCyvKvp8tsr6q1k5IJ1DtC+UGSlUCg9wlv25+vVrWtJbmKLtCpY\nQJGSlPt89jO9tDz6Yw4N59MxBES8kzsrK4P3VAolOuzMlvzZ1U4GIEBxl1k+sQ/q\nFKfwNDaouyHTMBtTDrxcOtHGAv+bbNKKI37j+W5dULM0bnGvNDKTDwY7FwKBgGsN\nz2DQlvPMF6UIFVabWbCtjWmq+wAhvVkl5wXiETsGSj9SsESnFtMFPj3tL8jDsU2F\n+MbnjWOOYAGZtVJ0f7Py71ifeZbdaH/dBQS87gK5VhwQJ9pQQ4aSsE1AR0QWLFo1\n8uL+QINNHYT5a7ArTLLww/S7LPsWid3bRZ8dHg3JAoGBAINwfzZlODC0DaRjkN0O\n8NAIOVzdwP95/U3BEWsoZglaoA3NafWfzo6tFKXGFL35CXCDcjfI6TZWvZItqsUd\n2A/zR9ExY/fjTFCE5tnZj+qJgLDI6bCN/cyB5SFA1EwFn5IPUHVzwCWM2qhq35qQ\nRk6+eGP3mpMDg9Fp1fa6fnRi\n-----END PRIVATE KEY-----\n",
mongoURI: 'mongodb+srv://admin:admin123@db.i2rza.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',
}
\ No newline at end of file
const mongoose = require('mongoose');
const opinionSchema = mongoose.Schema({
name: String,
opinion: String,
email: String,
registerDate: Date
});
const Opinion = mongoose.model('Opinion', opinionSchema);
module.exports = { Opinion }
const express = require('express');
const router = express.Router();
const dialogflow = require('dialogflow');
const config = require('../../config/chatbot/config');
const projectId = config.googleProjectID
const sessionId = config.dialogFlowSessionID
const languageCode = config.dialogFlowSessionLanguageCode
const credentials={
client_email: config.googleClientEmail,
private_key: config.googlePrivateKey
}
// Create a new session
const sessionClient = new dialogflow.SessionsClient({
projectId, credentials
});
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
router.post('/textQuery', async (req, res) => {
const request = {
session: sessionPath,
queryInput: {
text: {
// The query to send to the dialogflow agent
text: req.body.text,
// The language used by the client (en-US)
languageCode: languageCode,
},
},
};
// Send request and log result
const responses = await sessionClient.detectIntent(request);
console.log('Detected intent');
const result = responses[0].queryResult;
console.log(` Query: ${result.queryText}`);
console.log(` Response: ${result.fulfillmentText}`);
res.send(result)
})
//Event Query Route
router.post('/eventQuery', async (req, res) => {
const request = {
session: sessionPath,
queryInput: {
event: {
// The query to send to the dialogflow agent
name: req.body.event,
// The language used by the client (en-US)
languageCode: languageCode,
},
},
};
// Send request and log result
const responses = await sessionClient.detectIntent(request);
console.log('Detected intent');
const result = responses[0].queryResult;
console.log(` Query: ${result.queryText}`);
console.log(` Response: ${result.fulfillmentText}`);
res.send(result)
})
module.exports = router;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment