bde2fa266c498ba2fc7580484a66768af4f53eb4
[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 _0xd13e=['stack','log','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source','target','value','getSquareProject','catch','createSquareReport','then','agi_','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','production','root','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','start','clear','vertex','gotoc','context','extension','priority','response','code','result','isUndefined','agicommand\x20not\x20found','finally','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','xml2json','lodash','syncho','util','../../config/environment','agi','./rpc','./mailRpc','defaults','127.0.0.1','nextTick','error'];(function(_0x29c7fb,_0x3147bd){var _0x2603ea=function(_0x51e624){while(--_0x51e624){_0x29c7fb['push'](_0x29c7fb['shift']());}};_0x2603ea(++_0x3147bd);}(_0xd13e,0x193));var _0xed13=function(_0x58991e,_0x3ce201){_0x58991e=_0x58991e-0x0;var _0x3c8f6d=_0xd13e[_0x58991e];return _0x3c8f6d;};'use strict';var parser=require(_0xed13('0x0'));var _=require(_0xed13('0x1'));var syncho=require(_0xed13('0x2'));var util=require(_0xed13('0x3'));var moment=require('moment');var config=require(_0xed13('0x4'));var logger=require('../../config/logger')(_0xed13('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0xed13('0x6'));var mailRpc=require(_0xed13('0x7'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xed13('0x8')](config[_0xed13('0x5')],{'ip':_0xed13('0x9'),'port':0x11dd});function connectionHandler(_0x3b3984){process[_0xed13('0xa')](function(){syncho(function(){try{setChannelVariables(_0x3b3984);agiHandler(_0x3b3984);}catch(_0x2ba0d2){logger[_0xed13('0xb')](_0x2ba0d2[_0xed13('0xc')]);}});});}function listeningHandler(){console[_0xed13('0xd')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xed13('0x5')][_0xed13('0xe')]);logger[_0xed13('0xf')](util[_0xed13('0x10')](_0xed13('0x11'),config['agi']['ip'],config[_0xed13('0x5')][_0xed13('0xe')]));}function errorHandler(_0x2c68db){if(_0x2c68db&&_0x2c68db[_0xed13('0x12')]&&_0x2c68db[_0xed13('0x13')]){logger[_0xed13('0xb')](util['format'](_0xed13('0x14'),_0x2c68db['name'],_0x2c68db[_0xed13('0x13')]));}else{logger['error'](util[_0xed13('0x10')]('[ERROR]\x20%s',_0x2c68db[_0xed13('0xc')]));}}function closeHandler(){logger['info'](util[_0xed13('0x10')](_0xed13('0x15'),this[_0xed13('0x16')],this[_0xed13('0x17')],this[_0xed13('0x18')],this[_0xed13('0x19')],this[_0xed13('0x1a')]));try{createSquareReport(this);}catch(_0x1148a3){logger[_0xed13('0xb')](_0x1148a3[_0xed13('0xc')]);}}function timeoutHandler(){logger[_0xed13('0xf')](util[_0xed13('0x10')](_0xed13('0x1b'),this[_0xed13('0x16')],this[_0xed13('0x17')],this[_0xed13('0x18')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0xed13('0xf')](util[_0xed13('0x10')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xed13('0x16')],this['calleridname'],this['callerid'],this[_0xed13('0x19')],this[_0xed13('0x1a')]));this[_0xed13('0x1c')]=!![];}function getRoot(_0x192d12){return parser[_0xed13('0x1d')](_0x192d12,{'object':!![]})[_0xed13('0x1e')]['root'];}function addVertex(_0x5c0daf,_0x5d7ae1,_0x19d51b){_0x5d7ae1[_0xed13('0x1f')]=_0x19d51b;if(_0x5d7ae1[_0xed13('0x20')](_0xed13('0x21'))){_0x5d7ae1[_0xed13('0x22')]=parseInt(_0x5d7ae1[_0xed13('0x21')],0xa);}_0x5c0daf[_0xed13('0x23')](_[_0xed13('0x24')](_0x5d7ae1,_0xed13('0x25')));}function initGraph(_0x2f05f0,_0x1f064c){var _0x3bc666=new Graph();for(var _0x2c6c33 in _0x2f05f0){if(_0x2f05f0[_0xed13('0x20')](_0x2c6c33)){if(_['isArray'](_0x2f05f0[_0x2c6c33])){for(var _0x5e399c=0x0;_0x5e399c<_0x2f05f0[_0x2c6c33][_0xed13('0x26')];_0x5e399c+=0x1){addVertex(_0x3bc666,_0x2f05f0[_0x2c6c33][_0x5e399c],_0x2c6c33);}}else{addVertex(_0x3bc666,_0x2f05f0[_0x2c6c33],_0x2c6c33);}}}for(var _0x2ebdf6=0x0;_0x2ebdf6<_0x1f064c['length'];_0x2ebdf6+=0x1){if(_0x1f064c[_0x2ebdf6][_0xed13('0x27')]&&_0x1f064c[_0x2ebdf6][_0xed13('0x28')]){_0x3bc666['addEdge'](_0x1f064c[_0x2ebdf6][_0xed13('0x27')],_0x1f064c[_0x2ebdf6][_0xed13('0x28')],_0x1f064c[_0x2ebdf6][_0xed13('0x29')]);}}return _0x3bc666;}function getSquareProject(_0x570929,_0x3a5387){rpc[_0xed13('0x2a')](_0x570929)['then'](function(_0x433665){_0x3a5387(null,_0x433665);})[_0xed13('0x2b')](function(_0x56619a){_0x3a5387(null,_0x56619a);});}function createSquareReport(_0x11cb93,_0x43c061){rpc[_0xed13('0x2c')](_0x11cb93)[_0xed13('0x2d')](function(_0x1e34b6){if(_0x43c061){_0x43c061(null,_0x1e34b6);}})[_0xed13('0x2b')](function(_0xe332){if(_0x43c061){_0x43c061(null,_0xe332);}});}function setChannelVariables(_0x5b3828){for(var _0x7ee14a in _0x5b3828){if(_0x5b3828['hasOwnProperty'](_0x7ee14a)){if(_0x7ee14a['indexOf'](_0xed13('0x2e'))===0x0){_0x5b3828[_0x7ee14a[_0xed13('0x2f')](0x4)]=_0x5b3828[_0x7ee14a];delete _0x5b3828[_0x7ee14a];}}}}function getLogFromObject(_0x13e3bb){return util['inspect'](_0x13e3bb,{'showHidden':![],'depth':null});}function agiHandler(_0x2ee6e3){var _0x2dc3cb,_0x389ed3,_0x5bf415,_0x2f5abf,_0x1c6070;logger[_0xed13('0x30')](_0xed13('0x31'),JSON['stringify'](_0x2ee6e3,null,0x2));logger[_0xed13('0xf')](util[_0xed13('0x10')](_0xed13('0x32'),_0x2ee6e3[_0xed13('0x16')],_0x2ee6e3[_0xed13('0x17')],_0x2ee6e3[_0xed13('0x18')],_0x2ee6e3[_0xed13('0x19')],_0x2ee6e3[_0xed13('0x1a')]));_0x2ee6e3['on'](_0xed13('0xb'),errorHandler);_0x2ee6e3['on'](_0xed13('0x33'),closeHandler);_0x2ee6e3['on']('timeout',timeoutHandler);_0x2ee6e3[_0xed13('0x1c')]=![];_0x2ee6e3['on'](_0xed13('0x34'),hangupHandler);var _0x59384b=getSquareProject['sync'](null,_0x2ee6e3['arg_1']);if(_0x59384b){if(_0x59384b[_0xed13('0x35')]){_0x2dc3cb=getRoot(_0x59384b[_0xed13('0x35')]);if(_0x2dc3cb&&_0x2dc3cb['start']){logger['debug'](_0xed13('0x36'),JSON[_0xed13('0x37')](_0x2dc3cb,null,0x2));_0x2ee6e3[_0xed13('0x38')]=moment()[_0xed13('0x10')](_0xed13('0x39'));_0x389ed3=initGraph(_['omit'](_0x2dc3cb,'mxCell'),_0x2dc3cb[_0xed13('0x25')]);_0x5bf415=new Vertices(_0x2ee6e3,rpc,mailRpc);logger['info'](util[_0xed13('0x10')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2ee6e3[_0xed13('0x16')],_0x2ee6e3['calleridname'],_0x2ee6e3['callerid'],_0x2ee6e3['dnid'],_0x2ee6e3[_0xed13('0x1a')]));_0x389ed3[_0xed13('0x3a')](_0x2dc3cb[_0xed13('0x3b')]['id'],function(_0x42d5f7){try{_0x42d5f7=_0x5bf415[_0xed13('0x3c')](_0x42d5f7);logger['debug'](_0xed13('0x3d'),JSON[_0xed13('0x37')](_0x42d5f7,null,0x2));if(_0x42d5f7[_0xed13('0x1f')]===_0xed13('0x3e')){logger[_0xed13('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x2ee6e3[_0xed13('0x3f')]=_0x42d5f7[_0xed13('0x3f')]||_0x2ee6e3[_0xed13('0x3f')];_0x2ee6e3[_0xed13('0x40')]=_0x42d5f7[_0xed13('0x40')];_0x2ee6e3[_0xed13('0x41')]=_0x42d5f7['priority']?_0x42d5f7[_0xed13('0x41')]-0x1:0x1;return null;}else if(_0x42d5f7&&_0x5bf415[_0x42d5f7[_0xed13('0x1f')]]){_0x1c6070=_0x5bf415[_0x42d5f7[_0xed13('0x1f')]](_0x42d5f7);logger[_0xed13('0xf')](_0xed13('0x42'),JSON[_0xed13('0x37')](_0x1c6070,null,0x2));if(_0x1c6070&&_0x1c6070[_0xed13('0x43')]===AGI_CODE_SUCCESS&&_0x1c6070[_0xed13('0x44')]!==AGI_RESULT_ERROR&&!_0x2ee6e3[_0xed13('0x1c')]){logger[_0xed13('0x30')](_0xed13('0x42'),getLogFromObject(_0x1c6070));return _[_0xed13('0x45')](_0x1c6070[_0xed13('0x44')])?null:_0x1c6070[_0xed13('0x44')]['toString']();}else{logger[_0xed13('0xb')](_0xed13('0x42'),getLogFromObject(_0x1c6070));return null;}}else{logger['error'](_0xed13('0x46'));return null;}}catch(_0xbcaba0){logger[_0xed13('0xb')](_0xbcaba0['stack']);return null;}});if(_0x2dc3cb[_0xed13('0x47')]){logger[_0xed13('0xf')](util[_0xed13('0x10')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2ee6e3['arg_1'],_0x2ee6e3[_0xed13('0x17')],_0x2ee6e3[_0xed13('0x18')],_0x2ee6e3['dnid'],_0x2ee6e3[_0xed13('0x1a')]));_0x389ed3[_0xed13('0x3a')](_0x2dc3cb[_0xed13('0x47')]['id'],function(_0x278505){try{_0x278505=_0x5bf415['clear'](_0x278505);logger[_0xed13('0x30')](_0xed13('0x3d'),JSON[_0xed13('0x37')](_0x278505,null,0x2));if(_0x278505&&_0x5bf415[_0x278505[_0xed13('0x1f')]]){_0x1c6070=_0x5bf415[_0x278505['agicommand']](_0x278505);if(_0x1c6070){logger[_0xed13('0x30')]('response',getLogFromObject(_0x1c6070));return _[_0xed13('0x45')](_0x1c6070['result'])?null:_0x1c6070['result'][_0xed13('0x48')]();}else{logger[_0xed13('0xb')]('response',getLogFromObject(_0x1c6070));return null;}}else{logger[_0xed13('0xb')](_0xed13('0x46'));return null;}}catch(_0x41df8f){logger[_0xed13('0xb')](_0x41df8f['stack']);return null;}});}logger[_0xed13('0xf')](util['format'](_0xed13('0x49'),_0x2ee6e3[_0xed13('0x16')],_0x2ee6e3[_0xed13('0x17')],_0x2ee6e3[_0xed13('0x18')],_0x2ee6e3[_0xed13('0x19')],_0x2ee6e3[_0xed13('0x1a')]));logger[_0xed13('0xf')](util[_0xed13('0x10')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x2ee6e3[_0xed13('0x3f')],_0x2ee6e3[_0xed13('0x40')],parseInt(_0x2ee6e3[_0xed13('0x41')],0xa)+0x1));_0x2ee6e3[_0xed13('0x4a')](_0x2ee6e3['context'],_0x2ee6e3[_0xed13('0x40')],parseInt(_0x2ee6e3['priority'],0xa)+0x1);_0x2ee6e3[_0xed13('0x33')]();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x2ee6e3[_0xed13('0x16')]));_0x2ee6e3[_0xed13('0x4a')](_0x2ee6e3[_0xed13('0x3f')],_0x2ee6e3['extension'],parseInt(_0x2ee6e3[_0xed13('0x41')],0xa)+0x1);_0x2ee6e3[_0xed13('0x33')]();}}else{logger[_0xed13('0xb')](util[_0xed13('0x10')](_0xed13('0x4b'),_0x2ee6e3['arg_1']));_0x2ee6e3[_0xed13('0x4a')](_0x2ee6e3[_0xed13('0x3f')],_0x2ee6e3[_0xed13('0x40')],parseInt(_0x2ee6e3[_0xed13('0x41')],0xa)+0x1);_0x2ee6e3['close']();}}function main(){var _0x2b7ec9;return utilLicense[_0xed13('0x4c')]()[_0xed13('0x2d')](function(_0x24a00d){if(_0x24a00d){if(_0x24a00d[_0xed13('0x4d')]){if(_0x24a00d[_0xed13('0x4e')]&&_0x24a00d[_0xed13('0x4e')]>0x0){logger['info'](util[_0xed13('0x10')]('[LICENSE]\x20CHANNELS:\x20%s',_0x24a00d[_0xed13('0x4e')]));_0x2b7ec9=_0x24a00d['callysquare'];}else{logger[_0xed13('0xf')](_0xed13('0x4f'));}}else{logger[_0xed13('0xf')](_0xed13('0x50'));_0x2b7ec9=-0x1;}}})[_0xed13('0x2b')](function(_0x50d211){logger['error'](_0xed13('0x51'),_0x50d211[_0xed13('0xc')]);})[_0xed13('0x47')](function(){var _0x1d6de4=require(_0xed13('0x52'))(config[_0xed13('0x5')][_0xed13('0xe')],config[_0xed13('0x5')]['ip'],_0x2b7ec9);_0x1d6de4['on'](_0xed13('0xb'),errorHandler);_0x1d6de4['on']('listening',listeningHandler);_0x1d6de4['on']('connection',connectionHandler);_0x1d6de4['on']('close',closeHandler);});}main();