diff options
| author | Ben Beltran <ben@nsovocal.com> | 2017-02-19 02:04:42 -0600 |
|---|---|---|
| committer | Ben Beltran <ben@nsovocal.com> | 2017-02-19 02:04:42 -0600 |
| commit | b0b2aee1145b50a58c22d39627df717d45c6338f (patch) | |
| tree | 068b1f22bb170312b0830840a72a3ff0e21ae207 /lib/controllers/recording_menu.js | |
| parent | dc10b1de1a73effd6d0ab5744709913ef5cbe5b3 (diff) | |
| parent | 2082455bb240291413c368c1b74736a739db2a2c (diff) | |
Merge branch 'release/1.0.0'
Diffstat (limited to 'lib/controllers/recording_menu.js')
| -rw-r--r-- | lib/controllers/recording_menu.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/lib/controllers/recording_menu.js b/lib/controllers/recording_menu.js new file mode 100644 index 0000000..55f2836 --- /dev/null +++ b/lib/controllers/recording_menu.js @@ -0,0 +1,82 @@ +'use strict'; + +const Twilio = require('twilio'); + +const internals = {}; + +internals.kMenuTimeout = 10; // timeout in seconds +internals.kContentType = 'application/xml'; // The content type used to respond +internals.kMenuLanguage = 'es-mx'; // the language to use +internals.kMainMenuRoute = '/menus/main'; +internals.kListenMessageRoute = '/recordings/'; +internals.kMenuMessage = 'Escribe el numero de mensaje y presiona gato para terminar.'; +internals.kTimeoutMessage = 'Bueno... volviendo al menĂș principal.'; +internals.kMenuInvalidResponseMessage = 'No entendĂ... Volviendo al menu principal.'; // invalid selection message + +/** + * Handles the HTTP requests for the recording menu + * + * @class RecordingMenuController + */ +module.exports = internals.RecordingMenuController = class RecordingMenuController { + + /** + * Serves the menu + * + * @function serveMenu + * @memberof RecordingMenuController + * @instance + * @return {generator} a koa compatible handler generator function + */ + serveMenu() { + + return function * () { + + const response = new Twilio.TwimlResponse(); + + // the action will default to post in the same URL, so no change + // required there. + response.gather({ + timeout: internals.kMenuTimeout + }, function nestedHandler() { + + this.say(internals.kMenuMessage, { language: internals.kMenuLanguage }); + }) + .say(internals.kTimeoutMessage, { language: internals.kMenuLanguage }) + .redirect(internals.kMainMenuRoute, { method: 'GET' }); + + this.type = internals.kContentType; + this.body = response.toString(); + }; + } + + /** + * Parses the selected recording id + * + * @function parseMenuSelection + * @memberof RecordingMenuController + * @instance + * @return {generator} a koa compatible handler generator function + */ + parseMenuSelection() { + + return function * () { + + const messageId = parseInt(this.request.body.Digits); + + const response = new Twilio.TwimlResponse(); + + if (messageId) { + response.redirect(`${internals.kListenMessageRoute}${messageId}`, { method: 'GET' }); + } + else { + response.say(internals.kMenuInvalidResponseMessage, { language: internals.kMenuLanguage }) + .redirect(internals.kMainMenuRoute, { method: 'GET' }); + } + + this.type = internals.kContentType; + this.body = response.toString(); + }; + } +}; + |