Built motion from commit (unavailable).|2.5.9
[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 _0x0c6d=['nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','root','hasOwnProperty','retry','addVertex','mxCell','isArray','length','source','target','value','getSquareProject','then','catch','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','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','traverseBFS','vertex','agicommand','context','extension','priority','code','result','response','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','[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]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','lodash','syncho','util','moment','../../config/environment','../../config/logger','../../config/license/util','./vertices','agi','defaults','127.0.0.1'];(function(_0x1f5567,_0x263fee){var _0x111e09=function(_0x3ac4f2){while(--_0x3ac4f2){_0x1f5567['push'](_0x1f5567['shift']());}};_0x111e09(++_0x263fee);}(_0x0c6d,0xf7));var _0xd0c6=function(_0x488287,_0x1c4aea){_0x488287=_0x488287-0x0;var _0x442da6=_0x0c6d[_0x488287];return _0x442da6;};'use strict';var parser=require('xml2json');var _=require(_0xd0c6('0x0'));var syncho=require(_0xd0c6('0x1'));var util=require(_0xd0c6('0x2'));var moment=require(_0xd0c6('0x3'));var config=require(_0xd0c6('0x4'));var logger=require(_0xd0c6('0x5'))('agi');var utilLicense=require(_0xd0c6('0x6'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0xd0c6('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xd0c6('0x8')]=_[_0xd0c6('0x9')](config['agi'],{'ip':_0xd0c6('0xa'),'port':0x11dd});function connectionHandler(_0x534412){process[_0xd0c6('0xb')](function(){syncho(function(){try{setChannelVariables(_0x534412);agiHandler(_0x534412);}catch(_0x1763ab){logger[_0xd0c6('0xc')](_0x1763ab[_0xd0c6('0xd')]);}});});}function listeningHandler(){console[_0xd0c6('0xe')](_0xd0c6('0xf'),config[_0xd0c6('0x8')][_0xd0c6('0x10')]);logger[_0xd0c6('0x11')](util['format'](_0xd0c6('0x12'),config['agi']['ip'],config['agi'][_0xd0c6('0x10')]));}function errorHandler(_0x2f2a15){if(_0x2f2a15&&_0x2f2a15[_0xd0c6('0x13')]&&_0x2f2a15[_0xd0c6('0x14')]){logger[_0xd0c6('0xc')](util[_0xd0c6('0x15')](_0xd0c6('0x16'),_0x2f2a15[_0xd0c6('0x13')],_0x2f2a15[_0xd0c6('0x14')]));}else{logger[_0xd0c6('0xc')](util[_0xd0c6('0x15')](_0xd0c6('0x17'),_0x2f2a15[_0xd0c6('0xd')]));}}function closeHandler(){logger[_0xd0c6('0x11')](util[_0xd0c6('0x15')](_0xd0c6('0x18'),this[_0xd0c6('0x19')],this[_0xd0c6('0x1a')],this[_0xd0c6('0x1b')],this[_0xd0c6('0x1c')],this[_0xd0c6('0x1d')]));try{createSquareReport(this);}catch(_0x408f96){logger[_0xd0c6('0xc')](_0x408f96[_0xd0c6('0xd')]);}}function timeoutHandler(){logger[_0xd0c6('0x11')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xd0c6('0x19')],this[_0xd0c6('0x1a')],this['callerid'],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0xd0c6('0x11')](util[_0xd0c6('0x15')](_0xd0c6('0x1e'),this[_0xd0c6('0x19')],this[_0xd0c6('0x1a')],this[_0xd0c6('0x1b')],this[_0xd0c6('0x1c')],this[_0xd0c6('0x1d')]));this['evtHangup']=!![];}function getRoot(_0x2f7559){return parser[_0xd0c6('0x1f')](_0x2f7559,{'object':!![]})['mxGraphModel'][_0xd0c6('0x20')];}function addVertex(_0x2251e0,_0x3b437d,_0x5d9baa){_0x3b437d['agicommand']=_0x5d9baa;if(_0x3b437d[_0xd0c6('0x21')](_0xd0c6('0x22'))){_0x3b437d['maxRetry']=parseInt(_0x3b437d[_0xd0c6('0x22')],0xa);}_0x2251e0[_0xd0c6('0x23')](_['omit'](_0x3b437d,_0xd0c6('0x24')));}function initGraph(_0x5c71b6,_0x5a3374){var _0x2d11df=new Graph();for(var _0x15150d in _0x5c71b6){if(_0x5c71b6['hasOwnProperty'](_0x15150d)){if(_[_0xd0c6('0x25')](_0x5c71b6[_0x15150d])){for(var _0x4368fa=0x0;_0x4368fa<_0x5c71b6[_0x15150d][_0xd0c6('0x26')];_0x4368fa+=0x1){addVertex(_0x2d11df,_0x5c71b6[_0x15150d][_0x4368fa],_0x15150d);}}else{addVertex(_0x2d11df,_0x5c71b6[_0x15150d],_0x15150d);}}}for(var _0x38d411=0x0;_0x38d411<_0x5a3374[_0xd0c6('0x26')];_0x38d411+=0x1){if(_0x5a3374[_0x38d411][_0xd0c6('0x27')]&&_0x5a3374[_0x38d411][_0xd0c6('0x28')]){_0x2d11df['addEdge'](_0x5a3374[_0x38d411][_0xd0c6('0x27')],_0x5a3374[_0x38d411][_0xd0c6('0x28')],_0x5a3374[_0x38d411][_0xd0c6('0x29')]);}}return _0x2d11df;}function getSquareProject(_0x231418,_0x18b747){rpc[_0xd0c6('0x2a')](_0x231418)[_0xd0c6('0x2b')](function(_0x14fcaa){_0x18b747(null,_0x14fcaa);})[_0xd0c6('0x2c')](function(_0x1eee11){_0x18b747(null,_0x1eee11);});}function createSquareReport(_0x5db764,_0x8ed2c4){rpc['createSquareReport'](_0x5db764)[_0xd0c6('0x2b')](function(_0x9bfeea){if(_0x8ed2c4){_0x8ed2c4(null,_0x9bfeea);}})[_0xd0c6('0x2c')](function(_0x26cea3){if(_0x8ed2c4){_0x8ed2c4(null,_0x26cea3);}});}function setChannelVariables(_0x5cf2f7){for(var _0x5e403e in _0x5cf2f7){if(_0x5cf2f7[_0xd0c6('0x21')](_0x5e403e)){if(_0x5e403e['indexOf'](_0xd0c6('0x2d'))===0x0){_0x5cf2f7[_0x5e403e[_0xd0c6('0x2e')](0x4)]=_0x5cf2f7[_0x5e403e];delete _0x5cf2f7[_0x5e403e];}}}}function getLogFromObject(_0x16074f){return util[_0xd0c6('0x2f')](_0x16074f,{'showHidden':![],'depth':null});}function agiHandler(_0x51d40a){var _0x334467,_0x2b700b,_0x1860c9,_0x35c694,_0x3f5530;logger[_0xd0c6('0x30')](_0xd0c6('0x31'),JSON[_0xd0c6('0x32')](_0x51d40a,null,0x2));logger['info'](util[_0xd0c6('0x15')](_0xd0c6('0x33'),_0x51d40a[_0xd0c6('0x19')],_0x51d40a[_0xd0c6('0x1a')],_0x51d40a['callerid'],_0x51d40a[_0xd0c6('0x1c')],_0x51d40a[_0xd0c6('0x1d')]));_0x51d40a['on']('error',errorHandler);_0x51d40a['on']('close',closeHandler);_0x51d40a['on']('timeout',timeoutHandler);_0x51d40a[_0xd0c6('0x34')]=![];_0x51d40a['on']('hangup',hangupHandler);var _0xea3db6=getSquareProject[_0xd0c6('0x35')](null,_0x51d40a[_0xd0c6('0x19')]);if(_0xea3db6){if(_0xea3db6[_0xd0c6('0x36')]){_0x334467=getRoot(_0xea3db6[_0xd0c6('0x36')]);if(_0x334467&&_0x334467[_0xd0c6('0x37')]){logger[_0xd0c6('0x30')](_0xd0c6('0x20'),JSON[_0xd0c6('0x32')](_0x334467,null,0x2));_0x51d40a['joinAt']=moment()[_0xd0c6('0x15')](_0xd0c6('0x38'));_0x2b700b=initGraph(_[_0xd0c6('0x39')](_0x334467,_0xd0c6('0x24')),_0x334467['mxCell']);_0x1860c9=new Vertices(_0x51d40a,rpc,mailRpc);logger[_0xd0c6('0x11')](util['format'](_0xd0c6('0x3a'),_0x51d40a[_0xd0c6('0x19')],_0x51d40a['calleridname'],_0x51d40a['callerid'],_0x51d40a['dnid'],_0x51d40a[_0xd0c6('0x1d')]));_0x2b700b[_0xd0c6('0x3b')](_0x334467[_0xd0c6('0x37')]['id'],function(_0x230dc3){try{_0x230dc3=_0x1860c9['clear'](_0x230dc3);logger[_0xd0c6('0x30')](_0xd0c6('0x3c'),JSON[_0xd0c6('0x32')](_0x230dc3,null,0x2));if(_0x230dc3[_0xd0c6('0x3d')]==='gotoc'){logger[_0xd0c6('0x11')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x51d40a[_0xd0c6('0x3e')]=_0x230dc3[_0xd0c6('0x3e')]||_0x51d40a[_0xd0c6('0x3e')];_0x51d40a[_0xd0c6('0x3f')]=_0x230dc3[_0xd0c6('0x3f')];_0x51d40a[_0xd0c6('0x40')]=_0x230dc3['priority']?_0x230dc3['priority']-0x1:0x1;return null;}else if(_0x230dc3&&_0x1860c9[_0x230dc3[_0xd0c6('0x3d')]]){_0x3f5530=_0x1860c9[_0x230dc3[_0xd0c6('0x3d')]](_0x230dc3);logger[_0xd0c6('0x11')]('response',JSON[_0xd0c6('0x32')](_0x3f5530,null,0x2));if(_0x3f5530&&_0x3f5530[_0xd0c6('0x41')]===AGI_CODE_SUCCESS&&_0x3f5530[_0xd0c6('0x42')]!==AGI_RESULT_ERROR&&!_0x51d40a['evtHangup']){logger[_0xd0c6('0x30')](_0xd0c6('0x43'),getLogFromObject(_0x3f5530));return _[_0xd0c6('0x44')](_0x3f5530[_0xd0c6('0x42')])?null:_0x3f5530['result'][_0xd0c6('0x45')]();}else{logger['error'](_0xd0c6('0x43'),getLogFromObject(_0x3f5530));return null;}}else{logger['error'](_0xd0c6('0x46'));return null;}}catch(_0x41dc9d){logger['error'](_0x41dc9d[_0xd0c6('0xd')]);return null;}});if(_0x334467[_0xd0c6('0x47')]){logger['info'](util[_0xd0c6('0x15')](_0xd0c6('0x48'),_0x51d40a[_0xd0c6('0x19')],_0x51d40a[_0xd0c6('0x1a')],_0x51d40a['callerid'],_0x51d40a[_0xd0c6('0x1c')],_0x51d40a[_0xd0c6('0x1d')]));_0x2b700b['traverseBFS'](_0x334467['finally']['id'],function(_0x140ac4){try{_0x140ac4=_0x1860c9['clear'](_0x140ac4);logger[_0xd0c6('0x30')](_0xd0c6('0x3c'),JSON[_0xd0c6('0x32')](_0x140ac4,null,0x2));if(_0x140ac4&&_0x1860c9[_0x140ac4[_0xd0c6('0x3d')]]){_0x3f5530=_0x1860c9[_0x140ac4[_0xd0c6('0x3d')]](_0x140ac4);if(_0x3f5530){logger[_0xd0c6('0x30')](_0xd0c6('0x43'),getLogFromObject(_0x3f5530));return _[_0xd0c6('0x44')](_0x3f5530[_0xd0c6('0x42')])?null:_0x3f5530['result'][_0xd0c6('0x45')]();}else{logger['error'](_0xd0c6('0x43'),getLogFromObject(_0x3f5530));return null;}}else{logger[_0xd0c6('0xc')](_0xd0c6('0x46'));return null;}}catch(_0xaa590c){logger['error'](_0xaa590c[_0xd0c6('0xd')]);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x51d40a[_0xd0c6('0x19')],_0x51d40a[_0xd0c6('0x1a')],_0x51d40a[_0xd0c6('0x1b')],_0x51d40a[_0xd0c6('0x1c')],_0x51d40a[_0xd0c6('0x1d')]));logger[_0xd0c6('0x11')](util[_0xd0c6('0x15')](_0xd0c6('0x49'),_0x51d40a[_0xd0c6('0x3e')],_0x51d40a[_0xd0c6('0x3f')],parseInt(_0x51d40a['priority'],0xa)+0x1));_0x51d40a[_0xd0c6('0x4a')](_0x51d40a[_0xd0c6('0x3e')],_0x51d40a[_0xd0c6('0x3f')],parseInt(_0x51d40a['priority'],0xa)+0x1);_0x51d40a[_0xd0c6('0x4b')]();}}else{logger[_0xd0c6('0xc')](util[_0xd0c6('0x15')](_0xd0c6('0x4c'),_0x51d40a[_0xd0c6('0x19')]));_0x51d40a[_0xd0c6('0x4a')](_0x51d40a['context'],_0x51d40a[_0xd0c6('0x3f')],parseInt(_0x51d40a[_0xd0c6('0x40')],0xa)+0x1);_0x51d40a[_0xd0c6('0x4b')]();}}else{logger[_0xd0c6('0xc')](util[_0xd0c6('0x15')]('Project\x20%s\x20not\x20found',_0x51d40a[_0xd0c6('0x19')]));_0x51d40a[_0xd0c6('0x4a')](_0x51d40a[_0xd0c6('0x3e')],_0x51d40a['extension'],parseInt(_0x51d40a[_0xd0c6('0x40')],0xa)+0x1);_0x51d40a[_0xd0c6('0x4b')]();}}function main(){var _0x248457;return utilLicense[_0xd0c6('0x4d')]()[_0xd0c6('0x2b')](function(_0x540d2d){if(_0x540d2d){if(_0x540d2d[_0xd0c6('0x4e')]){if(_0x540d2d[_0xd0c6('0x4f')]&&_0x540d2d['callysquare']>0x0){logger[_0xd0c6('0x11')](util[_0xd0c6('0x15')](_0xd0c6('0x50'),_0x540d2d[_0xd0c6('0x4f')]));_0x248457=_0x540d2d[_0xd0c6('0x4f')];}else{logger[_0xd0c6('0x11')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xd0c6('0x11')](_0xd0c6('0x51'));_0x248457=-0x1;}}})[_0xd0c6('0x2c')](function(_0x30b422){logger[_0xd0c6('0xc')](_0xd0c6('0x52'),_0x30b422[_0xd0c6('0xd')]);})[_0xd0c6('0x47')](function(){var _0x33ed71=require(_0xd0c6('0x53'))(config['agi'][_0xd0c6('0x10')],config[_0xd0c6('0x8')]['ip'],_0x248457);_0x33ed71['on']('error',errorHandler);_0x33ed71['on'](_0xd0c6('0x54'),listeningHandler);_0x33ed71['on'](_0xd0c6('0x55'),connectionHandler);_0x33ed71['on'](_0xd0c6('0x4b'),closeHandler);});}main();