From f19526620b75e3143c14ecfc8954a10030b3cdfa Mon Sep 17 00:00:00 2001 From: MacBook Pro Date: Wed, 18 Oct 2017 12:07:52 +0200 Subject: [PATCH 1/3] Use the port from the configuration file --- config.js | 2 +- index.js | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config.js b/config.js index a38d135..8c65e77 100644 --- a/config.js +++ b/config.js @@ -8,7 +8,7 @@ if (process.env.NODE_ENV !== 'test') { } // HTTP Port to run our web application -cfg.port = process.env.PORT || 3000; +cfg.port = process.env.PORT || 3003; // Your Twilio account SID and auth token, both found at: // https://www.twilio.com/user/account diff --git a/index.js b/index.js index ee83d69..530a75c 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,8 @@ const bodyParser = require('body-parser'); const router = require('./src/router'); +const config = require('./config'); + // Create Express webapp const app = express(); app.use(express.static(path.join(__dirname, 'public'))); @@ -14,8 +16,7 @@ app.use(router); // Create http server and run it const server = http.createServer(app); -const port = process.env.PORT || 3000; -server.listen(port, function() { - console.log('Express server running on *:' + port); +server.listen(config.port, function() { + console.log('Express server running on *:' + config.port); }); From 4feba3ed9612dc2993c0c45871546ce9389b029b Mon Sep 17 00:00:00 2001 From: MacBook Pro Date: Wed, 18 Oct 2017 12:40:33 +0200 Subject: [PATCH 2/3] Add CORS Headers --- .gitignore | 1 + index.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/.gitignore b/.gitignore index db872f6..26519fe 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules npm-debug.log .env +.idea \ No newline at end of file diff --git a/index.js b/index.js index 530a75c..d333e50 100644 --- a/index.js +++ b/index.js @@ -9,6 +9,25 @@ const config = require('./config'); // Create Express webapp const app = express(); + +// Add headers +app.all('/*', function(req, res, next) { + // CORS headers + res.header('Access-Control-Allow-Origin', '*'); + res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); + res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Access-Control-Allow-Origin'); + res.header("Access-Control-Max-Age", "86400"); // 24 hours + + // intercept OPTIONS method + if ('OPTIONS' == req.method) { + res.send(200); + } + else { + next(); + } +}); + + app.use(express.static(path.join(__dirname, 'public'))); app.use(bodyParser.urlencoded({extended: false})); From 5242cdb0ef498f2b6767f411e826f487c732f1cc Mon Sep 17 00:00:00 2001 From: Aitorpm Date: Thu, 9 Nov 2017 10:28:29 +0100 Subject: [PATCH 3/3] Add incoming webhook --- index.js | 2 +- src/handler.js | 12 +++++++++++- src/router.js | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index d333e50..187421f 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,7 @@ app.all('/*', function(req, res, next) { res.header("Access-Control-Max-Age", "86400"); // 24 hours // intercept OPTIONS method - if ('OPTIONS' == req.method) { + if ('OPTIONS' === req.method) { res.send(200); } else { diff --git a/src/handler.js b/src/handler.js index 0c2c083..fdb4d60 100644 --- a/src/handler.js +++ b/src/handler.js @@ -4,8 +4,9 @@ const VoiceResponse = require('twilio').twiml.VoiceResponse; const nameGenerator = require('../name_generator'); const config = require('../config'); +const identity = nameGenerator(); + exports.tokenGenerator = function tokenGenerator() { - const identity = nameGenerator(); const capability = new ClientCapability({ accountSid: config.accountSid, authToken: config.authToken, @@ -44,6 +45,15 @@ exports.voiceResponse = function voiceResponse(toNumber) { return twiml.toString(); }; +exports.voiceIncoming = function voiceResponse() { + // Create a TwiML voice response + const response = new VoiceResponse(); + const dial = response.dial(); + dial.client(identity); + console.log(response.toString()) + return response.toString(); +}; + /** * Checks if the given value is valid as phone number * @param {Number|String} number diff --git a/src/router.js b/src/router.js index 154955a..0e6ec9e 100644 --- a/src/router.js +++ b/src/router.js @@ -1,6 +1,6 @@ const Router = require('express').Router; -const {tokenGenerator, voiceResponse} = require('./handler'); +const {tokenGenerator, voiceResponse, voiceIncoming} = require('./handler'); const router = new Router(); @@ -17,4 +17,9 @@ router.post('/voice', (req, res) => { res.send(voiceResponse(req.body.To)); }); +router.post('/incoming', (req, res) => { + res.set('Content-Type', 'text/xml'); + res.send(voiceIncoming()); +}); + module.exports = router;