c8412ef1c9c211881dae7bc61749bb86d85b7c7b
[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 _0x1ce1=['defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','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','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','root','hasOwnProperty','retry','addVertex','mxCell','length','source','target','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','inspect','debug','variables','stringify','timeout','evtHangup','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','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','isUndefined','agicommand\x20not\x20found','traverseBFS','toString','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','finally','./server','listening','connection','lodash','syncho','moment','../../config/logger','agi','../../config/license/util','./mailRpc','./graph'];(function(_0x574a15,_0x18c1e0){var _0x39f531=function(_0x24eccd){while(--_0x24eccd){_0x574a15['push'](_0x574a15['shift']());}};_0x39f531(++_0x18c1e0);}(_0x1ce1,0xaa));var _0x11ce=function(_0x5cdd1c,_0x190f00){_0x5cdd1c=_0x5cdd1c-0x0;var _0x256821=_0x1ce1[_0x5cdd1c];return _0x256821;};'use strict';var parser=require('xml2json');var _=require(_0x11ce('0x0'));var syncho=require(_0x11ce('0x1'));var util=require('util');var moment=require(_0x11ce('0x2'));var config=require('../../config/environment');var logger=require(_0x11ce('0x3'))(_0x11ce('0x4'));var utilLicense=require(_0x11ce('0x5'));var rpc=require('./rpc');var mailRpc=require(_0x11ce('0x6'));var Graph=require(_0x11ce('0x7'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x11ce('0x8')](config[_0x11ce('0x4')],{'ip':_0x11ce('0x9'),'port':0x11dd});function connectionHandler(_0x31ed74){process[_0x11ce('0xa')](function(){syncho(function(){try{setChannelVariables(_0x31ed74);agiHandler(_0x31ed74);}catch(_0x8feb54){logger[_0x11ce('0xb')](_0x8feb54[_0x11ce('0xc')]);}});});}function listeningHandler(){console[_0x11ce('0xd')](_0x11ce('0xe'),config[_0x11ce('0x4')][_0x11ce('0xf')]);logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x12'),config[_0x11ce('0x4')]['ip'],config[_0x11ce('0x4')]['port']));}function errorHandler(_0xaaaa38){if(_0xaaaa38&&_0xaaaa38[_0x11ce('0x13')]&&_0xaaaa38[_0x11ce('0x14')]){logger[_0x11ce('0xb')](util[_0x11ce('0x11')](_0x11ce('0x15'),_0xaaaa38[_0x11ce('0x13')],_0xaaaa38['message']));}else{logger[_0x11ce('0xb')](util[_0x11ce('0x11')](_0x11ce('0x16'),_0xaaaa38['stack']));}}function closeHandler(){logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x17'),this[_0x11ce('0x18')],this[_0x11ce('0x19')],this[_0x11ce('0x1a')],this[_0x11ce('0x1b')],this[_0x11ce('0x1c')]));try{createSquareReport(this);}catch(_0x1d7290){logger[_0x11ce('0xb')](_0x1d7290[_0x11ce('0xc')]);}}function timeoutHandler(){logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x1d'),this['arg_1'],this[_0x11ce('0x19')],this[_0x11ce('0x1a')],this[_0x11ce('0x1b')],this[_0x11ce('0x1c')]));}function hangupHandler(){logger[_0x11ce('0x10')](util[_0x11ce('0x11')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x11ce('0x18')],this[_0x11ce('0x19')],this[_0x11ce('0x1a')],this['dnid'],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x29d701){return parser[_0x11ce('0x1e')](_0x29d701,{'object':!![]})['mxGraphModel'][_0x11ce('0x1f')];}function addVertex(_0x4aa14d,_0x5b35cb,_0x28be3f){_0x5b35cb['agicommand']=_0x28be3f;if(_0x5b35cb[_0x11ce('0x20')]('retry')){_0x5b35cb['maxRetry']=parseInt(_0x5b35cb[_0x11ce('0x21')],0xa);}_0x4aa14d[_0x11ce('0x22')](_['omit'](_0x5b35cb,_0x11ce('0x23')));}function initGraph(_0x38a839,_0x2d9fba){var _0x4340df=new Graph();for(var _0x29d1bf in _0x38a839){if(_0x38a839[_0x11ce('0x20')](_0x29d1bf)){if(_['isArray'](_0x38a839[_0x29d1bf])){for(var _0x3288b6=0x0;_0x3288b6<_0x38a839[_0x29d1bf]['length'];_0x3288b6+=0x1){addVertex(_0x4340df,_0x38a839[_0x29d1bf][_0x3288b6],_0x29d1bf);}}else{addVertex(_0x4340df,_0x38a839[_0x29d1bf],_0x29d1bf);}}}for(var _0x131d17=0x0;_0x131d17<_0x2d9fba[_0x11ce('0x24')];_0x131d17+=0x1){if(_0x2d9fba[_0x131d17][_0x11ce('0x25')]&&_0x2d9fba[_0x131d17][_0x11ce('0x26')]){_0x4340df['addEdge'](_0x2d9fba[_0x131d17][_0x11ce('0x25')],_0x2d9fba[_0x131d17][_0x11ce('0x26')],_0x2d9fba[_0x131d17][_0x11ce('0x27')]);}}return _0x4340df;}function getSquareProject(_0x10b865,_0x80c180){rpc[_0x11ce('0x28')](_0x10b865)['then'](function(_0x31d638){_0x80c180(null,_0x31d638);})[_0x11ce('0x29')](function(_0x114bae){_0x80c180(null,_0x114bae);});}function createSquareReport(_0xcd55fe,_0x540500){rpc[_0x11ce('0x2a')](_0xcd55fe)[_0x11ce('0x2b')](function(_0x7b987c){if(_0x540500){_0x540500(null,_0x7b987c);}})[_0x11ce('0x29')](function(_0x5e6499){if(_0x540500){_0x540500(null,_0x5e6499);}});}function setChannelVariables(_0xb647b7){for(var _0x102584 in _0xb647b7){if(_0xb647b7['hasOwnProperty'](_0x102584)){if(_0x102584[_0x11ce('0x2c')](_0x11ce('0x2d'))===0x0){_0xb647b7[_0x102584[_0x11ce('0x2e')](0x4)]=_0xb647b7[_0x102584];delete _0xb647b7[_0x102584];}}}}function getLogFromObject(_0x3091d3){return util[_0x11ce('0x2f')](_0x3091d3,{'showHidden':![],'depth':null});}function agiHandler(_0x46a580){var _0x2a72e5,_0x4b8b5b,_0x31230d,_0x5993b5,_0x97c894;logger[_0x11ce('0x30')](_0x11ce('0x31'),JSON[_0x11ce('0x32')](_0x46a580,null,0x2));logger[_0x11ce('0x10')](util[_0x11ce('0x11')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x46a580[_0x11ce('0x18')],_0x46a580[_0x11ce('0x19')],_0x46a580['callerid'],_0x46a580[_0x11ce('0x1b')],_0x46a580[_0x11ce('0x1c')]));_0x46a580['on'](_0x11ce('0xb'),errorHandler);_0x46a580['on']('close',closeHandler);_0x46a580['on'](_0x11ce('0x33'),timeoutHandler);_0x46a580[_0x11ce('0x34')]=![];_0x46a580['on'](_0x11ce('0x35'),hangupHandler);var _0x172306=getSquareProject[_0x11ce('0x36')](null,_0x46a580['arg_1']);if(_0x172306){if(_0x172306[_0x11ce('0x37')]){_0x2a72e5=getRoot(_0x172306['production']);if(_0x2a72e5&&_0x2a72e5[_0x11ce('0x38')]){logger[_0x11ce('0x30')](_0x11ce('0x1f'),JSON['stringify'](_0x2a72e5,null,0x2));_0x46a580['joinAt']=moment()[_0x11ce('0x11')](_0x11ce('0x39'));_0x4b8b5b=initGraph(_[_0x11ce('0x3a')](_0x2a72e5,_0x11ce('0x23')),_0x2a72e5[_0x11ce('0x23')]);_0x31230d=new Vertices(_0x46a580,rpc,mailRpc);logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x3b'),_0x46a580[_0x11ce('0x18')],_0x46a580[_0x11ce('0x19')],_0x46a580['callerid'],_0x46a580[_0x11ce('0x1b')],_0x46a580[_0x11ce('0x1c')]));_0x4b8b5b['traverseBFS'](_0x2a72e5[_0x11ce('0x38')]['id'],function(_0xc5db14){try{_0xc5db14=_0x31230d[_0x11ce('0x3c')](_0xc5db14);logger[_0x11ce('0x30')](_0x11ce('0x3d'),JSON[_0x11ce('0x32')](_0xc5db14,null,0x2));if(_0xc5db14[_0x11ce('0x3e')]===_0x11ce('0x3f')){logger[_0x11ce('0x10')](_0x11ce('0x40'));_0x46a580[_0x11ce('0x41')]=_0xc5db14['context']||_0x46a580[_0x11ce('0x41')];_0x46a580[_0x11ce('0x42')]=_0xc5db14[_0x11ce('0x42')];_0x46a580[_0x11ce('0x43')]=_0xc5db14[_0x11ce('0x43')]?_0xc5db14[_0x11ce('0x43')]-0x1:0x1;return null;}else if(_0xc5db14&&_0x31230d[_0xc5db14['agicommand']]){_0x97c894=_0x31230d[_0xc5db14[_0x11ce('0x3e')]](_0xc5db14);logger[_0x11ce('0x10')](_0x11ce('0x44'),JSON[_0x11ce('0x32')](_0x97c894,null,0x2));if(_0x97c894&&_0x97c894['code']===AGI_CODE_SUCCESS&&_0x97c894[_0x11ce('0x45')]!==AGI_RESULT_ERROR&&!_0x46a580[_0x11ce('0x34')]){logger[_0x11ce('0x30')]('response',getLogFromObject(_0x97c894));return _[_0x11ce('0x46')](_0x97c894[_0x11ce('0x45')])?null:_0x97c894[_0x11ce('0x45')]['toString']();}else{logger[_0x11ce('0xb')](_0x11ce('0x44'),getLogFromObject(_0x97c894));return null;}}else{logger[_0x11ce('0xb')](_0x11ce('0x47'));return null;}}catch(_0x1b731e){logger[_0x11ce('0xb')](_0x1b731e[_0x11ce('0xc')]);return null;}});if(_0x2a72e5['finally']){logger[_0x11ce('0x10')](util[_0x11ce('0x11')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x46a580[_0x11ce('0x18')],_0x46a580['calleridname'],_0x46a580['callerid'],_0x46a580['dnid'],_0x46a580[_0x11ce('0x1c')]));_0x4b8b5b[_0x11ce('0x48')](_0x2a72e5['finally']['id'],function(_0x19de54){try{_0x19de54=_0x31230d[_0x11ce('0x3c')](_0x19de54);logger[_0x11ce('0x30')](_0x11ce('0x3d'),JSON[_0x11ce('0x32')](_0x19de54,null,0x2));if(_0x19de54&&_0x31230d[_0x19de54[_0x11ce('0x3e')]]){_0x97c894=_0x31230d[_0x19de54[_0x11ce('0x3e')]](_0x19de54);if(_0x97c894){logger[_0x11ce('0x30')](_0x11ce('0x44'),getLogFromObject(_0x97c894));return _[_0x11ce('0x46')](_0x97c894['result'])?null:_0x97c894[_0x11ce('0x45')][_0x11ce('0x49')]();}else{logger[_0x11ce('0xb')](_0x11ce('0x44'),getLogFromObject(_0x97c894));return null;}}else{logger[_0x11ce('0xb')](_0x11ce('0x47'));return null;}}catch(_0x1ec4cf){logger[_0x11ce('0xb')](_0x1ec4cf[_0x11ce('0xc')]);return null;}});}logger[_0x11ce('0x10')](util[_0x11ce('0x11')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x46a580['arg_1'],_0x46a580[_0x11ce('0x19')],_0x46a580[_0x11ce('0x1a')],_0x46a580['dnid'],_0x46a580[_0x11ce('0x1c')]));logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x4a'),_0x46a580[_0x11ce('0x41')],_0x46a580['extension'],parseInt(_0x46a580[_0x11ce('0x43')],0xa)+0x1));_0x46a580[_0x11ce('0x4b')](_0x46a580[_0x11ce('0x41')],_0x46a580[_0x11ce('0x42')],parseInt(_0x46a580['priority'],0xa)+0x1);_0x46a580[_0x11ce('0x4c')]();}}else{logger[_0x11ce('0xb')](util[_0x11ce('0x11')](_0x11ce('0x4d'),_0x46a580['arg_1']));_0x46a580[_0x11ce('0x4b')](_0x46a580[_0x11ce('0x41')],_0x46a580[_0x11ce('0x42')],parseInt(_0x46a580[_0x11ce('0x43')],0xa)+0x1);_0x46a580[_0x11ce('0x4c')]();}}else{logger[_0x11ce('0xb')](util[_0x11ce('0x11')]('Project\x20%s\x20not\x20found',_0x46a580[_0x11ce('0x18')]));_0x46a580[_0x11ce('0x4b')](_0x46a580[_0x11ce('0x41')],_0x46a580[_0x11ce('0x42')],parseInt(_0x46a580[_0x11ce('0x43')],0xa)+0x1);_0x46a580[_0x11ce('0x4c')]();}}function main(){var _0x3a670e;return utilLicense[_0x11ce('0x4e')]()[_0x11ce('0x2b')](function(_0x3ddd11){if(_0x3ddd11){if(_0x3ddd11[_0x11ce('0x4f')]){if(_0x3ddd11[_0x11ce('0x50')]&&_0x3ddd11['callysquare']>0x0){logger[_0x11ce('0x10')](util[_0x11ce('0x11')](_0x11ce('0x51'),_0x3ddd11[_0x11ce('0x50')]));_0x3a670e=_0x3ddd11[_0x11ce('0x50')];}else{logger[_0x11ce('0x10')](_0x11ce('0x52'));}}else{logger[_0x11ce('0x10')](_0x11ce('0x53'));_0x3a670e=-0x1;}}})[_0x11ce('0x29')](function(_0x374004){logger['error'](_0x11ce('0x54'),_0x374004[_0x11ce('0xc')]);})[_0x11ce('0x55')](function(){var _0x2d43a5=require(_0x11ce('0x56'))(config[_0x11ce('0x4')][_0x11ce('0xf')],config[_0x11ce('0x4')]['ip'],_0x3a670e);_0x2d43a5['on'](_0x11ce('0xb'),errorHandler);_0x2d43a5['on'](_0x11ce('0x57'),listeningHandler);_0x2d43a5['on'](_0x11ce('0x58'),connectionHandler);_0x2d43a5['on'](_0x11ce('0x4c'),closeHandler);});}main();