292583c4e12b9f8f3b4feab6cd56e4d4944a6ed2
[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 _0x6774=['value','catch','then','indexOf','agi_','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','error','close','timeout','evtHangup','hangup','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear','vertex','gotoc','context','extension','priority','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\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','defaults','127.0.0.1','nextTick','stack','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','calleridname','dnid','uniqueid','arg_1','callerid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','root','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','length','source','target','addEdge'];(function(_0x1da279,_0x4cb389){var _0x325dc3=function(_0x3611a6){while(--_0x3611a6){_0x1da279['push'](_0x1da279['shift']());}};_0x325dc3(++_0x4cb389);}(_0x6774,0xe4));var _0x4677=function(_0xd3d1ce,_0x3d1146){_0xd3d1ce=_0xd3d1ce-0x0;var _0x584b1d=_0x6774[_0xd3d1ce];return _0x584b1d;};'use strict';var parser=require(_0x4677('0x0'));var _=require(_0x4677('0x1'));var syncho=require(_0x4677('0x2'));var util=require(_0x4677('0x3'));var moment=require(_0x4677('0x4'));var config=require(_0x4677('0x5'));var logger=require(_0x4677('0x6'))(_0x4677('0x7'));var utilLicense=require(_0x4677('0x8'));var rpc=require(_0x4677('0x9'));var mailRpc=require(_0x4677('0xa'));var Graph=require(_0x4677('0xb'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x4677('0x7')]=_[_0x4677('0xc')](config[_0x4677('0x7')],{'ip':_0x4677('0xd'),'port':0x11dd});function connectionHandler(_0x419d74){process[_0x4677('0xe')](function(){syncho(function(){try{setChannelVariables(_0x419d74);agiHandler(_0x419d74);}catch(_0x62ac2a){logger['error'](_0x62ac2a[_0x4677('0xf')]);}});});}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x4677('0x7')][_0x4677('0x10')]);logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x13'),config[_0x4677('0x7')]['ip'],config[_0x4677('0x7')][_0x4677('0x10')]));}function errorHandler(_0x2f4398){if(_0x2f4398&&_0x2f4398[_0x4677('0x14')]&&_0x2f4398[_0x4677('0x15')]){logger['error'](util[_0x4677('0x12')](_0x4677('0x16'),_0x2f4398['name'],_0x2f4398['message']));}else{logger['error'](util[_0x4677('0x12')](_0x4677('0x17'),_0x2f4398[_0x4677('0xf')]));}}function closeHandler(){logger[_0x4677('0x11')](util[_0x4677('0x12')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x4677('0x18')],this['callerid'],this[_0x4677('0x19')],this[_0x4677('0x1a')]));try{createSquareReport(this);}catch(_0x2a24ad){logger['error'](_0x2a24ad['stack']);}}function timeoutHandler(){logger[_0x4677('0x11')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x4677('0x1b')],this[_0x4677('0x18')],this[_0x4677('0x1c')],this[_0x4677('0x19')],this[_0x4677('0x1a')]));}function hangupHandler(){logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x1d'),this[_0x4677('0x1b')],this[_0x4677('0x18')],this['callerid'],this['dnid'],this[_0x4677('0x1a')]));this['evtHangup']=!![];}function getRoot(_0x3ad84e){return parser[_0x4677('0x1e')](_0x3ad84e,{'object':!![]})[_0x4677('0x1f')][_0x4677('0x20')];}function addVertex(_0x5dab14,_0x3189e6,_0x3c8d0d){_0x3189e6[_0x4677('0x21')]=_0x3c8d0d;if(_0x3189e6[_0x4677('0x22')]('retry')){_0x3189e6[_0x4677('0x23')]=parseInt(_0x3189e6[_0x4677('0x24')],0xa);}_0x5dab14[_0x4677('0x25')](_[_0x4677('0x26')](_0x3189e6,_0x4677('0x27')));}function initGraph(_0x20aba0,_0x162bac){var _0x3d0b92=new Graph();for(var _0x5523cb in _0x20aba0){if(_0x20aba0['hasOwnProperty'](_0x5523cb)){if(_[_0x4677('0x28')](_0x20aba0[_0x5523cb])){for(var _0x19c141=0x0;_0x19c141<_0x20aba0[_0x5523cb][_0x4677('0x29')];_0x19c141+=0x1){addVertex(_0x3d0b92,_0x20aba0[_0x5523cb][_0x19c141],_0x5523cb);}}else{addVertex(_0x3d0b92,_0x20aba0[_0x5523cb],_0x5523cb);}}}for(var _0x3b2273=0x0;_0x3b2273<_0x162bac[_0x4677('0x29')];_0x3b2273+=0x1){if(_0x162bac[_0x3b2273][_0x4677('0x2a')]&&_0x162bac[_0x3b2273][_0x4677('0x2b')]){_0x3d0b92[_0x4677('0x2c')](_0x162bac[_0x3b2273][_0x4677('0x2a')],_0x162bac[_0x3b2273]['target'],_0x162bac[_0x3b2273][_0x4677('0x2d')]);}}return _0x3d0b92;}function getSquareProject(_0x2f7142,_0x3d412e){rpc['getSquareProject'](_0x2f7142)['then'](function(_0x1fd6e6){_0x3d412e(null,_0x1fd6e6);})[_0x4677('0x2e')](function(_0x3bae3a){_0x3d412e(null,_0x3bae3a);});}function createSquareReport(_0x4d4e81,_0x3c1dd6){rpc['createSquareReport'](_0x4d4e81)[_0x4677('0x2f')](function(_0x22b5a3){if(_0x3c1dd6){_0x3c1dd6(null,_0x22b5a3);}})['catch'](function(_0x413dbc){if(_0x3c1dd6){_0x3c1dd6(null,_0x413dbc);}});}function setChannelVariables(_0x2294df){for(var _0xf0d9ad in _0x2294df){if(_0x2294df[_0x4677('0x22')](_0xf0d9ad)){if(_0xf0d9ad[_0x4677('0x30')](_0x4677('0x31'))===0x0){_0x2294df[_0xf0d9ad['substring'](0x4)]=_0x2294df[_0xf0d9ad];delete _0x2294df[_0xf0d9ad];}}}}function getLogFromObject(_0x2fc9c3){return util['inspect'](_0x2fc9c3,{'showHidden':![],'depth':null});}function agiHandler(_0x3150f1){var _0x25d1a6,_0x1aa144,_0x44eb12,_0x3037b2,_0x5b7b4d;logger[_0x4677('0x32')](_0x4677('0x33'),JSON[_0x4677('0x34')](_0x3150f1,null,0x2));logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x35'),_0x3150f1[_0x4677('0x1b')],_0x3150f1[_0x4677('0x18')],_0x3150f1['callerid'],_0x3150f1[_0x4677('0x19')],_0x3150f1['uniqueid']));_0x3150f1['on'](_0x4677('0x36'),errorHandler);_0x3150f1['on'](_0x4677('0x37'),closeHandler);_0x3150f1['on'](_0x4677('0x38'),timeoutHandler);_0x3150f1[_0x4677('0x39')]=![];_0x3150f1['on'](_0x4677('0x3a'),hangupHandler);var _0x21757d=getSquareProject['sync'](null,_0x3150f1[_0x4677('0x1b')]);if(_0x21757d){if(_0x21757d['production']){_0x25d1a6=getRoot(_0x21757d[_0x4677('0x3b')]);if(_0x25d1a6&&_0x25d1a6[_0x4677('0x3c')]){logger[_0x4677('0x32')](_0x4677('0x20'),JSON['stringify'](_0x25d1a6,null,0x2));_0x3150f1[_0x4677('0x3d')]=moment()[_0x4677('0x12')](_0x4677('0x3e'));_0x1aa144=initGraph(_[_0x4677('0x26')](_0x25d1a6,_0x4677('0x27')),_0x25d1a6[_0x4677('0x27')]);_0x44eb12=new Vertices(_0x3150f1,rpc,mailRpc);logger[_0x4677('0x11')](util[_0x4677('0x12')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3150f1[_0x4677('0x1b')],_0x3150f1['calleridname'],_0x3150f1[_0x4677('0x1c')],_0x3150f1[_0x4677('0x19')],_0x3150f1[_0x4677('0x1a')]));_0x1aa144[_0x4677('0x3f')](_0x25d1a6[_0x4677('0x3c')]['id'],function(_0x30ee44){try{_0x30ee44=_0x44eb12[_0x4677('0x40')](_0x30ee44);logger[_0x4677('0x32')](_0x4677('0x41'),JSON[_0x4677('0x34')](_0x30ee44,null,0x2));if(_0x30ee44[_0x4677('0x21')]===_0x4677('0x42')){logger[_0x4677('0x11')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x3150f1[_0x4677('0x43')]=_0x30ee44[_0x4677('0x43')]||_0x3150f1[_0x4677('0x43')];_0x3150f1[_0x4677('0x44')]=_0x30ee44[_0x4677('0x44')];_0x3150f1[_0x4677('0x45')]=_0x30ee44['priority']?_0x30ee44[_0x4677('0x45')]-0x1:0x1;return null;}else if(_0x30ee44&&_0x44eb12[_0x30ee44['agicommand']]){_0x5b7b4d=_0x44eb12[_0x30ee44[_0x4677('0x21')]](_0x30ee44);logger[_0x4677('0x11')](_0x4677('0x46'),JSON[_0x4677('0x34')](_0x5b7b4d,null,0x2));if(_0x5b7b4d&&_0x5b7b4d[_0x4677('0x47')]===AGI_CODE_SUCCESS&&_0x5b7b4d[_0x4677('0x48')]!==AGI_RESULT_ERROR&&!_0x3150f1[_0x4677('0x39')]){logger[_0x4677('0x32')](_0x4677('0x46'),getLogFromObject(_0x5b7b4d));return _[_0x4677('0x49')](_0x5b7b4d[_0x4677('0x48')])?null:_0x5b7b4d[_0x4677('0x48')][_0x4677('0x4a')]();}else{logger['error'](_0x4677('0x46'),getLogFromObject(_0x5b7b4d));return null;}}else{logger['error'](_0x4677('0x4b'));return null;}}catch(_0x5d600c){logger[_0x4677('0x36')](_0x5d600c[_0x4677('0xf')]);return null;}});if(_0x25d1a6[_0x4677('0x4c')]){logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x4d'),_0x3150f1[_0x4677('0x1b')],_0x3150f1['calleridname'],_0x3150f1['callerid'],_0x3150f1[_0x4677('0x19')],_0x3150f1[_0x4677('0x1a')]));_0x1aa144[_0x4677('0x3f')](_0x25d1a6['finally']['id'],function(_0x5da062){try{_0x5da062=_0x44eb12['clear'](_0x5da062);logger[_0x4677('0x32')](_0x4677('0x41'),JSON['stringify'](_0x5da062,null,0x2));if(_0x5da062&&_0x44eb12[_0x5da062['agicommand']]){_0x5b7b4d=_0x44eb12[_0x5da062[_0x4677('0x21')]](_0x5da062);if(_0x5b7b4d){logger['debug']('response',getLogFromObject(_0x5b7b4d));return _[_0x4677('0x49')](_0x5b7b4d['result'])?null:_0x5b7b4d[_0x4677('0x48')][_0x4677('0x4a')]();}else{logger[_0x4677('0x36')](_0x4677('0x46'),getLogFromObject(_0x5b7b4d));return null;}}else{logger[_0x4677('0x36')]('agicommand\x20not\x20found');return null;}}catch(_0x295a77){logger[_0x4677('0x36')](_0x295a77[_0x4677('0xf')]);return null;}});}logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x4e'),_0x3150f1[_0x4677('0x1b')],_0x3150f1['calleridname'],_0x3150f1[_0x4677('0x1c')],_0x3150f1['dnid'],_0x3150f1[_0x4677('0x1a')]));logger[_0x4677('0x11')](util[_0x4677('0x12')](_0x4677('0x4f'),_0x3150f1[_0x4677('0x43')],_0x3150f1[_0x4677('0x44')],parseInt(_0x3150f1[_0x4677('0x45')],0xa)+0x1));_0x3150f1[_0x4677('0x50')](_0x3150f1[_0x4677('0x43')],_0x3150f1[_0x4677('0x44')],parseInt(_0x3150f1['priority'],0xa)+0x1);_0x3150f1['close']();}}else{logger[_0x4677('0x36')](util[_0x4677('0x12')](_0x4677('0x51'),_0x3150f1[_0x4677('0x1b')]));_0x3150f1[_0x4677('0x50')](_0x3150f1[_0x4677('0x43')],_0x3150f1['extension'],parseInt(_0x3150f1[_0x4677('0x45')],0xa)+0x1);_0x3150f1['close']();}}else{logger[_0x4677('0x36')](util[_0x4677('0x12')]('Project\x20%s\x20not\x20found',_0x3150f1[_0x4677('0x1b')]));_0x3150f1[_0x4677('0x50')](_0x3150f1[_0x4677('0x43')],_0x3150f1[_0x4677('0x44')],parseInt(_0x3150f1[_0x4677('0x45')],0xa)+0x1);_0x3150f1[_0x4677('0x37')]();}}function main(){var _0x278f1b;return utilLicense[_0x4677('0x52')]()['then'](function(_0x312478){if(_0x312478){if(_0x312478[_0x4677('0x53')]){if(_0x312478['callysquare']&&_0x312478[_0x4677('0x54')]>0x0){logger[_0x4677('0x11')](util[_0x4677('0x12')]('[LICENSE]\x20CHANNELS:\x20%s',_0x312478['callysquare']));_0x278f1b=_0x312478[_0x4677('0x54')];}else{logger['info'](_0x4677('0x55'));}}else{logger[_0x4677('0x11')](_0x4677('0x56'));_0x278f1b=-0x1;}}})[_0x4677('0x2e')](function(_0x143595){logger['error'](_0x4677('0x57'),_0x143595['stack']);})[_0x4677('0x4c')](function(){var _0x394f21=require(_0x4677('0x58'))(config[_0x4677('0x7')][_0x4677('0x10')],config[_0x4677('0x7')]['ip'],_0x278f1b);_0x394f21['on'](_0x4677('0x36'),errorHandler);_0x394f21['on'](_0x4677('0x59'),listeningHandler);_0x394f21['on'](_0x4677('0x5a'),connectionHandler);_0x394f21['on']('close',closeHandler);});}main();