Built motion from commit (unavailable).|2.5.19
[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 _0x00bb=['response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[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','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','moment','../../config/logger','agi','./rpc','./mailRpc','defaults','127.0.0.1','nextTick','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','format','[%s]\x20%s','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','dnid','uniqueid','arg_1','calleridname','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','isArray','length','source','target','value','then','catch','createSquareReport','indexOf','substring','inspect','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','production','start','debug','root','stringify','joinAt','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','context','extension','priority'];(function(_0x3f6b1b,_0x58d3d6){var _0x4a3d2b=function(_0x5648f0){while(--_0x5648f0){_0x3f6b1b['push'](_0x3f6b1b['shift']());}};_0x4a3d2b(++_0x58d3d6);}(_0x00bb,0x1d8));var _0xb00b=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x00bb[_0x311c35];return _0x5cc50c;};'use strict';var parser=require(_0xb00b('0x0'));var _=require(_0xb00b('0x1'));var syncho=require(_0xb00b('0x2'));var util=require('util');var moment=require(_0xb00b('0x3'));var config=require('../../config/environment');var logger=require(_0xb00b('0x4'))(_0xb00b('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0xb00b('0x6'));var mailRpc=require(_0xb00b('0x7'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xb00b('0x8')](config[_0xb00b('0x5')],{'ip':_0xb00b('0x9'),'port':0x11dd});function connectionHandler(_0x37f07d){process[_0xb00b('0xa')](function(){syncho(function(){try{setChannelVariables(_0x37f07d);agiHandler(_0x37f07d);}catch(_0x3c36c5){logger['error'](_0x3c36c5['stack']);}});});}function listeningHandler(){console[_0xb00b('0xb')](_0xb00b('0xc'),config[_0xb00b('0x5')][_0xb00b('0xd')]);logger[_0xb00b('0xe')](util['format'](_0xb00b('0xf'),config['agi']['ip'],config['agi']['port']));}function errorHandler(_0x4ff792){if(_0x4ff792&&_0x4ff792[_0xb00b('0x10')]&&_0x4ff792[_0xb00b('0x11')]){logger[_0xb00b('0x12')](util[_0xb00b('0x13')](_0xb00b('0x14'),_0x4ff792['name'],_0x4ff792[_0xb00b('0x11')]));}else{logger[_0xb00b('0x12')](util['format'](_0xb00b('0x15'),_0x4ff792[_0xb00b('0x16')]));}}function closeHandler(){logger['info'](util['format'](_0xb00b('0x17'),this['arg_1'],this['calleridname'],this[_0xb00b('0x18')],this[_0xb00b('0x19')],this[_0xb00b('0x1a')]));try{createSquareReport(this);}catch(_0xbb72fc){logger['error'](_0xbb72fc[_0xb00b('0x16')]);}}function timeoutHandler(){logger['info'](util[_0xb00b('0x13')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xb00b('0x1b')],this['calleridname'],this[_0xb00b('0x18')],this[_0xb00b('0x19')],this['uniqueid']));}function hangupHandler(){logger['info'](util[_0xb00b('0x13')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xb00b('0x1b')],this[_0xb00b('0x1c')],this[_0xb00b('0x18')],this[_0xb00b('0x19')],this['uniqueid']));this[_0xb00b('0x1d')]=!![];}function getRoot(_0x4df284){return parser[_0xb00b('0x1e')](_0x4df284,{'object':!![]})[_0xb00b('0x1f')]['root'];}function addVertex(_0x231293,_0x2896d1,_0x520444){_0x2896d1[_0xb00b('0x20')]=_0x520444;if(_0x2896d1[_0xb00b('0x21')]('retry')){_0x2896d1[_0xb00b('0x22')]=parseInt(_0x2896d1[_0xb00b('0x23')],0xa);}_0x231293[_0xb00b('0x24')](_[_0xb00b('0x25')](_0x2896d1,'mxCell'));}function initGraph(_0x50be6c,_0x3785e9){var _0x490380=new Graph();for(var _0x550587 in _0x50be6c){if(_0x50be6c['hasOwnProperty'](_0x550587)){if(_[_0xb00b('0x26')](_0x50be6c[_0x550587])){for(var _0x73b6b0=0x0;_0x73b6b0<_0x50be6c[_0x550587][_0xb00b('0x27')];_0x73b6b0+=0x1){addVertex(_0x490380,_0x50be6c[_0x550587][_0x73b6b0],_0x550587);}}else{addVertex(_0x490380,_0x50be6c[_0x550587],_0x550587);}}}for(var _0x3825af=0x0;_0x3825af<_0x3785e9[_0xb00b('0x27')];_0x3825af+=0x1){if(_0x3785e9[_0x3825af][_0xb00b('0x28')]&&_0x3785e9[_0x3825af][_0xb00b('0x29')]){_0x490380['addEdge'](_0x3785e9[_0x3825af][_0xb00b('0x28')],_0x3785e9[_0x3825af]['target'],_0x3785e9[_0x3825af][_0xb00b('0x2a')]);}}return _0x490380;}function getSquareProject(_0x348165,_0x5424ca){rpc['getSquareProject'](_0x348165)[_0xb00b('0x2b')](function(_0x280ed3){_0x5424ca(null,_0x280ed3);})[_0xb00b('0x2c')](function(_0x183233){_0x5424ca(null,_0x183233);});}function createSquareReport(_0x303625,_0x2b9824){rpc[_0xb00b('0x2d')](_0x303625)[_0xb00b('0x2b')](function(_0x149c1a){if(_0x2b9824){_0x2b9824(null,_0x149c1a);}})['catch'](function(_0x2b5f41){if(_0x2b9824){_0x2b9824(null,_0x2b5f41);}});}function setChannelVariables(_0x44918d){for(var _0x49078d in _0x44918d){if(_0x44918d[_0xb00b('0x21')](_0x49078d)){if(_0x49078d[_0xb00b('0x2e')]('agi_')===0x0){_0x44918d[_0x49078d[_0xb00b('0x2f')](0x4)]=_0x44918d[_0x49078d];delete _0x44918d[_0x49078d];}}}}function getLogFromObject(_0x4d2ee5){return util[_0xb00b('0x30')](_0x4d2ee5,{'showHidden':![],'depth':null});}function agiHandler(_0x4117f2){var _0x322879,_0x1be4ba,_0x338864,_0x1436ad,_0x17f613;logger['debug']('variables',JSON['stringify'](_0x4117f2,null,0x2));logger[_0xb00b('0xe')](util[_0xb00b('0x13')](_0xb00b('0x31'),_0x4117f2[_0xb00b('0x1b')],_0x4117f2['calleridname'],_0x4117f2[_0xb00b('0x18')],_0x4117f2[_0xb00b('0x19')],_0x4117f2[_0xb00b('0x1a')]));_0x4117f2['on'](_0xb00b('0x12'),errorHandler);_0x4117f2['on'](_0xb00b('0x32'),closeHandler);_0x4117f2['on'](_0xb00b('0x33'),timeoutHandler);_0x4117f2[_0xb00b('0x1d')]=![];_0x4117f2['on'](_0xb00b('0x34'),hangupHandler);var _0x5efc18=getSquareProject['sync'](null,_0x4117f2[_0xb00b('0x1b')]);if(_0x5efc18){if(_0x5efc18['production']){_0x322879=getRoot(_0x5efc18[_0xb00b('0x35')]);if(_0x322879&&_0x322879[_0xb00b('0x36')]){logger[_0xb00b('0x37')](_0xb00b('0x38'),JSON[_0xb00b('0x39')](_0x322879,null,0x2));_0x4117f2[_0xb00b('0x3a')]=moment()[_0xb00b('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x1be4ba=initGraph(_[_0xb00b('0x25')](_0x322879,_0xb00b('0x3b')),_0x322879[_0xb00b('0x3b')]);_0x338864=new Vertices(_0x4117f2,rpc,mailRpc);logger[_0xb00b('0xe')](util[_0xb00b('0x13')](_0xb00b('0x3c'),_0x4117f2['arg_1'],_0x4117f2[_0xb00b('0x1c')],_0x4117f2[_0xb00b('0x18')],_0x4117f2['dnid'],_0x4117f2[_0xb00b('0x1a')]));_0x1be4ba[_0xb00b('0x3d')](_0x322879[_0xb00b('0x36')]['id'],function(_0x2d8620){try{_0x2d8620=_0x338864[_0xb00b('0x3e')](_0x2d8620);logger['debug'](_0xb00b('0x3f'),JSON[_0xb00b('0x39')](_0x2d8620,null,0x2));if(_0x2d8620[_0xb00b('0x20')]===_0xb00b('0x40')){logger['info']('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x4117f2[_0xb00b('0x41')]=_0x2d8620[_0xb00b('0x41')]||_0x4117f2[_0xb00b('0x41')];_0x4117f2[_0xb00b('0x42')]=_0x2d8620[_0xb00b('0x42')];_0x4117f2[_0xb00b('0x43')]=_0x2d8620[_0xb00b('0x43')]?_0x2d8620['priority']-0x1:0x1;return null;}else if(_0x2d8620&&_0x338864[_0x2d8620[_0xb00b('0x20')]]){_0x17f613=_0x338864[_0x2d8620[_0xb00b('0x20')]](_0x2d8620);logger[_0xb00b('0xe')](_0xb00b('0x44'),JSON[_0xb00b('0x39')](_0x17f613,null,0x2));if(_0x17f613&&_0x17f613[_0xb00b('0x45')]===AGI_CODE_SUCCESS&&_0x17f613[_0xb00b('0x46')]!==AGI_RESULT_ERROR&&!_0x4117f2[_0xb00b('0x1d')]){logger[_0xb00b('0x37')](_0xb00b('0x44'),getLogFromObject(_0x17f613));return _[_0xb00b('0x47')](_0x17f613[_0xb00b('0x46')])?null:_0x17f613['result'][_0xb00b('0x48')]();}else{logger[_0xb00b('0x12')](_0xb00b('0x44'),getLogFromObject(_0x17f613));return null;}}else{logger[_0xb00b('0x12')](_0xb00b('0x49'));return null;}}catch(_0x2d9174){logger[_0xb00b('0x12')](_0x2d9174[_0xb00b('0x16')]);return null;}});if(_0x322879[_0xb00b('0x4a')]){logger[_0xb00b('0xe')](util[_0xb00b('0x13')](_0xb00b('0x4b'),_0x4117f2['arg_1'],_0x4117f2['calleridname'],_0x4117f2['callerid'],_0x4117f2[_0xb00b('0x19')],_0x4117f2[_0xb00b('0x1a')]));_0x1be4ba['traverseBFS'](_0x322879[_0xb00b('0x4a')]['id'],function(_0x3c0fa){try{_0x3c0fa=_0x338864[_0xb00b('0x3e')](_0x3c0fa);logger[_0xb00b('0x37')]('vertex',JSON['stringify'](_0x3c0fa,null,0x2));if(_0x3c0fa&&_0x338864[_0x3c0fa[_0xb00b('0x20')]]){_0x17f613=_0x338864[_0x3c0fa[_0xb00b('0x20')]](_0x3c0fa);if(_0x17f613){logger['debug']('response',getLogFromObject(_0x17f613));return _[_0xb00b('0x47')](_0x17f613[_0xb00b('0x46')])?null:_0x17f613['result'][_0xb00b('0x48')]();}else{logger['error']('response',getLogFromObject(_0x17f613));return null;}}else{logger['error'](_0xb00b('0x49'));return null;}}catch(_0x481515){logger[_0xb00b('0x12')](_0x481515[_0xb00b('0x16')]);return null;}});}logger[_0xb00b('0xe')](util[_0xb00b('0x13')](_0xb00b('0x4c'),_0x4117f2[_0xb00b('0x1b')],_0x4117f2['calleridname'],_0x4117f2['callerid'],_0x4117f2[_0xb00b('0x19')],_0x4117f2[_0xb00b('0x1a')]));logger['info'](util[_0xb00b('0x13')](_0xb00b('0x4d'),_0x4117f2['context'],_0x4117f2[_0xb00b('0x42')],parseInt(_0x4117f2[_0xb00b('0x43')],0xa)+0x1));_0x4117f2[_0xb00b('0x4e')](_0x4117f2['context'],_0x4117f2['extension'],parseInt(_0x4117f2[_0xb00b('0x43')],0xa)+0x1);_0x4117f2[_0xb00b('0x32')]();}}else{logger[_0xb00b('0x12')](util[_0xb00b('0x13')]('Project\x20%s\x20not\x20published',_0x4117f2[_0xb00b('0x1b')]));_0x4117f2[_0xb00b('0x4e')](_0x4117f2['context'],_0x4117f2['extension'],parseInt(_0x4117f2[_0xb00b('0x43')],0xa)+0x1);_0x4117f2['close']();}}else{logger[_0xb00b('0x12')](util[_0xb00b('0x13')](_0xb00b('0x4f'),_0x4117f2[_0xb00b('0x1b')]));_0x4117f2[_0xb00b('0x4e')](_0x4117f2[_0xb00b('0x41')],_0x4117f2['extension'],parseInt(_0x4117f2[_0xb00b('0x43')],0xa)+0x1);_0x4117f2['close']();}}function main(){var _0x37d4d2;return utilLicense[_0xb00b('0x50')]()[_0xb00b('0x2b')](function(_0x5ac79e){if(_0x5ac79e){if(_0x5ac79e[_0xb00b('0x51')]){if(_0x5ac79e[_0xb00b('0x52')]&&_0x5ac79e[_0xb00b('0x52')]>0x0){logger['info'](util[_0xb00b('0x13')](_0xb00b('0x53'),_0x5ac79e[_0xb00b('0x52')]));_0x37d4d2=_0x5ac79e[_0xb00b('0x52')];}else{logger[_0xb00b('0xe')](_0xb00b('0x54'));}}else{logger[_0xb00b('0xe')](_0xb00b('0x55'));_0x37d4d2=-0x1;}}})['catch'](function(_0x153551){logger[_0xb00b('0x12')](_0xb00b('0x56'),_0x153551['stack']);})[_0xb00b('0x4a')](function(){var _0x24a8a2=require(_0xb00b('0x57'))(config[_0xb00b('0x5')][_0xb00b('0xd')],config['agi']['ip'],_0x37d4d2);_0x24a8a2['on'](_0xb00b('0x12'),errorHandler);_0x24a8a2['on'](_0xb00b('0x58'),listeningHandler);_0x24a8a2['on'](_0xb00b('0x59'),connectionHandler);_0x24a8a2['on'](_0xb00b('0x32'),closeHandler);});}main();