15043e3caa80cc025e7f431f0c657af9a7fd4f8e
[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 _0xfd0f=['target','addEdge','getSquareProject','then','catch','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','sync','production','debug','root','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','start','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','xml2json','lodash','util','moment','../../config/environment','agi','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','error','stack','log','port','info','format','name','message','[%s]\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','[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','evtHangup','mxGraphModel','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x544507,_0x576eba){_0x544507=_0x544507-0x0;var _0x4b4b36=_0xfd0f[_0x544507];return _0x4b4b36;};'use strict';var parser=require(_0xffd0('0x0'));var _=require(_0xffd0('0x1'));var syncho=require('syncho');var util=require(_0xffd0('0x2'));var moment=require(_0xffd0('0x3'));var config=require(_0xffd0('0x4'));var logger=require('../../config/logger')(_0xffd0('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0xffd0('0x6'));var mailRpc=require(_0xffd0('0x7'));var Graph=require(_0xffd0('0x8'));var Vertices=require(_0xffd0('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xffd0('0x5')]=_[_0xffd0('0xa')](config[_0xffd0('0x5')],{'ip':_0xffd0('0xb'),'port':0x11dd});function connectionHandler(_0x55488d){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x55488d);agiHandler(_0x55488d);}catch(_0x46129b){logger[_0xffd0('0xc')](_0x46129b[_0xffd0('0xd')]);}});});}function listeningHandler(){console[_0xffd0('0xe')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0xffd0('0xf')]);logger[_0xffd0('0x10')](util[_0xffd0('0x11')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config[_0xffd0('0x5')][_0xffd0('0xf')]));}function errorHandler(_0x59b236){if(_0x59b236&&_0x59b236[_0xffd0('0x12')]&&_0x59b236[_0xffd0('0x13')]){logger[_0xffd0('0xc')](util['format'](_0xffd0('0x14'),_0x59b236[_0xffd0('0x12')],_0x59b236['message']));}else{logger[_0xffd0('0xc')](util['format']('[ERROR]\x20%s',_0x59b236[_0xffd0('0xd')]));}}function closeHandler(){logger['info'](util[_0xffd0('0x11')](_0xffd0('0x15'),this[_0xffd0('0x16')],this[_0xffd0('0x17')],this[_0xffd0('0x18')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x285c52){logger[_0xffd0('0xc')](_0x285c52[_0xffd0('0xd')]);}}function timeoutHandler(){logger[_0xffd0('0x10')](util[_0xffd0('0x11')](_0xffd0('0x19'),this[_0xffd0('0x16')],this[_0xffd0('0x17')],this[_0xffd0('0x18')],this[_0xffd0('0x1a')],this[_0xffd0('0x1b')]));}function hangupHandler(){logger[_0xffd0('0x10')](util[_0xffd0('0x11')](_0xffd0('0x1c'),this[_0xffd0('0x16')],this[_0xffd0('0x17')],this['callerid'],this['dnid'],this[_0xffd0('0x1b')]));this[_0xffd0('0x1d')]=!![];}function getRoot(_0x4fbb72){return parser['toJson'](_0x4fbb72,{'object':!![]})[_0xffd0('0x1e')]['root'];}function addVertex(_0x10467e,_0x329864,_0x2c8d64){_0x329864[_0xffd0('0x1f')]=_0x2c8d64;if(_0x329864[_0xffd0('0x20')](_0xffd0('0x21'))){_0x329864[_0xffd0('0x22')]=parseInt(_0x329864[_0xffd0('0x21')],0xa);}_0x10467e[_0xffd0('0x23')](_[_0xffd0('0x24')](_0x329864,_0xffd0('0x25')));}function initGraph(_0x463af3,_0x24f135){var _0x481c52=new Graph();for(var _0x480322 in _0x463af3){if(_0x463af3[_0xffd0('0x20')](_0x480322)){if(_['isArray'](_0x463af3[_0x480322])){for(var _0x5a7c44=0x0;_0x5a7c44<_0x463af3[_0x480322][_0xffd0('0x26')];_0x5a7c44+=0x1){addVertex(_0x481c52,_0x463af3[_0x480322][_0x5a7c44],_0x480322);}}else{addVertex(_0x481c52,_0x463af3[_0x480322],_0x480322);}}}for(var _0x3b09f9=0x0;_0x3b09f9<_0x24f135[_0xffd0('0x26')];_0x3b09f9+=0x1){if(_0x24f135[_0x3b09f9][_0xffd0('0x27')]&&_0x24f135[_0x3b09f9][_0xffd0('0x28')]){_0x481c52[_0xffd0('0x29')](_0x24f135[_0x3b09f9]['source'],_0x24f135[_0x3b09f9][_0xffd0('0x28')],_0x24f135[_0x3b09f9]['value']);}}return _0x481c52;}function getSquareProject(_0x5c4adb,_0x56f39a){rpc[_0xffd0('0x2a')](_0x5c4adb)[_0xffd0('0x2b')](function(_0x3b71ac){_0x56f39a(null,_0x3b71ac);})[_0xffd0('0x2c')](function(_0x3bb309){_0x56f39a(null,_0x3bb309);});}function createSquareReport(_0x326e8f,_0x5c3be5){rpc['createSquareReport'](_0x326e8f)['then'](function(_0x116211){if(_0x5c3be5){_0x5c3be5(null,_0x116211);}})['catch'](function(_0x1f7dff){if(_0x5c3be5){_0x5c3be5(null,_0x1f7dff);}});}function setChannelVariables(_0x31a339){for(var _0x48ffc4 in _0x31a339){if(_0x31a339[_0xffd0('0x20')](_0x48ffc4)){if(_0x48ffc4['indexOf']('agi_')===0x0){_0x31a339[_0x48ffc4['substring'](0x4)]=_0x31a339[_0x48ffc4];delete _0x31a339[_0x48ffc4];}}}}function getLogFromObject(_0x1c1dbc){return util[_0xffd0('0x2d')](_0x1c1dbc,{'showHidden':![],'depth':null});}function agiHandler(_0x25f6ad){var _0x866da,_0x3f7af9,_0x4a9cab,_0x309363,_0x24d18c;logger['debug'](_0xffd0('0x2e'),JSON[_0xffd0('0x2f')](_0x25f6ad,null,0x2));logger[_0xffd0('0x10')](util[_0xffd0('0x11')](_0xffd0('0x30'),_0x25f6ad[_0xffd0('0x16')],_0x25f6ad['calleridname'],_0x25f6ad[_0xffd0('0x18')],_0x25f6ad[_0xffd0('0x1a')],_0x25f6ad['uniqueid']));_0x25f6ad['on'](_0xffd0('0xc'),errorHandler);_0x25f6ad['on'](_0xffd0('0x31'),closeHandler);_0x25f6ad['on']('timeout',timeoutHandler);_0x25f6ad[_0xffd0('0x1d')]=![];_0x25f6ad['on'](_0xffd0('0x32'),hangupHandler);var _0x55b5ec=getSquareProject[_0xffd0('0x33')](null,_0x25f6ad['arg_1']);if(_0x55b5ec){if(_0x55b5ec[_0xffd0('0x34')]){_0x866da=getRoot(_0x55b5ec[_0xffd0('0x34')]);if(_0x866da&&_0x866da['start']){logger[_0xffd0('0x35')](_0xffd0('0x36'),JSON[_0xffd0('0x2f')](_0x866da,null,0x2));_0x25f6ad[_0xffd0('0x37')]=moment()[_0xffd0('0x11')](_0xffd0('0x38'));_0x3f7af9=initGraph(_[_0xffd0('0x24')](_0x866da,_0xffd0('0x25')),_0x866da[_0xffd0('0x25')]);_0x4a9cab=new Vertices(_0x25f6ad,rpc,mailRpc);logger[_0xffd0('0x10')](util[_0xffd0('0x11')](_0xffd0('0x39'),_0x25f6ad[_0xffd0('0x16')],_0x25f6ad[_0xffd0('0x17')],_0x25f6ad[_0xffd0('0x18')],_0x25f6ad[_0xffd0('0x1a')],_0x25f6ad[_0xffd0('0x1b')]));_0x3f7af9['traverseBFS'](_0x866da[_0xffd0('0x3a')]['id'],function(_0xea6cbd){try{_0xea6cbd=_0x4a9cab[_0xffd0('0x3b')](_0xea6cbd);logger[_0xffd0('0x35')]('vertex',JSON['stringify'](_0xea6cbd,null,0x2));if(_0xea6cbd[_0xffd0('0x1f')]===_0xffd0('0x3c')){logger[_0xffd0('0x10')](_0xffd0('0x3d'));_0x25f6ad['context']=_0xea6cbd[_0xffd0('0x3e')]||_0x25f6ad[_0xffd0('0x3e')];_0x25f6ad[_0xffd0('0x3f')]=_0xea6cbd[_0xffd0('0x3f')];_0x25f6ad[_0xffd0('0x40')]=_0xea6cbd[_0xffd0('0x40')]?_0xea6cbd[_0xffd0('0x40')]-0x1:0x1;return null;}else if(_0xea6cbd&&_0x4a9cab[_0xea6cbd[_0xffd0('0x1f')]]){_0x24d18c=_0x4a9cab[_0xea6cbd[_0xffd0('0x1f')]](_0xea6cbd);logger[_0xffd0('0x10')](_0xffd0('0x41'),JSON[_0xffd0('0x2f')](_0x24d18c,null,0x2));if(_0x24d18c&&_0x24d18c[_0xffd0('0x42')]===AGI_CODE_SUCCESS&&_0x24d18c[_0xffd0('0x43')]!==AGI_RESULT_ERROR&&!_0x25f6ad[_0xffd0('0x1d')]){logger[_0xffd0('0x35')](_0xffd0('0x41'),getLogFromObject(_0x24d18c));return _[_0xffd0('0x44')](_0x24d18c[_0xffd0('0x43')])?null:_0x24d18c[_0xffd0('0x43')][_0xffd0('0x45')]();}else{logger['error'](_0xffd0('0x41'),getLogFromObject(_0x24d18c));return null;}}else{logger[_0xffd0('0xc')](_0xffd0('0x46'));return null;}}catch(_0x35ce9b){logger[_0xffd0('0xc')](_0x35ce9b[_0xffd0('0xd')]);return null;}});if(_0x866da[_0xffd0('0x47')]){logger[_0xffd0('0x10')](util[_0xffd0('0x11')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x25f6ad[_0xffd0('0x16')],_0x25f6ad[_0xffd0('0x17')],_0x25f6ad[_0xffd0('0x18')],_0x25f6ad[_0xffd0('0x1a')],_0x25f6ad[_0xffd0('0x1b')]));_0x3f7af9['traverseBFS'](_0x866da['finally']['id'],function(_0x4aac28){try{_0x4aac28=_0x4a9cab[_0xffd0('0x3b')](_0x4aac28);logger[_0xffd0('0x35')]('vertex',JSON[_0xffd0('0x2f')](_0x4aac28,null,0x2));if(_0x4aac28&&_0x4a9cab[_0x4aac28[_0xffd0('0x1f')]]){_0x24d18c=_0x4a9cab[_0x4aac28[_0xffd0('0x1f')]](_0x4aac28);if(_0x24d18c){logger[_0xffd0('0x35')](_0xffd0('0x41'),getLogFromObject(_0x24d18c));return _[_0xffd0('0x44')](_0x24d18c[_0xffd0('0x43')])?null:_0x24d18c[_0xffd0('0x43')][_0xffd0('0x45')]();}else{logger[_0xffd0('0xc')](_0xffd0('0x41'),getLogFromObject(_0x24d18c));return null;}}else{logger[_0xffd0('0xc')](_0xffd0('0x46'));return null;}}catch(_0x57b453){logger['error'](_0x57b453[_0xffd0('0xd')]);return null;}});}logger[_0xffd0('0x10')](util[_0xffd0('0x11')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x25f6ad[_0xffd0('0x16')],_0x25f6ad['calleridname'],_0x25f6ad[_0xffd0('0x18')],_0x25f6ad[_0xffd0('0x1a')],_0x25f6ad[_0xffd0('0x1b')]));logger[_0xffd0('0x10')](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x25f6ad['context'],_0x25f6ad[_0xffd0('0x3f')],parseInt(_0x25f6ad[_0xffd0('0x40')],0xa)+0x1));_0x25f6ad[_0xffd0('0x48')](_0x25f6ad[_0xffd0('0x3e')],_0x25f6ad[_0xffd0('0x3f')],parseInt(_0x25f6ad[_0xffd0('0x40')],0xa)+0x1);_0x25f6ad[_0xffd0('0x31')]();}}else{logger[_0xffd0('0xc')](util[_0xffd0('0x11')](_0xffd0('0x49'),_0x25f6ad[_0xffd0('0x16')]));_0x25f6ad[_0xffd0('0x48')](_0x25f6ad['context'],_0x25f6ad[_0xffd0('0x3f')],parseInt(_0x25f6ad[_0xffd0('0x40')],0xa)+0x1);_0x25f6ad[_0xffd0('0x31')]();}}else{logger[_0xffd0('0xc')](util[_0xffd0('0x11')](_0xffd0('0x4a'),_0x25f6ad[_0xffd0('0x16')]));_0x25f6ad['continueAt'](_0x25f6ad[_0xffd0('0x3e')],_0x25f6ad[_0xffd0('0x3f')],parseInt(_0x25f6ad[_0xffd0('0x40')],0xa)+0x1);_0x25f6ad[_0xffd0('0x31')]();}}function main(){var _0x5cf3b1;return utilLicense['getLicense']()['then'](function(_0x1d4d8b){if(_0x1d4d8b){if(_0x1d4d8b[_0xffd0('0x4b')]){if(_0x1d4d8b[_0xffd0('0x4c')]&&_0x1d4d8b[_0xffd0('0x4c')]>0x0){logger[_0xffd0('0x10')](util[_0xffd0('0x11')](_0xffd0('0x4d'),_0x1d4d8b['callysquare']));_0x5cf3b1=_0x1d4d8b[_0xffd0('0x4c')];}else{logger[_0xffd0('0x10')](_0xffd0('0x4e'));}}else{logger[_0xffd0('0x10')](_0xffd0('0x4f'));_0x5cf3b1=-0x1;}}})[_0xffd0('0x2c')](function(_0xb86024){logger['error']('[LICENSE]',_0xb86024[_0xffd0('0xd')]);})[_0xffd0('0x47')](function(){var _0x7231e6=require('./server')(config[_0xffd0('0x5')][_0xffd0('0xf')],config[_0xffd0('0x5')]['ip'],_0x5cf3b1);_0x7231e6['on'](_0xffd0('0xc'),errorHandler);_0x7231e6['on']('listening',listeningHandler);_0x7231e6['on']('connection',connectionHandler);_0x7231e6['on'](_0xffd0('0x31'),closeHandler);});}main();