Built motion from commit 85328c08.|2.5.50
[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 _0xee0e=['root','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','indexOf','agi_','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','[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]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','listening','connection','xml2json','lodash','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./vertices','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','[%s]\x20%s','message','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','evtHangup','toJson','mxGraphModel'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0xee0e,0x144));var _0xeee0=function(_0x403c8d,_0x5e3825){_0x403c8d=_0x403c8d-0x0;var _0x4ca60d=_0xee0e[_0x403c8d];return _0x4ca60d;};'use strict';var parser=require(_0xeee0('0x0'));var _=require(_0xeee0('0x1'));var syncho=require('syncho');var util=require('util');var moment=require(_0xeee0('0x2'));var config=require(_0xeee0('0x3'));var logger=require(_0xeee0('0x4'))(_0xeee0('0x5'));var utilLicense=require(_0xeee0('0x6'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0xeee0('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xeee0('0x5')]=_[_0xeee0('0x8')](config[_0xeee0('0x5')],{'ip':_0xeee0('0x9'),'port':0x11dd});function connectionHandler(_0x5121a5){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5121a5);agiHandler(_0x5121a5);}catch(_0x418981){logger[_0xeee0('0xa')](_0x418981[_0xeee0('0xb')]);}});});}function listeningHandler(){console[_0xeee0('0xc')](_0xeee0('0xd'),config[_0xeee0('0x5')]['port']);logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x10'),config['agi']['ip'],config[_0xeee0('0x5')][_0xeee0('0x11')]));}function errorHandler(_0x188331){if(_0x188331&&_0x188331[_0xeee0('0x12')]&&_0x188331['message']){logger[_0xeee0('0xa')](util[_0xeee0('0xf')](_0xeee0('0x13'),_0x188331['name'],_0x188331[_0xeee0('0x14')]));}else{logger[_0xeee0('0xa')](util[_0xeee0('0xf')]('[ERROR]\x20%s',_0x188331['stack']));}}function closeHandler(){logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x15'),this[_0xeee0('0x16')],this['calleridname'],this['callerid'],this[_0xeee0('0x17')],this[_0xeee0('0x18')]));try{createSquareReport(this);}catch(_0x38235f){logger[_0xeee0('0xa')](_0x38235f['stack']);}}function timeoutHandler(){logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x19'),this[_0xeee0('0x16')],this[_0xeee0('0x1a')],this['callerid'],this[_0xeee0('0x17')],this[_0xeee0('0x18')]));}function hangupHandler(){logger[_0xeee0('0xe')](util['format'](_0xeee0('0x1b'),this[_0xeee0('0x16')],this[_0xeee0('0x1a')],this[_0xeee0('0x1c')],this[_0xeee0('0x17')],this['uniqueid']));this[_0xeee0('0x1d')]=!![];}function getRoot(_0x1820cf){return parser[_0xeee0('0x1e')](_0x1820cf,{'object':!![]})[_0xeee0('0x1f')][_0xeee0('0x20')];}function addVertex(_0x4a6956,_0xfe37dd,_0x48f994){_0xfe37dd['agicommand']=_0x48f994;if(_0xfe37dd[_0xeee0('0x21')](_0xeee0('0x22'))){_0xfe37dd['maxRetry']=parseInt(_0xfe37dd[_0xeee0('0x22')],0xa);}_0x4a6956[_0xeee0('0x23')](_[_0xeee0('0x24')](_0xfe37dd,_0xeee0('0x25')));}function initGraph(_0x40a4c9,_0x9a5d33){var _0x5ec6b9=new Graph();for(var _0xbfb76f in _0x40a4c9){if(_0x40a4c9[_0xeee0('0x21')](_0xbfb76f)){if(_[_0xeee0('0x26')](_0x40a4c9[_0xbfb76f])){for(var _0x20c4f8=0x0;_0x20c4f8<_0x40a4c9[_0xbfb76f][_0xeee0('0x27')];_0x20c4f8+=0x1){addVertex(_0x5ec6b9,_0x40a4c9[_0xbfb76f][_0x20c4f8],_0xbfb76f);}}else{addVertex(_0x5ec6b9,_0x40a4c9[_0xbfb76f],_0xbfb76f);}}}for(var _0x13122d=0x0;_0x13122d<_0x9a5d33['length'];_0x13122d+=0x1){if(_0x9a5d33[_0x13122d][_0xeee0('0x28')]&&_0x9a5d33[_0x13122d][_0xeee0('0x29')]){_0x5ec6b9[_0xeee0('0x2a')](_0x9a5d33[_0x13122d][_0xeee0('0x28')],_0x9a5d33[_0x13122d][_0xeee0('0x29')],_0x9a5d33[_0x13122d][_0xeee0('0x2b')]);}}return _0x5ec6b9;}function getSquareProject(_0x16e7f3,_0x52d750){rpc[_0xeee0('0x2c')](_0x16e7f3)[_0xeee0('0x2d')](function(_0x56a18f){_0x52d750(null,_0x56a18f);})[_0xeee0('0x2e')](function(_0x21c097){_0x52d750(null,_0x21c097);});}function createSquareReport(_0x4a5be7,_0x5b98f3){rpc['createSquareReport'](_0x4a5be7)[_0xeee0('0x2d')](function(_0x1c9905){if(_0x5b98f3){_0x5b98f3(null,_0x1c9905);}})[_0xeee0('0x2e')](function(_0x31d93f){if(_0x5b98f3){_0x5b98f3(null,_0x31d93f);}});}function setChannelVariables(_0x167762){for(var _0x5ac4e3 in _0x167762){if(_0x167762[_0xeee0('0x21')](_0x5ac4e3)){if(_0x5ac4e3[_0xeee0('0x2f')](_0xeee0('0x30'))===0x0){_0x167762[_0x5ac4e3[_0xeee0('0x31')](0x4)]=_0x167762[_0x5ac4e3];delete _0x167762[_0x5ac4e3];}}}}function getLogFromObject(_0x5dfb15){return util[_0xeee0('0x32')](_0x5dfb15,{'showHidden':![],'depth':null});}function agiHandler(_0x8b9755){var _0x1da0b8,_0x32c58d,_0x3d1e8e,_0x593b2e,_0x43cede;logger[_0xeee0('0x33')]('variables',JSON[_0xeee0('0x34')](_0x8b9755,null,0x2));logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x35'),_0x8b9755[_0xeee0('0x16')],_0x8b9755[_0xeee0('0x1a')],_0x8b9755['callerid'],_0x8b9755[_0xeee0('0x17')],_0x8b9755[_0xeee0('0x18')]));_0x8b9755['on'](_0xeee0('0xa'),errorHandler);_0x8b9755['on'](_0xeee0('0x36'),closeHandler);_0x8b9755['on'](_0xeee0('0x37'),timeoutHandler);_0x8b9755['evtHangup']=![];_0x8b9755['on'](_0xeee0('0x38'),hangupHandler);var _0xa43607=getSquareProject['sync'](null,_0x8b9755['arg_1']);if(_0xa43607){if(_0xa43607[_0xeee0('0x39')]){_0x1da0b8=getRoot(_0xa43607[_0xeee0('0x39')]);if(_0x1da0b8&&_0x1da0b8[_0xeee0('0x3a')]){logger['debug'](_0xeee0('0x20'),JSON[_0xeee0('0x34')](_0x1da0b8,null,0x2));_0x8b9755[_0xeee0('0x3b')]=moment()[_0xeee0('0xf')](_0xeee0('0x3c'));_0x32c58d=initGraph(_[_0xeee0('0x24')](_0x1da0b8,_0xeee0('0x25')),_0x1da0b8['mxCell']);_0x3d1e8e=new Vertices(_0x8b9755,rpc,mailRpc);logger[_0xeee0('0xe')](util['format'](_0xeee0('0x3d'),_0x8b9755[_0xeee0('0x16')],_0x8b9755['calleridname'],_0x8b9755[_0xeee0('0x1c')],_0x8b9755[_0xeee0('0x17')],_0x8b9755['uniqueid']));_0x32c58d[_0xeee0('0x3e')](_0x1da0b8[_0xeee0('0x3a')]['id'],function(_0x30a114){try{_0x30a114=_0x3d1e8e[_0xeee0('0x3f')](_0x30a114);logger[_0xeee0('0x33')](_0xeee0('0x40'),JSON[_0xeee0('0x34')](_0x30a114,null,0x2));if(_0x30a114[_0xeee0('0x41')]===_0xeee0('0x42')){logger[_0xeee0('0xe')](_0xeee0('0x43'));_0x8b9755[_0xeee0('0x44')]=_0x30a114[_0xeee0('0x44')]||_0x8b9755[_0xeee0('0x44')];_0x8b9755[_0xeee0('0x45')]=_0x30a114[_0xeee0('0x45')];_0x8b9755[_0xeee0('0x46')]=_0x30a114[_0xeee0('0x46')]?_0x30a114['priority']-0x1:0x1;return null;}else if(_0x30a114&&_0x3d1e8e[_0x30a114['agicommand']]){_0x43cede=_0x3d1e8e[_0x30a114['agicommand']](_0x30a114);logger[_0xeee0('0xe')](_0xeee0('0x47'),JSON[_0xeee0('0x34')](_0x43cede,null,0x2));if(_0x43cede&&_0x43cede[_0xeee0('0x48')]===AGI_CODE_SUCCESS&&_0x43cede['result']!==AGI_RESULT_ERROR&&!_0x8b9755[_0xeee0('0x1d')]){logger['debug'](_0xeee0('0x47'),getLogFromObject(_0x43cede));return _[_0xeee0('0x49')](_0x43cede[_0xeee0('0x4a')])?null:_0x43cede[_0xeee0('0x4a')]['toString']();}else{logger['error'](_0xeee0('0x47'),getLogFromObject(_0x43cede));return null;}}else{logger[_0xeee0('0xa')](_0xeee0('0x4b'));return null;}}catch(_0x363cad){logger[_0xeee0('0xa')](_0x363cad[_0xeee0('0xb')]);return null;}});if(_0x1da0b8['finally']){logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x4c'),_0x8b9755[_0xeee0('0x16')],_0x8b9755[_0xeee0('0x1a')],_0x8b9755['callerid'],_0x8b9755[_0xeee0('0x17')],_0x8b9755['uniqueid']));_0x32c58d['traverseBFS'](_0x1da0b8[_0xeee0('0x4d')]['id'],function(_0x45ac01){try{_0x45ac01=_0x3d1e8e[_0xeee0('0x3f')](_0x45ac01);logger[_0xeee0('0x33')](_0xeee0('0x40'),JSON[_0xeee0('0x34')](_0x45ac01,null,0x2));if(_0x45ac01&&_0x3d1e8e[_0x45ac01['agicommand']]){_0x43cede=_0x3d1e8e[_0x45ac01[_0xeee0('0x41')]](_0x45ac01);if(_0x43cede){logger[_0xeee0('0x33')](_0xeee0('0x47'),getLogFromObject(_0x43cede));return _['isUndefined'](_0x43cede[_0xeee0('0x4a')])?null:_0x43cede[_0xeee0('0x4a')]['toString']();}else{logger[_0xeee0('0xa')]('response',getLogFromObject(_0x43cede));return null;}}else{logger[_0xeee0('0xa')](_0xeee0('0x4b'));return null;}}catch(_0xe0de26){logger['error'](_0xe0de26[_0xeee0('0xb')]);return null;}});}logger[_0xeee0('0xe')](util[_0xeee0('0xf')](_0xeee0('0x4e'),_0x8b9755[_0xeee0('0x16')],_0x8b9755['calleridname'],_0x8b9755[_0xeee0('0x1c')],_0x8b9755[_0xeee0('0x17')],_0x8b9755[_0xeee0('0x18')]));logger[_0xeee0('0xe')](util['format'](_0xeee0('0x4f'),_0x8b9755[_0xeee0('0x44')],_0x8b9755[_0xeee0('0x45')],parseInt(_0x8b9755[_0xeee0('0x46')],0xa)+0x1));_0x8b9755[_0xeee0('0x50')](_0x8b9755['context'],_0x8b9755[_0xeee0('0x45')],parseInt(_0x8b9755[_0xeee0('0x46')],0xa)+0x1);_0x8b9755['close']();}}else{logger['error'](util[_0xeee0('0xf')]('Project\x20%s\x20not\x20published',_0x8b9755['arg_1']));_0x8b9755[_0xeee0('0x50')](_0x8b9755[_0xeee0('0x44')],_0x8b9755[_0xeee0('0x45')],parseInt(_0x8b9755[_0xeee0('0x46')],0xa)+0x1);_0x8b9755[_0xeee0('0x36')]();}}else{logger[_0xeee0('0xa')](util[_0xeee0('0xf')]('Project\x20%s\x20not\x20found',_0x8b9755[_0xeee0('0x16')]));_0x8b9755[_0xeee0('0x50')](_0x8b9755['context'],_0x8b9755['extension'],parseInt(_0x8b9755[_0xeee0('0x46')],0xa)+0x1);_0x8b9755[_0xeee0('0x36')]();}}function main(){var _0x352e85;return utilLicense[_0xeee0('0x51')]()[_0xeee0('0x2d')](function(_0x499c81){if(_0x499c81){if(_0x499c81[_0xeee0('0x52')]){if(_0x499c81[_0xeee0('0x53')]&&_0x499c81[_0xeee0('0x53')]>0x0){logger['info'](util[_0xeee0('0xf')](_0xeee0('0x54'),_0x499c81['callysquare']));_0x352e85=_0x499c81['callysquare'];}else{logger[_0xeee0('0xe')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xeee0('0xe')](_0xeee0('0x55'));_0x352e85=-0x1;}}})['catch'](function(_0x5a2b78){logger[_0xeee0('0xa')](_0xeee0('0x56'),_0x5a2b78[_0xeee0('0xb')]);})[_0xeee0('0x4d')](function(){var _0x3c4e11=require('./server')(config[_0xeee0('0x5')][_0xeee0('0x11')],config['agi']['ip'],_0x352e85);_0x3c4e11['on'](_0xeee0('0xa'),errorHandler);_0x3c4e11['on'](_0xeee0('0x57'),listeningHandler);_0x3c4e11['on'](_0xeee0('0x58'),connectionHandler);_0x3c4e11['on'](_0xeee0('0x36'),closeHandler);});}main();