Built motion from commit (unavailable).|2.5.11
[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 _0x98d3=['[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','catch','[LICENSE]','./server','listening','connection','xml2json','lodash','util','../../config/environment','agi','../../config/license/util','./graph','./vertices','127.0.0.1','nextTick','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%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','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','hasOwnProperty','retry','omit','mxCell','isArray','length','source','target','value','then','createSquareReport','indexOf','agi_','substring','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','start','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','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','response','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'];(function(_0x60a935,_0x4fae24){var _0x4e22a0=function(_0x395a0a){while(--_0x395a0a){_0x60a935['push'](_0x60a935['shift']());}};_0x4e22a0(++_0x4fae24);}(_0x98d3,0x173));var _0x398d=function(_0x1b39cc,_0x44ff1a){_0x1b39cc=_0x1b39cc-0x0;var _0x59e836=_0x98d3[_0x1b39cc];return _0x59e836;};'use strict';var parser=require(_0x398d('0x0'));var _=require(_0x398d('0x1'));var syncho=require('syncho');var util=require(_0x398d('0x2'));var moment=require('moment');var config=require(_0x398d('0x3'));var logger=require('../../config/logger')(_0x398d('0x4'));var utilLicense=require(_0x398d('0x5'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0x398d('0x6'));var Vertices=require(_0x398d('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x398d('0x4')]=_['defaults'](config[_0x398d('0x4')],{'ip':_0x398d('0x8'),'port':0x11dd});function connectionHandler(_0x3029f3){process[_0x398d('0x9')](function(){syncho(function(){try{setChannelVariables(_0x3029f3);agiHandler(_0x3029f3);}catch(_0x2f654c){logger['error'](_0x2f654c[_0x398d('0xa')]);}});});}function listeningHandler(){console[_0x398d('0xb')](_0x398d('0xc'),config[_0x398d('0x4')][_0x398d('0xd')]);logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x10'),config['agi']['ip'],config[_0x398d('0x4')][_0x398d('0xd')]));}function errorHandler(_0x3b5b81){if(_0x3b5b81&&_0x3b5b81[_0x398d('0x11')]&&_0x3b5b81[_0x398d('0x12')]){logger[_0x398d('0x13')](util[_0x398d('0xf')](_0x398d('0x14'),_0x3b5b81[_0x398d('0x11')],_0x3b5b81[_0x398d('0x12')]));}else{logger[_0x398d('0x13')](util['format']('[ERROR]\x20%s',_0x3b5b81[_0x398d('0xa')]));}}function closeHandler(){logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x15'),this[_0x398d('0x16')],this[_0x398d('0x17')],this[_0x398d('0x18')],this[_0x398d('0x19')],this['uniqueid']));try{createSquareReport(this);}catch(_0x26b9a0){logger['error'](_0x26b9a0[_0x398d('0xa')]);}}function timeoutHandler(){logger[_0x398d('0xe')](util[_0x398d('0xf')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this[_0x398d('0x18')],this[_0x398d('0x19')],this[_0x398d('0x1a')]));}function hangupHandler(){logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x1b'),this[_0x398d('0x16')],this['calleridname'],this['callerid'],this['dnid'],this[_0x398d('0x1a')]));this[_0x398d('0x1c')]=!![];}function getRoot(_0x1ea5f9){return parser[_0x398d('0x1d')](_0x1ea5f9,{'object':!![]})[_0x398d('0x1e')]['root'];}function addVertex(_0x5c4c70,_0x31e87d,_0x497ad1){_0x31e87d['agicommand']=_0x497ad1;if(_0x31e87d[_0x398d('0x1f')](_0x398d('0x20'))){_0x31e87d['maxRetry']=parseInt(_0x31e87d['retry'],0xa);}_0x5c4c70['addVertex'](_[_0x398d('0x21')](_0x31e87d,_0x398d('0x22')));}function initGraph(_0x24fa2c,_0x248555){var _0x2a1f4d=new Graph();for(var _0xd614bf in _0x24fa2c){if(_0x24fa2c[_0x398d('0x1f')](_0xd614bf)){if(_[_0x398d('0x23')](_0x24fa2c[_0xd614bf])){for(var _0x4f4466=0x0;_0x4f4466<_0x24fa2c[_0xd614bf][_0x398d('0x24')];_0x4f4466+=0x1){addVertex(_0x2a1f4d,_0x24fa2c[_0xd614bf][_0x4f4466],_0xd614bf);}}else{addVertex(_0x2a1f4d,_0x24fa2c[_0xd614bf],_0xd614bf);}}}for(var _0x557dce=0x0;_0x557dce<_0x248555['length'];_0x557dce+=0x1){if(_0x248555[_0x557dce][_0x398d('0x25')]&&_0x248555[_0x557dce][_0x398d('0x26')]){_0x2a1f4d['addEdge'](_0x248555[_0x557dce][_0x398d('0x25')],_0x248555[_0x557dce]['target'],_0x248555[_0x557dce][_0x398d('0x27')]);}}return _0x2a1f4d;}function getSquareProject(_0x8abf30,_0x582d16){rpc['getSquareProject'](_0x8abf30)[_0x398d('0x28')](function(_0x2ca780){_0x582d16(null,_0x2ca780);})['catch'](function(_0x397f07){_0x582d16(null,_0x397f07);});}function createSquareReport(_0x2fbcce,_0x204b27){rpc[_0x398d('0x29')](_0x2fbcce)[_0x398d('0x28')](function(_0x3bcc5e){if(_0x204b27){_0x204b27(null,_0x3bcc5e);}})['catch'](function(_0x5a9f61){if(_0x204b27){_0x204b27(null,_0x5a9f61);}});}function setChannelVariables(_0x347c8a){for(var _0xe6a05 in _0x347c8a){if(_0x347c8a[_0x398d('0x1f')](_0xe6a05)){if(_0xe6a05[_0x398d('0x2a')](_0x398d('0x2b'))===0x0){_0x347c8a[_0xe6a05[_0x398d('0x2c')](0x4)]=_0x347c8a[_0xe6a05];delete _0x347c8a[_0xe6a05];}}}}function getLogFromObject(_0xd8dc6c){return util[_0x398d('0x2d')](_0xd8dc6c,{'showHidden':![],'depth':null});}function agiHandler(_0x1827be){var _0x5411c5,_0x6dac9f,_0x3807f0,_0x182650,_0x557f83;logger['debug'](_0x398d('0x2e'),JSON[_0x398d('0x2f')](_0x1827be,null,0x2));logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x30'),_0x1827be[_0x398d('0x16')],_0x1827be[_0x398d('0x17')],_0x1827be[_0x398d('0x18')],_0x1827be[_0x398d('0x19')],_0x1827be[_0x398d('0x1a')]));_0x1827be['on'](_0x398d('0x13'),errorHandler);_0x1827be['on'](_0x398d('0x31'),closeHandler);_0x1827be['on'](_0x398d('0x32'),timeoutHandler);_0x1827be[_0x398d('0x1c')]=![];_0x1827be['on'](_0x398d('0x33'),hangupHandler);var _0x302314=getSquareProject[_0x398d('0x34')](null,_0x1827be[_0x398d('0x16')]);if(_0x302314){if(_0x302314[_0x398d('0x35')]){_0x5411c5=getRoot(_0x302314['production']);if(_0x5411c5&&_0x5411c5[_0x398d('0x36')]){logger[_0x398d('0x37')](_0x398d('0x38'),JSON[_0x398d('0x2f')](_0x5411c5,null,0x2));_0x1827be[_0x398d('0x39')]=moment()[_0x398d('0xf')](_0x398d('0x3a'));_0x6dac9f=initGraph(_['omit'](_0x5411c5,_0x398d('0x22')),_0x5411c5[_0x398d('0x22')]);_0x3807f0=new Vertices(_0x1827be,rpc,mailRpc);logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x3b'),_0x1827be[_0x398d('0x16')],_0x1827be[_0x398d('0x17')],_0x1827be[_0x398d('0x18')],_0x1827be['dnid'],_0x1827be[_0x398d('0x1a')]));_0x6dac9f[_0x398d('0x3c')](_0x5411c5[_0x398d('0x36')]['id'],function(_0x2d0a82){try{_0x2d0a82=_0x3807f0[_0x398d('0x3d')](_0x2d0a82);logger['debug'](_0x398d('0x3e'),JSON[_0x398d('0x2f')](_0x2d0a82,null,0x2));if(_0x2d0a82['agicommand']===_0x398d('0x3f')){logger[_0x398d('0xe')](_0x398d('0x40'));_0x1827be[_0x398d('0x41')]=_0x2d0a82[_0x398d('0x41')]||_0x1827be[_0x398d('0x41')];_0x1827be[_0x398d('0x42')]=_0x2d0a82[_0x398d('0x42')];_0x1827be[_0x398d('0x43')]=_0x2d0a82['priority']?_0x2d0a82[_0x398d('0x43')]-0x1:0x1;return null;}else if(_0x2d0a82&&_0x3807f0[_0x2d0a82[_0x398d('0x44')]]){_0x557f83=_0x3807f0[_0x2d0a82[_0x398d('0x44')]](_0x2d0a82);logger[_0x398d('0xe')](_0x398d('0x45'),JSON[_0x398d('0x2f')](_0x557f83,null,0x2));if(_0x557f83&&_0x557f83['code']===AGI_CODE_SUCCESS&&_0x557f83[_0x398d('0x46')]!==AGI_RESULT_ERROR&&!_0x1827be[_0x398d('0x1c')]){logger['debug'](_0x398d('0x45'),getLogFromObject(_0x557f83));return _[_0x398d('0x47')](_0x557f83[_0x398d('0x46')])?null:_0x557f83['result'][_0x398d('0x48')]();}else{logger[_0x398d('0x13')](_0x398d('0x45'),getLogFromObject(_0x557f83));return null;}}else{logger[_0x398d('0x13')](_0x398d('0x49'));return null;}}catch(_0x4a024a){logger[_0x398d('0x13')](_0x4a024a[_0x398d('0xa')]);return null;}});if(_0x5411c5[_0x398d('0x4a')]){logger['info'](util[_0x398d('0xf')](_0x398d('0x4b'),_0x1827be['arg_1'],_0x1827be[_0x398d('0x17')],_0x1827be[_0x398d('0x18')],_0x1827be[_0x398d('0x19')],_0x1827be[_0x398d('0x1a')]));_0x6dac9f[_0x398d('0x3c')](_0x5411c5[_0x398d('0x4a')]['id'],function(_0x4b60be){try{_0x4b60be=_0x3807f0[_0x398d('0x3d')](_0x4b60be);logger['debug'](_0x398d('0x3e'),JSON[_0x398d('0x2f')](_0x4b60be,null,0x2));if(_0x4b60be&&_0x3807f0[_0x4b60be['agicommand']]){_0x557f83=_0x3807f0[_0x4b60be['agicommand']](_0x4b60be);if(_0x557f83){logger[_0x398d('0x37')](_0x398d('0x45'),getLogFromObject(_0x557f83));return _[_0x398d('0x47')](_0x557f83[_0x398d('0x46')])?null:_0x557f83['result'][_0x398d('0x48')]();}else{logger['error'](_0x398d('0x45'),getLogFromObject(_0x557f83));return null;}}else{logger['error'](_0x398d('0x49'));return null;}}catch(_0x588548){logger['error'](_0x588548['stack']);return null;}});}logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x4c'),_0x1827be[_0x398d('0x16')],_0x1827be['calleridname'],_0x1827be['callerid'],_0x1827be[_0x398d('0x19')],_0x1827be[_0x398d('0x1a')]));logger[_0x398d('0xe')](util['format'](_0x398d('0x4d'),_0x1827be[_0x398d('0x41')],_0x1827be[_0x398d('0x42')],parseInt(_0x1827be[_0x398d('0x43')],0xa)+0x1));_0x1827be[_0x398d('0x4e')](_0x1827be[_0x398d('0x41')],_0x1827be['extension'],parseInt(_0x1827be[_0x398d('0x43')],0xa)+0x1);_0x1827be[_0x398d('0x31')]();}}else{logger[_0x398d('0x13')](util[_0x398d('0xf')]('Project\x20%s\x20not\x20published',_0x1827be[_0x398d('0x16')]));_0x1827be[_0x398d('0x4e')](_0x1827be[_0x398d('0x41')],_0x1827be[_0x398d('0x42')],parseInt(_0x1827be['priority'],0xa)+0x1);_0x1827be['close']();}}else{logger[_0x398d('0x13')](util['format'](_0x398d('0x4f'),_0x1827be[_0x398d('0x16')]));_0x1827be['continueAt'](_0x1827be[_0x398d('0x41')],_0x1827be['extension'],parseInt(_0x1827be[_0x398d('0x43')],0xa)+0x1);_0x1827be[_0x398d('0x31')]();}}function main(){var _0x35a73c;return utilLicense[_0x398d('0x50')]()[_0x398d('0x28')](function(_0x3aed8b){if(_0x3aed8b){if(_0x3aed8b[_0x398d('0x51')]){if(_0x3aed8b[_0x398d('0x52')]&&_0x3aed8b[_0x398d('0x52')]>0x0){logger[_0x398d('0xe')](util[_0x398d('0xf')](_0x398d('0x53'),_0x3aed8b[_0x398d('0x52')]));_0x35a73c=_0x3aed8b[_0x398d('0x52')];}else{logger[_0x398d('0xe')](_0x398d('0x54'));}}else{logger[_0x398d('0xe')](_0x398d('0x55'));_0x35a73c=-0x1;}}})[_0x398d('0x56')](function(_0xb25709){logger[_0x398d('0x13')](_0x398d('0x57'),_0xb25709['stack']);})[_0x398d('0x4a')](function(){var _0x26d6f8=require(_0x398d('0x58'))(config[_0x398d('0x4')][_0x398d('0xd')],config[_0x398d('0x4')]['ip'],_0x35a73c);_0x26d6f8['on'](_0x398d('0x13'),errorHandler);_0x26d6f8['on'](_0x398d('0x59'),listeningHandler);_0x26d6f8['on'](_0x398d('0x5a'),connectionHandler);_0x26d6f8['on'](_0x398d('0x31'),closeHandler);});}main();