19e1a3ee2132f04f1f64f1eacd87a60652e8f891
[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 _0x810a=['continueAt','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','lodash','syncho','util','moment','agi','../../config/license/util','./mailRpc','./graph','./vertices','defaults','127.0.0.1','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','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','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','retry','maxRetry','addVertex','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','sync','production','start','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','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','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','vertex','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s'];(function(_0x517971,_0x51f9c7){var _0x427bf2=function(_0x2a0db1){while(--_0x2a0db1){_0x517971['push'](_0x517971['shift']());}};_0x427bf2(++_0x51f9c7);}(_0x810a,0x10b));var _0xa810=function(_0x113276,_0x2df064){_0x113276=_0x113276-0x0;var _0x20f7ae=_0x810a[_0x113276];return _0x20f7ae;};'use strict';var parser=require('xml2json');var _=require(_0xa810('0x0'));var syncho=require(_0xa810('0x1'));var util=require(_0xa810('0x2'));var moment=require(_0xa810('0x3'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xa810('0x4'));var utilLicense=require(_0xa810('0x5'));var rpc=require('./rpc');var mailRpc=require(_0xa810('0x6'));var Graph=require(_0xa810('0x7'));var Vertices=require(_0xa810('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa810('0x9')](config['agi'],{'ip':_0xa810('0xa'),'port':0x11dd});function connectionHandler(_0x5e4728){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5e4728);agiHandler(_0x5e4728);}catch(_0x5a4d6f){logger[_0xa810('0xb')](_0x5a4d6f[_0xa810('0xc')]);}});});}function listeningHandler(){console['log'](_0xa810('0xd'),config['agi'][_0xa810('0xe')]);logger[_0xa810('0xf')](util[_0xa810('0x10')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xa810('0x4')]['ip'],config[_0xa810('0x4')][_0xa810('0xe')]));}function errorHandler(_0x1e074a){if(_0x1e074a&&_0x1e074a[_0xa810('0x11')]&&_0x1e074a[_0xa810('0x12')]){logger[_0xa810('0xb')](util['format'](_0xa810('0x13'),_0x1e074a[_0xa810('0x11')],_0x1e074a[_0xa810('0x12')]));}else{logger[_0xa810('0xb')](util[_0xa810('0x10')](_0xa810('0x14'),_0x1e074a['stack']));}}function closeHandler(){logger[_0xa810('0xf')](util[_0xa810('0x10')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xa810('0x15')],this['callerid'],this[_0xa810('0x16')],this[_0xa810('0x17')]));try{createSquareReport(this);}catch(_0x541cda){logger['error'](_0x541cda[_0xa810('0xc')]);}}function timeoutHandler(){logger[_0xa810('0xf')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa810('0x18')],this[_0xa810('0x15')],this[_0xa810('0x19')],this[_0xa810('0x16')],this[_0xa810('0x17')]));}function hangupHandler(){logger['info'](util[_0xa810('0x10')](_0xa810('0x1a'),this[_0xa810('0x18')],this[_0xa810('0x15')],this[_0xa810('0x19')],this['dnid'],this[_0xa810('0x17')]));this[_0xa810('0x1b')]=!![];}function getRoot(_0x277578){return parser[_0xa810('0x1c')](_0x277578,{'object':!![]})[_0xa810('0x1d')]['root'];}function addVertex(_0x3e21ff,_0x3a513c,_0x42dc6e){_0x3a513c[_0xa810('0x1e')]=_0x42dc6e;if(_0x3a513c[_0xa810('0x1f')](_0xa810('0x20'))){_0x3a513c[_0xa810('0x21')]=parseInt(_0x3a513c[_0xa810('0x20')],0xa);}_0x3e21ff[_0xa810('0x22')](_['omit'](_0x3a513c,_0xa810('0x23')));}function initGraph(_0x5843f8,_0x2e899f){var _0x11ab68=new Graph();for(var _0x3417c3 in _0x5843f8){if(_0x5843f8[_0xa810('0x1f')](_0x3417c3)){if(_[_0xa810('0x24')](_0x5843f8[_0x3417c3])){for(var _0x12da98=0x0;_0x12da98<_0x5843f8[_0x3417c3][_0xa810('0x25')];_0x12da98+=0x1){addVertex(_0x11ab68,_0x5843f8[_0x3417c3][_0x12da98],_0x3417c3);}}else{addVertex(_0x11ab68,_0x5843f8[_0x3417c3],_0x3417c3);}}}for(var _0x33accd=0x0;_0x33accd<_0x2e899f[_0xa810('0x25')];_0x33accd+=0x1){if(_0x2e899f[_0x33accd][_0xa810('0x26')]&&_0x2e899f[_0x33accd][_0xa810('0x27')]){_0x11ab68[_0xa810('0x28')](_0x2e899f[_0x33accd][_0xa810('0x26')],_0x2e899f[_0x33accd][_0xa810('0x27')],_0x2e899f[_0x33accd][_0xa810('0x29')]);}}return _0x11ab68;}function getSquareProject(_0xe97e44,_0x51b80f){rpc[_0xa810('0x2a')](_0xe97e44)['then'](function(_0x2d8169){_0x51b80f(null,_0x2d8169);})[_0xa810('0x2b')](function(_0x21e7c7){_0x51b80f(null,_0x21e7c7);});}function createSquareReport(_0x5186c4,_0x3e2e2f){rpc[_0xa810('0x2c')](_0x5186c4)[_0xa810('0x2d')](function(_0x2e0f12){if(_0x3e2e2f){_0x3e2e2f(null,_0x2e0f12);}})['catch'](function(_0x566af9){if(_0x3e2e2f){_0x3e2e2f(null,_0x566af9);}});}function setChannelVariables(_0x3f46a5){for(var _0x1419ed in _0x3f46a5){if(_0x3f46a5[_0xa810('0x1f')](_0x1419ed)){if(_0x1419ed[_0xa810('0x2e')](_0xa810('0x2f'))===0x0){_0x3f46a5[_0x1419ed[_0xa810('0x30')](0x4)]=_0x3f46a5[_0x1419ed];delete _0x3f46a5[_0x1419ed];}}}}function getLogFromObject(_0x230f2b){return util['inspect'](_0x230f2b,{'showHidden':![],'depth':null});}function agiHandler(_0x2836b3){var _0x20e51c,_0x4736c8,_0x42ab64,_0x1acb17,_0x4ef738;logger[_0xa810('0x31')](_0xa810('0x32'),JSON[_0xa810('0x33')](_0x2836b3,null,0x2));logger[_0xa810('0xf')](util[_0xa810('0x10')](_0xa810('0x34'),_0x2836b3[_0xa810('0x18')],_0x2836b3[_0xa810('0x15')],_0x2836b3[_0xa810('0x19')],_0x2836b3[_0xa810('0x16')],_0x2836b3[_0xa810('0x17')]));_0x2836b3['on'](_0xa810('0xb'),errorHandler);_0x2836b3['on'](_0xa810('0x35'),closeHandler);_0x2836b3['on'](_0xa810('0x36'),timeoutHandler);_0x2836b3[_0xa810('0x1b')]=![];_0x2836b3['on']('hangup',hangupHandler);var _0x493409=getSquareProject[_0xa810('0x37')](null,_0x2836b3['arg_1']);if(_0x493409){if(_0x493409['production']){_0x20e51c=getRoot(_0x493409[_0xa810('0x38')]);if(_0x20e51c&&_0x20e51c[_0xa810('0x39')]){logger['debug']('root',JSON[_0xa810('0x33')](_0x20e51c,null,0x2));_0x2836b3[_0xa810('0x3a')]=moment()[_0xa810('0x10')](_0xa810('0x3b'));_0x4736c8=initGraph(_['omit'](_0x20e51c,'mxCell'),_0x20e51c['mxCell']);_0x42ab64=new Vertices(_0x2836b3,rpc,mailRpc);logger[_0xa810('0xf')](util[_0xa810('0x10')](_0xa810('0x3c'),_0x2836b3[_0xa810('0x18')],_0x2836b3['calleridname'],_0x2836b3[_0xa810('0x19')],_0x2836b3['dnid'],_0x2836b3['uniqueid']));_0x4736c8[_0xa810('0x3d')](_0x20e51c[_0xa810('0x39')]['id'],function(_0x65679e){try{_0x65679e=_0x42ab64['clear'](_0x65679e);logger['debug']('vertex',JSON[_0xa810('0x33')](_0x65679e,null,0x2));if(_0x65679e[_0xa810('0x1e')]===_0xa810('0x3e')){logger['info'](_0xa810('0x3f'));_0x2836b3['context']=_0x65679e[_0xa810('0x40')]||_0x2836b3[_0xa810('0x40')];_0x2836b3[_0xa810('0x41')]=_0x65679e[_0xa810('0x41')];_0x2836b3[_0xa810('0x42')]=_0x65679e[_0xa810('0x42')]?_0x65679e[_0xa810('0x42')]-0x1:0x1;return null;}else if(_0x65679e&&_0x42ab64[_0x65679e['agicommand']]){_0x4ef738=_0x42ab64[_0x65679e[_0xa810('0x1e')]](_0x65679e);logger[_0xa810('0xf')](_0xa810('0x43'),JSON[_0xa810('0x33')](_0x4ef738,null,0x2));if(_0x4ef738&&_0x4ef738[_0xa810('0x44')]===AGI_CODE_SUCCESS&&_0x4ef738[_0xa810('0x45')]!==AGI_RESULT_ERROR&&!_0x2836b3[_0xa810('0x1b')]){logger['debug'](_0xa810('0x43'),getLogFromObject(_0x4ef738));return _[_0xa810('0x46')](_0x4ef738[_0xa810('0x45')])?null:_0x4ef738[_0xa810('0x45')][_0xa810('0x47')]();}else{logger[_0xa810('0xb')](_0xa810('0x43'),getLogFromObject(_0x4ef738));return null;}}else{logger[_0xa810('0xb')](_0xa810('0x48'));return null;}}catch(_0x253f01){logger[_0xa810('0xb')](_0x253f01['stack']);return null;}});if(_0x20e51c[_0xa810('0x49')]){logger['info'](util['format'](_0xa810('0x4a'),_0x2836b3[_0xa810('0x18')],_0x2836b3['calleridname'],_0x2836b3[_0xa810('0x19')],_0x2836b3[_0xa810('0x16')],_0x2836b3[_0xa810('0x17')]));_0x4736c8['traverseBFS'](_0x20e51c[_0xa810('0x49')]['id'],function(_0x5047ac){try{_0x5047ac=_0x42ab64['clear'](_0x5047ac);logger[_0xa810('0x31')](_0xa810('0x4b'),JSON[_0xa810('0x33')](_0x5047ac,null,0x2));if(_0x5047ac&&_0x42ab64[_0x5047ac[_0xa810('0x1e')]]){_0x4ef738=_0x42ab64[_0x5047ac[_0xa810('0x1e')]](_0x5047ac);if(_0x4ef738){logger[_0xa810('0x31')](_0xa810('0x43'),getLogFromObject(_0x4ef738));return _['isUndefined'](_0x4ef738[_0xa810('0x45')])?null:_0x4ef738[_0xa810('0x45')]['toString']();}else{logger[_0xa810('0xb')](_0xa810('0x43'),getLogFromObject(_0x4ef738));return null;}}else{logger[_0xa810('0xb')](_0xa810('0x48'));return null;}}catch(_0x59c28b){logger['error'](_0x59c28b[_0xa810('0xc')]);return null;}});}logger[_0xa810('0xf')](util[_0xa810('0x10')](_0xa810('0x4c'),_0x2836b3[_0xa810('0x18')],_0x2836b3[_0xa810('0x15')],_0x2836b3[_0xa810('0x19')],_0x2836b3[_0xa810('0x16')],_0x2836b3[_0xa810('0x17')]));logger[_0xa810('0xf')](util[_0xa810('0x10')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x2836b3[_0xa810('0x40')],_0x2836b3[_0xa810('0x41')],parseInt(_0x2836b3[_0xa810('0x42')],0xa)+0x1));_0x2836b3[_0xa810('0x4d')](_0x2836b3[_0xa810('0x40')],_0x2836b3[_0xa810('0x41')],parseInt(_0x2836b3[_0xa810('0x42')],0xa)+0x1);_0x2836b3[_0xa810('0x35')]();}}else{logger[_0xa810('0xb')](util[_0xa810('0x10')](_0xa810('0x4e'),_0x2836b3['arg_1']));_0x2836b3[_0xa810('0x4d')](_0x2836b3[_0xa810('0x40')],_0x2836b3[_0xa810('0x41')],parseInt(_0x2836b3['priority'],0xa)+0x1);_0x2836b3['close']();}}else{logger[_0xa810('0xb')](util['format']('Project\x20%s\x20not\x20found',_0x2836b3['arg_1']));_0x2836b3[_0xa810('0x4d')](_0x2836b3[_0xa810('0x40')],_0x2836b3['extension'],parseInt(_0x2836b3[_0xa810('0x42')],0xa)+0x1);_0x2836b3[_0xa810('0x35')]();}}function main(){var _0x38748e;return utilLicense[_0xa810('0x4f')]()['then'](function(_0x41a052){if(_0x41a052){if(_0x41a052[_0xa810('0x50')]){if(_0x41a052[_0xa810('0x51')]&&_0x41a052[_0xa810('0x51')]>0x0){logger[_0xa810('0xf')](util[_0xa810('0x10')](_0xa810('0x52'),_0x41a052[_0xa810('0x51')]));_0x38748e=_0x41a052[_0xa810('0x51')];}else{logger['info'](_0xa810('0x53'));}}else{logger[_0xa810('0xf')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x38748e=-0x1;}}})[_0xa810('0x2b')](function(_0x384fa4){logger[_0xa810('0xb')](_0xa810('0x54'),_0x384fa4[_0xa810('0xc')]);})[_0xa810('0x49')](function(){var _0x7bb88e=require(_0xa810('0x55'))(config[_0xa810('0x4')][_0xa810('0xe')],config['agi']['ip'],_0x38748e);_0x7bb88e['on'](_0xa810('0xb'),errorHandler);_0x7bb88e['on']('listening',listeningHandler);_0x7bb88e['on']('connection',connectionHandler);_0x7bb88e['on']('close',closeHandler);});}main();