Built motion from commit (unavailable).|2.5.30
[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 _0xf9d5=['production','start','debug','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','finally','isUndefined','[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:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','listening','lodash','syncho','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./vertices','defaults','nextTick','error','stack','log','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','format','[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','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','root','retry','maxRetry','addVertex','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','agi_','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','evtHangup','hangup'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf9d5,0x122));var _0x5f9d=function(_0x4b0db3,_0x3295a4){_0x4b0db3=_0x4b0db3-0x0;var _0x245545=_0xf9d5[_0x4b0db3];return _0x245545;};'use strict';var parser=require('xml2json');var _=require(_0x5f9d('0x0'));var syncho=require(_0x5f9d('0x1'));var util=require('util');var moment=require(_0x5f9d('0x2'));var config=require(_0x5f9d('0x3'));var logger=require(_0x5f9d('0x4'))(_0x5f9d('0x5'));var utilLicense=require(_0x5f9d('0x6'));var rpc=require(_0x5f9d('0x7'));var mailRpc=require(_0x5f9d('0x8'));var Graph=require('./graph');var Vertices=require(_0x5f9d('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x5f9d('0xa')](config[_0x5f9d('0x5')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x3420b2){process[_0x5f9d('0xb')](function(){syncho(function(){try{setChannelVariables(_0x3420b2);agiHandler(_0x3420b2);}catch(_0x46e265){logger[_0x5f9d('0xc')](_0x46e265[_0x5f9d('0xd')]);}});});}function listeningHandler(){console[_0x5f9d('0xe')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x5f9d('0x5')][_0x5f9d('0xf')]);logger['info'](util['format'](_0x5f9d('0x10'),config[_0x5f9d('0x5')]['ip'],config[_0x5f9d('0x5')]['port']));}function errorHandler(_0x235de2){if(_0x235de2&&_0x235de2[_0x5f9d('0x11')]&&_0x235de2[_0x5f9d('0x12')]){logger[_0x5f9d('0xc')](util['format'](_0x5f9d('0x13'),_0x235de2[_0x5f9d('0x11')],_0x235de2[_0x5f9d('0x12')]));}else{logger['error'](util[_0x5f9d('0x14')](_0x5f9d('0x15'),_0x235de2['stack']));}}function closeHandler(){logger['info'](util[_0x5f9d('0x14')](_0x5f9d('0x16'),this[_0x5f9d('0x17')],this[_0x5f9d('0x18')],this[_0x5f9d('0x19')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x54bd00){logger[_0x5f9d('0xc')](_0x54bd00['stack']);}}function timeoutHandler(){logger[_0x5f9d('0x1a')](util['format'](_0x5f9d('0x1b'),this[_0x5f9d('0x17')],this[_0x5f9d('0x18')],this['callerid'],this[_0x5f9d('0x1c')],this[_0x5f9d('0x1d')]));}function hangupHandler(){logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')](_0x5f9d('0x1e'),this[_0x5f9d('0x17')],this[_0x5f9d('0x18')],this[_0x5f9d('0x19')],this[_0x5f9d('0x1c')],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x5465b1){return parser[_0x5f9d('0x1f')](_0x5465b1,{'object':!![]})['mxGraphModel'][_0x5f9d('0x20')];}function addVertex(_0x5a3472,_0x9d86ce,_0x564886){_0x9d86ce['agicommand']=_0x564886;if(_0x9d86ce['hasOwnProperty'](_0x5f9d('0x21'))){_0x9d86ce[_0x5f9d('0x22')]=parseInt(_0x9d86ce[_0x5f9d('0x21')],0xa);}_0x5a3472[_0x5f9d('0x23')](_['omit'](_0x9d86ce,_0x5f9d('0x24')));}function initGraph(_0x272b93,_0x190402){var _0x74f212=new Graph();for(var _0x2d097f in _0x272b93){if(_0x272b93[_0x5f9d('0x25')](_0x2d097f)){if(_[_0x5f9d('0x26')](_0x272b93[_0x2d097f])){for(var _0x21cc63=0x0;_0x21cc63<_0x272b93[_0x2d097f][_0x5f9d('0x27')];_0x21cc63+=0x1){addVertex(_0x74f212,_0x272b93[_0x2d097f][_0x21cc63],_0x2d097f);}}else{addVertex(_0x74f212,_0x272b93[_0x2d097f],_0x2d097f);}}}for(var _0x1ec773=0x0;_0x1ec773<_0x190402['length'];_0x1ec773+=0x1){if(_0x190402[_0x1ec773][_0x5f9d('0x28')]&&_0x190402[_0x1ec773][_0x5f9d('0x29')]){_0x74f212[_0x5f9d('0x2a')](_0x190402[_0x1ec773][_0x5f9d('0x28')],_0x190402[_0x1ec773][_0x5f9d('0x29')],_0x190402[_0x1ec773][_0x5f9d('0x2b')]);}}return _0x74f212;}function getSquareProject(_0x38b10d,_0x101a80){rpc[_0x5f9d('0x2c')](_0x38b10d)['then'](function(_0x4ed27d){_0x101a80(null,_0x4ed27d);})['catch'](function(_0x118f77){_0x101a80(null,_0x118f77);});}function createSquareReport(_0x5b7bd4,_0x461a2a){rpc['createSquareReport'](_0x5b7bd4)[_0x5f9d('0x2d')](function(_0x5388a3){if(_0x461a2a){_0x461a2a(null,_0x5388a3);}})[_0x5f9d('0x2e')](function(_0xa0ab8c){if(_0x461a2a){_0x461a2a(null,_0xa0ab8c);}});}function setChannelVariables(_0x1f99a6){for(var _0x3b4933 in _0x1f99a6){if(_0x1f99a6[_0x5f9d('0x25')](_0x3b4933)){if(_0x3b4933['indexOf'](_0x5f9d('0x2f'))===0x0){_0x1f99a6[_0x3b4933['substring'](0x4)]=_0x1f99a6[_0x3b4933];delete _0x1f99a6[_0x3b4933];}}}}function getLogFromObject(_0xf30420){return util['inspect'](_0xf30420,{'showHidden':![],'depth':null});}function agiHandler(_0x299736){var _0x20f1ba,_0x5d3fe6,_0x526cce,_0x97826c,_0x36a6bc;logger['debug'](_0x5f9d('0x30'),JSON[_0x5f9d('0x31')](_0x299736,null,0x2));logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')](_0x5f9d('0x32'),_0x299736['arg_1'],_0x299736[_0x5f9d('0x18')],_0x299736[_0x5f9d('0x19')],_0x299736[_0x5f9d('0x1c')],_0x299736[_0x5f9d('0x1d')]));_0x299736['on'](_0x5f9d('0xc'),errorHandler);_0x299736['on'](_0x5f9d('0x33'),closeHandler);_0x299736['on']('timeout',timeoutHandler);_0x299736[_0x5f9d('0x34')]=![];_0x299736['on'](_0x5f9d('0x35'),hangupHandler);var _0x32ecc1=getSquareProject['sync'](null,_0x299736['arg_1']);if(_0x32ecc1){if(_0x32ecc1[_0x5f9d('0x36')]){_0x20f1ba=getRoot(_0x32ecc1[_0x5f9d('0x36')]);if(_0x20f1ba&&_0x20f1ba[_0x5f9d('0x37')]){logger[_0x5f9d('0x38')](_0x5f9d('0x20'),JSON['stringify'](_0x20f1ba,null,0x2));_0x299736['joinAt']=moment()[_0x5f9d('0x14')](_0x5f9d('0x39'));_0x5d3fe6=initGraph(_['omit'](_0x20f1ba,_0x5f9d('0x24')),_0x20f1ba['mxCell']);_0x526cce=new Vertices(_0x299736,rpc,mailRpc);logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x299736[_0x5f9d('0x17')],_0x299736[_0x5f9d('0x18')],_0x299736[_0x5f9d('0x19')],_0x299736['dnid'],_0x299736[_0x5f9d('0x1d')]));_0x5d3fe6[_0x5f9d('0x3a')](_0x20f1ba[_0x5f9d('0x37')]['id'],function(_0x3c43f6){try{_0x3c43f6=_0x526cce[_0x5f9d('0x3b')](_0x3c43f6);logger[_0x5f9d('0x38')](_0x5f9d('0x3c'),JSON[_0x5f9d('0x31')](_0x3c43f6,null,0x2));if(_0x3c43f6[_0x5f9d('0x3d')]===_0x5f9d('0x3e')){logger[_0x5f9d('0x1a')](_0x5f9d('0x3f'));_0x299736[_0x5f9d('0x40')]=_0x3c43f6[_0x5f9d('0x40')]||_0x299736[_0x5f9d('0x40')];_0x299736[_0x5f9d('0x41')]=_0x3c43f6[_0x5f9d('0x41')];_0x299736[_0x5f9d('0x42')]=_0x3c43f6[_0x5f9d('0x42')]?_0x3c43f6[_0x5f9d('0x42')]-0x1:0x1;return null;}else if(_0x3c43f6&&_0x526cce[_0x3c43f6[_0x5f9d('0x3d')]]){_0x36a6bc=_0x526cce[_0x3c43f6[_0x5f9d('0x3d')]](_0x3c43f6);logger[_0x5f9d('0x1a')](_0x5f9d('0x43'),JSON[_0x5f9d('0x31')](_0x36a6bc,null,0x2));if(_0x36a6bc&&_0x36a6bc[_0x5f9d('0x44')]===AGI_CODE_SUCCESS&&_0x36a6bc[_0x5f9d('0x45')]!==AGI_RESULT_ERROR&&!_0x299736[_0x5f9d('0x34')]){logger[_0x5f9d('0x38')](_0x5f9d('0x43'),getLogFromObject(_0x36a6bc));return _['isUndefined'](_0x36a6bc[_0x5f9d('0x45')])?null:_0x36a6bc['result'][_0x5f9d('0x46')]();}else{logger[_0x5f9d('0xc')](_0x5f9d('0x43'),getLogFromObject(_0x36a6bc));return null;}}else{logger[_0x5f9d('0xc')](_0x5f9d('0x47'));return null;}}catch(_0x476abf){logger[_0x5f9d('0xc')](_0x476abf['stack']);return null;}});if(_0x20f1ba[_0x5f9d('0x48')]){logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x299736[_0x5f9d('0x17')],_0x299736['calleridname'],_0x299736[_0x5f9d('0x19')],_0x299736[_0x5f9d('0x1c')],_0x299736[_0x5f9d('0x1d')]));_0x5d3fe6['traverseBFS'](_0x20f1ba['finally']['id'],function(_0x17cd97){try{_0x17cd97=_0x526cce[_0x5f9d('0x3b')](_0x17cd97);logger['debug'](_0x5f9d('0x3c'),JSON['stringify'](_0x17cd97,null,0x2));if(_0x17cd97&&_0x526cce[_0x17cd97[_0x5f9d('0x3d')]]){_0x36a6bc=_0x526cce[_0x17cd97[_0x5f9d('0x3d')]](_0x17cd97);if(_0x36a6bc){logger[_0x5f9d('0x38')](_0x5f9d('0x43'),getLogFromObject(_0x36a6bc));return _[_0x5f9d('0x49')](_0x36a6bc[_0x5f9d('0x45')])?null:_0x36a6bc[_0x5f9d('0x45')][_0x5f9d('0x46')]();}else{logger[_0x5f9d('0xc')](_0x5f9d('0x43'),getLogFromObject(_0x36a6bc));return null;}}else{logger['error'](_0x5f9d('0x47'));return null;}}catch(_0x2a5ebc){logger['error'](_0x2a5ebc[_0x5f9d('0xd')]);return null;}});}logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')](_0x5f9d('0x4a'),_0x299736[_0x5f9d('0x17')],_0x299736[_0x5f9d('0x18')],_0x299736[_0x5f9d('0x19')],_0x299736[_0x5f9d('0x1c')],_0x299736['uniqueid']));logger['info'](util[_0x5f9d('0x14')](_0x5f9d('0x4b'),_0x299736[_0x5f9d('0x40')],_0x299736[_0x5f9d('0x41')],parseInt(_0x299736[_0x5f9d('0x42')],0xa)+0x1));_0x299736[_0x5f9d('0x4c')](_0x299736[_0x5f9d('0x40')],_0x299736[_0x5f9d('0x41')],parseInt(_0x299736[_0x5f9d('0x42')],0xa)+0x1);_0x299736['close']();}}else{logger['error'](util[_0x5f9d('0x14')](_0x5f9d('0x4d'),_0x299736[_0x5f9d('0x17')]));_0x299736[_0x5f9d('0x4c')](_0x299736[_0x5f9d('0x40')],_0x299736[_0x5f9d('0x41')],parseInt(_0x299736[_0x5f9d('0x42')],0xa)+0x1);_0x299736[_0x5f9d('0x33')]();}}else{logger[_0x5f9d('0xc')](util[_0x5f9d('0x14')]('Project\x20%s\x20not\x20found',_0x299736['arg_1']));_0x299736[_0x5f9d('0x4c')](_0x299736[_0x5f9d('0x40')],_0x299736[_0x5f9d('0x41')],parseInt(_0x299736['priority'],0xa)+0x1);_0x299736[_0x5f9d('0x33')]();}}function main(){var _0x560290;return utilLicense[_0x5f9d('0x4e')]()['then'](function(_0x59022d){if(_0x59022d){if(_0x59022d[_0x5f9d('0x4f')]){if(_0x59022d['callysquare']&&_0x59022d[_0x5f9d('0x50')]>0x0){logger[_0x5f9d('0x1a')](util[_0x5f9d('0x14')](_0x5f9d('0x51'),_0x59022d[_0x5f9d('0x50')]));_0x560290=_0x59022d[_0x5f9d('0x50')];}else{logger['info'](_0x5f9d('0x52'));}}else{logger['info'](_0x5f9d('0x53'));_0x560290=-0x1;}}})['catch'](function(_0x557e65){logger[_0x5f9d('0xc')](_0x5f9d('0x54'),_0x557e65[_0x5f9d('0xd')]);})[_0x5f9d('0x48')](function(){var _0x5e8d28=require('./server')(config[_0x5f9d('0x5')][_0x5f9d('0xf')],config[_0x5f9d('0x5')]['ip'],_0x560290);_0x5e8d28['on'](_0x5f9d('0xc'),errorHandler);_0x5e8d28['on'](_0x5f9d('0x55'),listeningHandler);_0x5e8d28['on']('connection',connectionHandler);_0x5e8d28['on'](_0x5f9d('0x33'),closeHandler);});}main();