Built motion from commit (unavailable).|2.5.3
[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 _0x2494=['value','getSquareProject','then','indexOf','agi_','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','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','catch','[LICENSE]','finally','./server','connection','xml2json','syncho','util','moment','../../config/environment','../../config/logger','agi','./mailRpc','./vertices','defaults','127.0.0.1','nextTick','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','name','error','message','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','arg_1','uniqueid','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','target','addEdge','source'];(function(_0x2678d6,_0x4e2001){var _0x475503=function(_0x34b23d){while(--_0x34b23d){_0x2678d6['push'](_0x2678d6['shift']());}};_0x475503(++_0x4e2001);}(_0x2494,0x82));var _0x4249=function(_0x1c6de2,_0x42cfa2){_0x1c6de2=_0x1c6de2-0x0;var _0x5450c0=_0x2494[_0x1c6de2];return _0x5450c0;};'use strict';var parser=require(_0x4249('0x0'));var _=require('lodash');var syncho=require(_0x4249('0x1'));var util=require(_0x4249('0x2'));var moment=require(_0x4249('0x3'));var config=require(_0x4249('0x4'));var logger=require(_0x4249('0x5'))(_0x4249('0x6'));var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var mailRpc=require(_0x4249('0x7'));var Graph=require('./graph');var Vertices=require(_0x4249('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x4249('0x6')]=_[_0x4249('0x9')](config['agi'],{'ip':_0x4249('0xa'),'port':0x11dd});function connectionHandler(_0x2b7934){process[_0x4249('0xb')](function(){syncho(function(){try{setChannelVariables(_0x2b7934);agiHandler(_0x2b7934);}catch(_0x58529b){logger['error'](_0x58529b[_0x4249('0xc')]);}});});}function listeningHandler(){console[_0x4249('0xd')](_0x4249('0xe'),config[_0x4249('0x6')][_0x4249('0xf')]);logger[_0x4249('0x10')](util[_0x4249('0x11')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config[_0x4249('0x6')]['port']));}function errorHandler(_0xc4ae35){if(_0xc4ae35&&_0xc4ae35[_0x4249('0x12')]&&_0xc4ae35['message']){logger[_0x4249('0x13')](util[_0x4249('0x11')]('[%s]\x20%s',_0xc4ae35[_0x4249('0x12')],_0xc4ae35[_0x4249('0x14')]));}else{logger[_0x4249('0x13')](util[_0x4249('0x11')](_0x4249('0x15'),_0xc4ae35[_0x4249('0xc')]));}}function closeHandler(){logger['info'](util[_0x4249('0x11')](_0x4249('0x16'),this['arg_1'],this[_0x4249('0x17')],this['callerid'],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x39a6df){logger[_0x4249('0x13')](_0x39a6df[_0x4249('0xc')]);}}function timeoutHandler(){logger[_0x4249('0x10')](util[_0x4249('0x11')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x4249('0x17')],this[_0x4249('0x18')],this[_0x4249('0x19')],this['uniqueid']));}function hangupHandler(){logger[_0x4249('0x10')](util[_0x4249('0x11')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x4249('0x1a')],this['calleridname'],this[_0x4249('0x18')],this[_0x4249('0x19')],this[_0x4249('0x1b')]));this[_0x4249('0x1c')]=!![];}function getRoot(_0x42d0d9){return parser[_0x4249('0x1d')](_0x42d0d9,{'object':!![]})[_0x4249('0x1e')][_0x4249('0x1f')];}function addVertex(_0x4032f7,_0x15561d,_0x9da8){_0x15561d[_0x4249('0x20')]=_0x9da8;if(_0x15561d[_0x4249('0x21')](_0x4249('0x22'))){_0x15561d[_0x4249('0x23')]=parseInt(_0x15561d[_0x4249('0x22')],0xa);}_0x4032f7[_0x4249('0x24')](_[_0x4249('0x25')](_0x15561d,_0x4249('0x26')));}function initGraph(_0x357c84,_0x43dc25){var _0x1d4fb9=new Graph();for(var _0x4ce9af in _0x357c84){if(_0x357c84[_0x4249('0x21')](_0x4ce9af)){if(_[_0x4249('0x27')](_0x357c84[_0x4ce9af])){for(var _0x434160=0x0;_0x434160<_0x357c84[_0x4ce9af][_0x4249('0x28')];_0x434160+=0x1){addVertex(_0x1d4fb9,_0x357c84[_0x4ce9af][_0x434160],_0x4ce9af);}}else{addVertex(_0x1d4fb9,_0x357c84[_0x4ce9af],_0x4ce9af);}}}for(var _0x51e8b4=0x0;_0x51e8b4<_0x43dc25[_0x4249('0x28')];_0x51e8b4+=0x1){if(_0x43dc25[_0x51e8b4]['source']&&_0x43dc25[_0x51e8b4][_0x4249('0x29')]){_0x1d4fb9[_0x4249('0x2a')](_0x43dc25[_0x51e8b4][_0x4249('0x2b')],_0x43dc25[_0x51e8b4]['target'],_0x43dc25[_0x51e8b4][_0x4249('0x2c')]);}}return _0x1d4fb9;}function getSquareProject(_0x3b3cb5,_0x5afc2f){rpc[_0x4249('0x2d')](_0x3b3cb5)['then'](function(_0x4e7761){_0x5afc2f(null,_0x4e7761);})['catch'](function(_0x53182d){_0x5afc2f(null,_0x53182d);});}function createSquareReport(_0x2f51c0,_0x46e92a){rpc['createSquareReport'](_0x2f51c0)[_0x4249('0x2e')](function(_0x42d96a){if(_0x46e92a){_0x46e92a(null,_0x42d96a);}})['catch'](function(_0x2f67b2){if(_0x46e92a){_0x46e92a(null,_0x2f67b2);}});}function setChannelVariables(_0x49f975){for(var _0x4aad35 in _0x49f975){if(_0x49f975[_0x4249('0x21')](_0x4aad35)){if(_0x4aad35[_0x4249('0x2f')](_0x4249('0x30'))===0x0){_0x49f975[_0x4aad35['substring'](0x4)]=_0x49f975[_0x4aad35];delete _0x49f975[_0x4aad35];}}}}function getLogFromObject(_0x30db4e){return util['inspect'](_0x30db4e,{'showHidden':![],'depth':null});}function agiHandler(_0x4dde8a){var _0x3e41a8,_0xaf3ba5,_0x563ac0,_0x492e07,_0x461d97;logger[_0x4249('0x31')](_0x4249('0x32'),JSON[_0x4249('0x33')](_0x4dde8a,null,0x2));logger[_0x4249('0x10')](util[_0x4249('0x11')](_0x4249('0x34'),_0x4dde8a[_0x4249('0x1a')],_0x4dde8a[_0x4249('0x17')],_0x4dde8a[_0x4249('0x18')],_0x4dde8a[_0x4249('0x19')],_0x4dde8a[_0x4249('0x1b')]));_0x4dde8a['on'](_0x4249('0x13'),errorHandler);_0x4dde8a['on'](_0x4249('0x35'),closeHandler);_0x4dde8a['on'](_0x4249('0x36'),timeoutHandler);_0x4dde8a['evtHangup']=![];_0x4dde8a['on']('hangup',hangupHandler);var _0x289f13=getSquareProject[_0x4249('0x37')](null,_0x4dde8a[_0x4249('0x1a')]);if(_0x289f13){if(_0x289f13[_0x4249('0x38')]){_0x3e41a8=getRoot(_0x289f13['production']);if(_0x3e41a8&&_0x3e41a8[_0x4249('0x39')]){logger[_0x4249('0x31')](_0x4249('0x1f'),JSON[_0x4249('0x33')](_0x3e41a8,null,0x2));_0x4dde8a[_0x4249('0x3a')]=moment()[_0x4249('0x11')](_0x4249('0x3b'));_0xaf3ba5=initGraph(_[_0x4249('0x25')](_0x3e41a8,_0x4249('0x26')),_0x3e41a8[_0x4249('0x26')]);_0x563ac0=new Vertices(_0x4dde8a,rpc,mailRpc);logger['info'](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4dde8a[_0x4249('0x1a')],_0x4dde8a[_0x4249('0x17')],_0x4dde8a[_0x4249('0x18')],_0x4dde8a[_0x4249('0x19')],_0x4dde8a['uniqueid']));_0xaf3ba5[_0x4249('0x3c')](_0x3e41a8['start']['id'],function(_0xd71464){try{_0xd71464=_0x563ac0[_0x4249('0x3d')](_0xd71464);logger['debug'](_0x4249('0x3e'),JSON[_0x4249('0x33')](_0xd71464,null,0x2));if(_0xd71464[_0x4249('0x20')]===_0x4249('0x3f')){logger[_0x4249('0x10')](_0x4249('0x40'));_0x4dde8a[_0x4249('0x41')]=_0xd71464[_0x4249('0x41')]||_0x4dde8a[_0x4249('0x41')];_0x4dde8a[_0x4249('0x42')]=_0xd71464['extension'];_0x4dde8a[_0x4249('0x43')]=_0xd71464[_0x4249('0x43')]?_0xd71464[_0x4249('0x43')]-0x1:0x1;return null;}else if(_0xd71464&&_0x563ac0[_0xd71464[_0x4249('0x20')]]){_0x461d97=_0x563ac0[_0xd71464[_0x4249('0x20')]](_0xd71464);logger[_0x4249('0x10')](_0x4249('0x44'),JSON[_0x4249('0x33')](_0x461d97,null,0x2));if(_0x461d97&&_0x461d97[_0x4249('0x45')]===AGI_CODE_SUCCESS&&_0x461d97[_0x4249('0x46')]!==AGI_RESULT_ERROR&&!_0x4dde8a[_0x4249('0x1c')]){logger['debug'](_0x4249('0x44'),getLogFromObject(_0x461d97));return _[_0x4249('0x47')](_0x461d97[_0x4249('0x46')])?null:_0x461d97[_0x4249('0x46')][_0x4249('0x48')]();}else{logger[_0x4249('0x13')]('response',getLogFromObject(_0x461d97));return null;}}else{logger[_0x4249('0x13')](_0x4249('0x49'));return null;}}catch(_0x4e5651){logger[_0x4249('0x13')](_0x4e5651[_0x4249('0xc')]);return null;}});if(_0x3e41a8['finally']){logger[_0x4249('0x10')](util['format']('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4dde8a[_0x4249('0x1a')],_0x4dde8a['calleridname'],_0x4dde8a[_0x4249('0x18')],_0x4dde8a[_0x4249('0x19')],_0x4dde8a[_0x4249('0x1b')]));_0xaf3ba5[_0x4249('0x3c')](_0x3e41a8['finally']['id'],function(_0x474d64){try{_0x474d64=_0x563ac0[_0x4249('0x3d')](_0x474d64);logger['debug'](_0x4249('0x3e'),JSON[_0x4249('0x33')](_0x474d64,null,0x2));if(_0x474d64&&_0x563ac0[_0x474d64[_0x4249('0x20')]]){_0x461d97=_0x563ac0[_0x474d64[_0x4249('0x20')]](_0x474d64);if(_0x461d97){logger[_0x4249('0x31')](_0x4249('0x44'),getLogFromObject(_0x461d97));return _[_0x4249('0x47')](_0x461d97[_0x4249('0x46')])?null:_0x461d97[_0x4249('0x46')][_0x4249('0x48')]();}else{logger[_0x4249('0x13')]('response',getLogFromObject(_0x461d97));return null;}}else{logger[_0x4249('0x13')](_0x4249('0x49'));return null;}}catch(_0x1787f6){logger[_0x4249('0x13')](_0x1787f6['stack']);return null;}});}logger['info'](util[_0x4249('0x11')](_0x4249('0x4a'),_0x4dde8a[_0x4249('0x1a')],_0x4dde8a[_0x4249('0x17')],_0x4dde8a[_0x4249('0x18')],_0x4dde8a[_0x4249('0x19')],_0x4dde8a['uniqueid']));logger['info'](util[_0x4249('0x11')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x4dde8a[_0x4249('0x41')],_0x4dde8a['extension'],parseInt(_0x4dde8a[_0x4249('0x43')],0xa)+0x1));_0x4dde8a[_0x4249('0x4b')](_0x4dde8a['context'],_0x4dde8a[_0x4249('0x42')],parseInt(_0x4dde8a[_0x4249('0x43')],0xa)+0x1);_0x4dde8a['close']();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x4dde8a[_0x4249('0x1a')]));_0x4dde8a[_0x4249('0x4b')](_0x4dde8a[_0x4249('0x41')],_0x4dde8a[_0x4249('0x42')],parseInt(_0x4dde8a[_0x4249('0x43')],0xa)+0x1);_0x4dde8a[_0x4249('0x35')]();}}else{logger[_0x4249('0x13')](util['format'](_0x4249('0x4c'),_0x4dde8a['arg_1']));_0x4dde8a['continueAt'](_0x4dde8a[_0x4249('0x41')],_0x4dde8a['extension'],parseInt(_0x4dde8a[_0x4249('0x43')],0xa)+0x1);_0x4dde8a[_0x4249('0x35')]();}}function main(){var _0x4cc6ab;return utilLicense['getLicense']()[_0x4249('0x2e')](function(_0x76adc2){if(_0x76adc2){if(_0x76adc2[_0x4249('0x4d')]){if(_0x76adc2[_0x4249('0x4e')]&&_0x76adc2[_0x4249('0x4e')]>0x0){logger[_0x4249('0x10')](util[_0x4249('0x11')](_0x4249('0x4f'),_0x76adc2['callysquare']));_0x4cc6ab=_0x76adc2['callysquare'];}else{logger[_0x4249('0x10')](_0x4249('0x50'));}}else{logger[_0x4249('0x10')](_0x4249('0x51'));_0x4cc6ab=-0x1;}}})[_0x4249('0x52')](function(_0x320da5){logger[_0x4249('0x13')](_0x4249('0x53'),_0x320da5[_0x4249('0xc')]);})[_0x4249('0x54')](function(){var _0x46bdc4=require(_0x4249('0x55'))(config[_0x4249('0x6')][_0x4249('0xf')],config['agi']['ip'],_0x4cc6ab);_0x46bdc4['on']('error',errorHandler);_0x46bdc4['on']('listening',listeningHandler);_0x46bdc4['on'](_0x4249('0x56'),connectionHandler);_0x46bdc4['on'](_0x4249('0x35'),closeHandler);});}main();