-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
100 lines (77 loc) · 2.42 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
'use strict';
const cors = require('cors');
const express = require('express');
const CSRF = require('csurf');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const AWS = require('aws-sdk');
const lexRuntime = new AWS.LexRuntime();
const server = express();
let api = createApiRouter();
server.use(cors());
server.use(express.urlencoded());
server.use(express.json());
// create application/x-www-form-urlencoded parser
// let urlencodedParser = bodyParser.urlencoded({ extended: false });
const sessionOptions = {
table: process.env.SESSIONS_TABLE,
AWSConfigJSON: {
region: 'us-east-1'
},
client: new AWS.DynamoDB({})
};
const SessionStore = require('connect-dynamodb')({session: session});
server.use(cookieParser());
server.use(session({
store: new SessionStore(sessionOptions),
secret: '@alexa',
resave: false,
cookie: {
secure: true,
maxAge: 900000
},
saveUninitialized: false
}));
server.use('/reply', api);
const csrfProtection = CSRF({ cookie: true });
server.use(csrfProtection);
// endpoints
server.get('/', (req, res, next) => {
res.cookie('XSRF-TOKEN', req.csrfToken());
res.status(200).json({
security: req.csrfToken()
})
});
function createApiRouter () {
let router = new express.Router();
router.post('*', (req, res, next) => {
res.set('Access-Control-Allow-Origin', 'https://kijanii.co.ke');
res.set('Access-Control-Allow-Credentials', true);
console.log(req.body);
let text = req.body.message;
let userIdentifier = req.body.uid;
if (typeof text === "string") {
let pars = {
botAlias: '$LATEST', /* required, has to be '$LATEST' */
botName: 'ScheduleLawAppointments', /* required, the name of you bot */
userId: userIdentifier, /* required, arbitrary identifier */
inputText: text,
requestAttributes: {
},
sessionAttributes: {
}
};
lexRuntime.postText(pars).promise()
.then(data => {
console.log(data);
res.status(200).json({
message: data.message
})
}).catch(err =>
console.log(err)
);
}
});
return router
}
module.exports = server;