e730c1a92122f907713b773385ee14867c9a2447
[motion2.git] / server / services / agi / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xbd50=['defaults','127.0.0.1','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','port','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','evtHangup','toJson','root','agicommand','maxRetry','retry','addVertex','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','then','createSquareReport','catch','agi_','inspect','debug','variables','stringify','close','timeout','hangup','sync','production','start','YYYY-MM-DD\x20HH:mm:ss','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','isUndefined','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','xml2json','lodash','syncho','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./vertices'];(function(_0x1d3de7,_0x2a02d3){var _0x23c536=function(_0x1ce7fd){while(--_0x1ce7fd){_0x1d3de7['push'](_0x1d3de7['shift']());}};_0x23c536(++_0x2a02d3);}(_0xbd50,0x196));var _0x0bd5=function(_0x2a972c,_0x2f8026){_0x2a972c=_0x2a972c-0x0;var _0xc3c903=_0xbd50[_0x2a972c];return _0xc3c903;};'use strict';var parser=require(_0x0bd5('0x0'));var _=require(_0x0bd5('0x1'));var syncho=require(_0x0bd5('0x2'));var util=require('util');var moment=require(_0x0bd5('0x3'));var config=require(_0x0bd5('0x4'));var logger=require(_0x0bd5('0x5'))(_0x0bd5('0x6'));var utilLicense=require(_0x0bd5('0x7'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0x0bd5('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x0bd5('0x6')]=_[_0x0bd5('0x9')](config[_0x0bd5('0x6')],{'ip':_0x0bd5('0xa'),'port':0x11dd});function connectionHandler(_0x5ebe64){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5ebe64);agiHandler(_0x5ebe64);}catch(_0x1a5cb9){logger[_0x0bd5('0xb')](_0x1a5cb9[_0x0bd5('0xc')]);}});});}function listeningHandler(){console['log'](_0x0bd5('0xd'),config[_0x0bd5('0x6')]['port']);logger[_0x0bd5('0xe')](util[_0x0bd5('0xf')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x0bd5('0x6')]['ip'],config[_0x0bd5('0x6')][_0x0bd5('0x10')]));}function errorHandler(_0x5f49ee){if(_0x5f49ee&&_0x5f49ee[_0x0bd5('0x11')]&&_0x5f49ee[_0x0bd5('0x12')]){logger[_0x0bd5('0xb')](util[_0x0bd5('0xf')](_0x0bd5('0x13'),_0x5f49ee[_0x0bd5('0x11')],_0x5f49ee[_0x0bd5('0x12')]));}else{logger[_0x0bd5('0xb')](util['format'](_0x0bd5('0x14'),_0x5f49ee[_0x0bd5('0xc')]));}}function closeHandler(){logger['info'](util[_0x0bd5('0xf')](_0x0bd5('0x15'),this[_0x0bd5('0x16')],this[_0x0bd5('0x17')],this['callerid'],this[_0x0bd5('0x18')],this[_0x0bd5('0x19')]));try{createSquareReport(this);}catch(_0xa890be){logger[_0x0bd5('0xb')](_0xa890be[_0x0bd5('0xc')]);}}function timeoutHandler(){logger[_0x0bd5('0xe')](util[_0x0bd5('0xf')](_0x0bd5('0x1a'),this[_0x0bd5('0x16')],this[_0x0bd5('0x17')],this[_0x0bd5('0x1b')],this[_0x0bd5('0x18')],this[_0x0bd5('0x19')]));}function hangupHandler(){logger[_0x0bd5('0xe')](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this['callerid'],this[_0x0bd5('0x18')],this[_0x0bd5('0x19')]));this[_0x0bd5('0x1c')]=!![];}function getRoot(_0x4a6910){return parser[_0x0bd5('0x1d')](_0x4a6910,{'object':!![]})['mxGraphModel'][_0x0bd5('0x1e')];}function addVertex(_0x3b235b,_0x38c21d,_0x5a8139){_0x38c21d[_0x0bd5('0x1f')]=_0x5a8139;if(_0x38c21d['hasOwnProperty']('retry')){_0x38c21d[_0x0bd5('0x20')]=parseInt(_0x38c21d[_0x0bd5('0x21')],0xa);}_0x3b235b[_0x0bd5('0x22')](_['omit'](_0x38c21d,_0x0bd5('0x23')));}function initGraph(_0x5eab3e,_0x456e87){var _0x3ffb08=new Graph();for(var _0x18cec3 in _0x5eab3e){if(_0x5eab3e[_0x0bd5('0x24')](_0x18cec3)){if(_[_0x0bd5('0x25')](_0x5eab3e[_0x18cec3])){for(var _0x2023d5=0x0;_0x2023d5<_0x5eab3e[_0x18cec3][_0x0bd5('0x26')];_0x2023d5+=0x1){addVertex(_0x3ffb08,_0x5eab3e[_0x18cec3][_0x2023d5],_0x18cec3);}}else{addVertex(_0x3ffb08,_0x5eab3e[_0x18cec3],_0x18cec3);}}}for(var _0x2f01ff=0x0;_0x2f01ff<_0x456e87[_0x0bd5('0x26')];_0x2f01ff+=0x1){if(_0x456e87[_0x2f01ff][_0x0bd5('0x27')]&&_0x456e87[_0x2f01ff][_0x0bd5('0x28')]){_0x3ffb08[_0x0bd5('0x29')](_0x456e87[_0x2f01ff][_0x0bd5('0x27')],_0x456e87[_0x2f01ff][_0x0bd5('0x28')],_0x456e87[_0x2f01ff]['value']);}}return _0x3ffb08;}function getSquareProject(_0x461ae3,_0x19eb75){rpc['getSquareProject'](_0x461ae3)[_0x0bd5('0x2a')](function(_0x8eccc9){_0x19eb75(null,_0x8eccc9);})['catch'](function(_0x11f482){_0x19eb75(null,_0x11f482);});}function createSquareReport(_0x1b7cf4,_0x28ab82){rpc[_0x0bd5('0x2b')](_0x1b7cf4)['then'](function(_0x440e69){if(_0x28ab82){_0x28ab82(null,_0x440e69);}})[_0x0bd5('0x2c')](function(_0x622d46){if(_0x28ab82){_0x28ab82(null,_0x622d46);}});}function setChannelVariables(_0x24ef4a){for(var _0xecf11f in _0x24ef4a){if(_0x24ef4a[_0x0bd5('0x24')](_0xecf11f)){if(_0xecf11f['indexOf'](_0x0bd5('0x2d'))===0x0){_0x24ef4a[_0xecf11f['substring'](0x4)]=_0x24ef4a[_0xecf11f];delete _0x24ef4a[_0xecf11f];}}}}function getLogFromObject(_0x398362){return util[_0x0bd5('0x2e')](_0x398362,{'showHidden':![],'depth':null});}function agiHandler(_0x444ddb){var _0x132e02,_0x37e14b,_0x1c7010,_0x15e380,_0x24f7d5;logger[_0x0bd5('0x2f')](_0x0bd5('0x30'),JSON[_0x0bd5('0x31')](_0x444ddb,null,0x2));logger[_0x0bd5('0xe')](util[_0x0bd5('0xf')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x444ddb[_0x0bd5('0x16')],_0x444ddb[_0x0bd5('0x17')],_0x444ddb['callerid'],_0x444ddb['dnid'],_0x444ddb[_0x0bd5('0x19')]));_0x444ddb['on'](_0x0bd5('0xb'),errorHandler);_0x444ddb['on'](_0x0bd5('0x32'),closeHandler);_0x444ddb['on'](_0x0bd5('0x33'),timeoutHandler);_0x444ddb[_0x0bd5('0x1c')]=![];_0x444ddb['on'](_0x0bd5('0x34'),hangupHandler);var _0x22c10c=getSquareProject[_0x0bd5('0x35')](null,_0x444ddb[_0x0bd5('0x16')]);if(_0x22c10c){if(_0x22c10c[_0x0bd5('0x36')]){_0x132e02=getRoot(_0x22c10c[_0x0bd5('0x36')]);if(_0x132e02&&_0x132e02[_0x0bd5('0x37')]){logger[_0x0bd5('0x2f')]('root',JSON[_0x0bd5('0x31')](_0x132e02,null,0x2));_0x444ddb['joinAt']=moment()[_0x0bd5('0xf')](_0x0bd5('0x38'));_0x37e14b=initGraph(_[_0x0bd5('0x39')](_0x132e02,_0x0bd5('0x23')),_0x132e02[_0x0bd5('0x23')]);_0x1c7010=new Vertices(_0x444ddb,rpc,mailRpc);logger[_0x0bd5('0xe')](util['format'](_0x0bd5('0x3a'),_0x444ddb[_0x0bd5('0x16')],_0x444ddb[_0x0bd5('0x17')],_0x444ddb[_0x0bd5('0x1b')],_0x444ddb[_0x0bd5('0x18')],_0x444ddb[_0x0bd5('0x19')]));_0x37e14b[_0x0bd5('0x3b')](_0x132e02[_0x0bd5('0x37')]['id'],function(_0x1c2ef8){try{_0x1c2ef8=_0x1c7010['clear'](_0x1c2ef8);logger[_0x0bd5('0x2f')]('vertex',JSON[_0x0bd5('0x31')](_0x1c2ef8,null,0x2));if(_0x1c2ef8[_0x0bd5('0x1f')]==='gotoc'){logger[_0x0bd5('0xe')](_0x0bd5('0x3c'));_0x444ddb[_0x0bd5('0x3d')]=_0x1c2ef8[_0x0bd5('0x3d')]||_0x444ddb[_0x0bd5('0x3d')];_0x444ddb[_0x0bd5('0x3e')]=_0x1c2ef8[_0x0bd5('0x3e')];_0x444ddb['priority']=_0x1c2ef8['priority']?_0x1c2ef8[_0x0bd5('0x3f')]-0x1:0x1;return null;}else if(_0x1c2ef8&&_0x1c7010[_0x1c2ef8['agicommand']]){_0x24f7d5=_0x1c7010[_0x1c2ef8['agicommand']](_0x1c2ef8);logger[_0x0bd5('0xe')](_0x0bd5('0x40'),JSON['stringify'](_0x24f7d5,null,0x2));if(_0x24f7d5&&_0x24f7d5['code']===AGI_CODE_SUCCESS&&_0x24f7d5['result']!==AGI_RESULT_ERROR&&!_0x444ddb[_0x0bd5('0x1c')]){logger['debug']('response',getLogFromObject(_0x24f7d5));return _[_0x0bd5('0x41')](_0x24f7d5[_0x0bd5('0x42')])?null:_0x24f7d5['result']['toString']();}else{logger[_0x0bd5('0xb')](_0x0bd5('0x40'),getLogFromObject(_0x24f7d5));return null;}}else{logger[_0x0bd5('0xb')](_0x0bd5('0x43'));return null;}}catch(_0x56a702){logger[_0x0bd5('0xb')](_0x56a702[_0x0bd5('0xc')]);return null;}});if(_0x132e02[_0x0bd5('0x44')]){logger[_0x0bd5('0xe')](util[_0x0bd5('0xf')](_0x0bd5('0x45'),_0x444ddb['arg_1'],_0x444ddb[_0x0bd5('0x17')],_0x444ddb[_0x0bd5('0x1b')],_0x444ddb[_0x0bd5('0x18')],_0x444ddb['uniqueid']));_0x37e14b[_0x0bd5('0x3b')](_0x132e02[_0x0bd5('0x44')]['id'],function(_0x2c0d17){try{_0x2c0d17=_0x1c7010['clear'](_0x2c0d17);logger[_0x0bd5('0x2f')](_0x0bd5('0x46'),JSON[_0x0bd5('0x31')](_0x2c0d17,null,0x2));if(_0x2c0d17&&_0x1c7010[_0x2c0d17[_0x0bd5('0x1f')]]){_0x24f7d5=_0x1c7010[_0x2c0d17[_0x0bd5('0x1f')]](_0x2c0d17);if(_0x24f7d5){logger['debug'](_0x0bd5('0x40'),getLogFromObject(_0x24f7d5));return _[_0x0bd5('0x41')](_0x24f7d5['result'])?null:_0x24f7d5[_0x0bd5('0x42')][_0x0bd5('0x47')]();}else{logger[_0x0bd5('0xb')](_0x0bd5('0x40'),getLogFromObject(_0x24f7d5));return null;}}else{logger[_0x0bd5('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x109793){logger[_0x0bd5('0xb')](_0x109793['stack']);return null;}});}logger[_0x0bd5('0xe')](util['format'](_0x0bd5('0x48'),_0x444ddb[_0x0bd5('0x16')],_0x444ddb[_0x0bd5('0x17')],_0x444ddb[_0x0bd5('0x1b')],_0x444ddb['dnid'],_0x444ddb[_0x0bd5('0x19')]));logger['info'](util['format'](_0x0bd5('0x49'),_0x444ddb[_0x0bd5('0x3d')],_0x444ddb[_0x0bd5('0x3e')],parseInt(_0x444ddb['priority'],0xa)+0x1));_0x444ddb[_0x0bd5('0x4a')](_0x444ddb['context'],_0x444ddb[_0x0bd5('0x3e')],parseInt(_0x444ddb[_0x0bd5('0x3f')],0xa)+0x1);_0x444ddb[_0x0bd5('0x32')]();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x444ddb[_0x0bd5('0x16')]));_0x444ddb[_0x0bd5('0x4a')](_0x444ddb[_0x0bd5('0x3d')],_0x444ddb['extension'],parseInt(_0x444ddb[_0x0bd5('0x3f')],0xa)+0x1);_0x444ddb[_0x0bd5('0x32')]();}}else{logger['error'](util[_0x0bd5('0xf')]('Project\x20%s\x20not\x20found',_0x444ddb['arg_1']));_0x444ddb[_0x0bd5('0x4a')](_0x444ddb[_0x0bd5('0x3d')],_0x444ddb[_0x0bd5('0x3e')],parseInt(_0x444ddb[_0x0bd5('0x3f')],0xa)+0x1);_0x444ddb['close']();}}function main(){var _0x3a92e8;return utilLicense[_0x0bd5('0x4b')]()[_0x0bd5('0x2a')](function(_0x5cf2f2){if(_0x5cf2f2){if(_0x5cf2f2[_0x0bd5('0x4c')]){if(_0x5cf2f2[_0x0bd5('0x4d')]&&_0x5cf2f2[_0x0bd5('0x4d')]>0x0){logger['info'](util['format'](_0x0bd5('0x4e'),_0x5cf2f2['callysquare']));_0x3a92e8=_0x5cf2f2[_0x0bd5('0x4d')];}else{logger[_0x0bd5('0xe')](_0x0bd5('0x4f'));}}else{logger['info'](_0x0bd5('0x50'));_0x3a92e8=-0x1;}}})[_0x0bd5('0x2c')](function(_0x3eaea6){logger[_0x0bd5('0xb')]('[LICENSE]',_0x3eaea6[_0x0bd5('0xc')]);})[_0x0bd5('0x44')](function(){var _0x5d02cb=require(_0x0bd5('0x51'))(config[_0x0bd5('0x6')]['port'],config[_0x0bd5('0x6')]['ip'],_0x3a92e8);_0x5d02cb['on']('error',errorHandler);_0x5d02cb['on'](_0x0bd5('0x52'),listeningHandler);_0x5d02cb['on']('connection',connectionHandler);_0x5d02cb['on']('close',closeHandler);});}main();