Built motion from commit (unavailable).|2.4.18
[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 _0xe5b3=['close','timeout','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','start','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','response','isUndefined','toString','agicommand\x20not\x20found','[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\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]','finally','./server','listening','connection','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','defaults','127.0.0.1','nextTick','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','format','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','dnid','calleridname','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup','mxGraphModel','root','agicommand','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','source','target','addEdge','value','getSquareProject','then','createSquareReport','catch','indexOf','agi_','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xe5b3,0x133));var _0x3e5b=function(_0x3ff4a3,_0xa5bfa6){_0x3ff4a3=_0x3ff4a3-0x0;var _0x38676f=_0xe5b3[_0x3ff4a3];return _0x38676f;};'use strict';var parser=require('xml2json');var _=require(_0x3e5b('0x0'));var syncho=require(_0x3e5b('0x1'));var util=require(_0x3e5b('0x2'));var moment=require(_0x3e5b('0x3'));var config=require(_0x3e5b('0x4'));var logger=require(_0x3e5b('0x5'))(_0x3e5b('0x6'));var utilLicense=require(_0x3e5b('0x7'));var rpc=require(_0x3e5b('0x8'));var mailRpc=require(_0x3e5b('0x9'));var Graph=require(_0x3e5b('0xa'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x3e5b('0x6')]=_[_0x3e5b('0xb')](config['agi'],{'ip':_0x3e5b('0xc'),'port':0x11dd});function connectionHandler(_0x3901c2){process[_0x3e5b('0xd')](function(){syncho(function(){try{setChannelVariables(_0x3901c2);agiHandler(_0x3901c2);}catch(_0x113d38){logger['error'](_0x113d38['stack']);}});});}function listeningHandler(){console[_0x3e5b('0xe')](_0x3e5b('0xf'),config[_0x3e5b('0x6')][_0x3e5b('0x10')]);logger[_0x3e5b('0x11')](util['format'](_0x3e5b('0x12'),config['agi']['ip'],config[_0x3e5b('0x6')][_0x3e5b('0x10')]));}function errorHandler(_0x4d69dd){if(_0x4d69dd&&_0x4d69dd[_0x3e5b('0x13')]&&_0x4d69dd[_0x3e5b('0x14')]){logger[_0x3e5b('0x15')](util[_0x3e5b('0x16')]('[%s]\x20%s',_0x4d69dd[_0x3e5b('0x13')],_0x4d69dd['message']));}else{logger['error'](util['format'](_0x3e5b('0x17'),_0x4d69dd[_0x3e5b('0x18')]));}}function closeHandler(){logger[_0x3e5b('0x11')](util['format'](_0x3e5b('0x19'),this['arg_1'],this['calleridname'],this[_0x3e5b('0x1a')],this[_0x3e5b('0x1b')],this['uniqueid']));try{createSquareReport(this);}catch(_0x3d58a4){logger[_0x3e5b('0x15')](_0x3d58a4['stack']);}}function timeoutHandler(){logger[_0x3e5b('0x11')](util[_0x3e5b('0x16')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x3e5b('0x1c')],this[_0x3e5b('0x1a')],this[_0x3e5b('0x1b')],this[_0x3e5b('0x1d')]));}function hangupHandler(){logger[_0x3e5b('0x11')](util[_0x3e5b('0x16')](_0x3e5b('0x1e'),this[_0x3e5b('0x1f')],this[_0x3e5b('0x1c')],this[_0x3e5b('0x1a')],this[_0x3e5b('0x1b')],this[_0x3e5b('0x1d')]));this[_0x3e5b('0x20')]=!![];}function getRoot(_0x402873){return parser['toJson'](_0x402873,{'object':!![]})[_0x3e5b('0x21')][_0x3e5b('0x22')];}function addVertex(_0x2146d4,_0x150674,_0x50039b){_0x150674[_0x3e5b('0x23')]=_0x50039b;if(_0x150674['hasOwnProperty'](_0x3e5b('0x24'))){_0x150674[_0x3e5b('0x25')]=parseInt(_0x150674['retry'],0xa);}_0x2146d4[_0x3e5b('0x26')](_[_0x3e5b('0x27')](_0x150674,_0x3e5b('0x28')));}function initGraph(_0x3c8965,_0x3bb749){var _0x26c7f2=new Graph();for(var _0x160e87 in _0x3c8965){if(_0x3c8965[_0x3e5b('0x29')](_0x160e87)){if(_['isArray'](_0x3c8965[_0x160e87])){for(var _0x1c7278=0x0;_0x1c7278<_0x3c8965[_0x160e87]['length'];_0x1c7278+=0x1){addVertex(_0x26c7f2,_0x3c8965[_0x160e87][_0x1c7278],_0x160e87);}}else{addVertex(_0x26c7f2,_0x3c8965[_0x160e87],_0x160e87);}}}for(var _0xb70ab4=0x0;_0xb70ab4<_0x3bb749['length'];_0xb70ab4+=0x1){if(_0x3bb749[_0xb70ab4][_0x3e5b('0x2a')]&&_0x3bb749[_0xb70ab4][_0x3e5b('0x2b')]){_0x26c7f2[_0x3e5b('0x2c')](_0x3bb749[_0xb70ab4][_0x3e5b('0x2a')],_0x3bb749[_0xb70ab4][_0x3e5b('0x2b')],_0x3bb749[_0xb70ab4][_0x3e5b('0x2d')]);}}return _0x26c7f2;}function getSquareProject(_0x307091,_0x9c2123){rpc[_0x3e5b('0x2e')](_0x307091)[_0x3e5b('0x2f')](function(_0x1e1565){_0x9c2123(null,_0x1e1565);})['catch'](function(_0x21bc10){_0x9c2123(null,_0x21bc10);});}function createSquareReport(_0x1882aa,_0xa8760b){rpc[_0x3e5b('0x30')](_0x1882aa)[_0x3e5b('0x2f')](function(_0x31e9f9){if(_0xa8760b){_0xa8760b(null,_0x31e9f9);}})[_0x3e5b('0x31')](function(_0x4c4e01){if(_0xa8760b){_0xa8760b(null,_0x4c4e01);}});}function setChannelVariables(_0x33f089){for(var _0x56a527 in _0x33f089){if(_0x33f089['hasOwnProperty'](_0x56a527)){if(_0x56a527[_0x3e5b('0x32')](_0x3e5b('0x33'))===0x0){_0x33f089[_0x56a527['substring'](0x4)]=_0x33f089[_0x56a527];delete _0x33f089[_0x56a527];}}}}function getLogFromObject(_0x40e37d){return util[_0x3e5b('0x34')](_0x40e37d,{'showHidden':![],'depth':null});}function agiHandler(_0x9d01c4){var _0x33e356,_0x1f3162,_0x26f842,_0x3b3046,_0x26c9ab;logger[_0x3e5b('0x35')](_0x3e5b('0x36'),JSON[_0x3e5b('0x37')](_0x9d01c4,null,0x2));logger[_0x3e5b('0x11')](util['format'](_0x3e5b('0x38'),_0x9d01c4[_0x3e5b('0x1f')],_0x9d01c4['calleridname'],_0x9d01c4['callerid'],_0x9d01c4[_0x3e5b('0x1b')],_0x9d01c4['uniqueid']));_0x9d01c4['on'](_0x3e5b('0x15'),errorHandler);_0x9d01c4['on'](_0x3e5b('0x39'),closeHandler);_0x9d01c4['on'](_0x3e5b('0x3a'),timeoutHandler);_0x9d01c4[_0x3e5b('0x20')]=![];_0x9d01c4['on']('hangup',hangupHandler);var _0x18b07f=getSquareProject['sync'](null,_0x9d01c4[_0x3e5b('0x1f')]);if(_0x18b07f){if(_0x18b07f['production']){_0x33e356=getRoot(_0x18b07f['production']);if(_0x33e356&&_0x33e356['start']){logger[_0x3e5b('0x35')](_0x3e5b('0x22'),JSON[_0x3e5b('0x37')](_0x33e356,null,0x2));_0x9d01c4[_0x3e5b('0x3b')]=moment()[_0x3e5b('0x16')](_0x3e5b('0x3c'));_0x1f3162=initGraph(_['omit'](_0x33e356,'mxCell'),_0x33e356['mxCell']);_0x26f842=new Vertices(_0x9d01c4,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',_0x9d01c4['arg_1'],_0x9d01c4[_0x3e5b('0x1c')],_0x9d01c4[_0x3e5b('0x1a')],_0x9d01c4[_0x3e5b('0x1b')],_0x9d01c4[_0x3e5b('0x1d')]));_0x1f3162[_0x3e5b('0x3d')](_0x33e356[_0x3e5b('0x3e')]['id'],function(_0x2c56bc){try{_0x2c56bc=_0x26f842[_0x3e5b('0x3f')](_0x2c56bc);logger[_0x3e5b('0x35')](_0x3e5b('0x40'),JSON[_0x3e5b('0x37')](_0x2c56bc,null,0x2));if(_0x2c56bc['agicommand']===_0x3e5b('0x41')){logger[_0x3e5b('0x11')](_0x3e5b('0x42'));_0x9d01c4[_0x3e5b('0x43')]=_0x2c56bc[_0x3e5b('0x43')]||_0x9d01c4[_0x3e5b('0x43')];_0x9d01c4[_0x3e5b('0x44')]=_0x2c56bc[_0x3e5b('0x44')];_0x9d01c4[_0x3e5b('0x45')]=_0x2c56bc[_0x3e5b('0x45')]?_0x2c56bc[_0x3e5b('0x45')]-0x1:0x1;return null;}else if(_0x2c56bc&&_0x26f842[_0x2c56bc['agicommand']]){_0x26c9ab=_0x26f842[_0x2c56bc['agicommand']](_0x2c56bc);logger['info']('response',JSON[_0x3e5b('0x37')](_0x26c9ab,null,0x2));if(_0x26c9ab&&_0x26c9ab[_0x3e5b('0x46')]===AGI_CODE_SUCCESS&&_0x26c9ab[_0x3e5b('0x47')]!==AGI_RESULT_ERROR&&!_0x9d01c4[_0x3e5b('0x20')]){logger[_0x3e5b('0x35')](_0x3e5b('0x48'),getLogFromObject(_0x26c9ab));return _[_0x3e5b('0x49')](_0x26c9ab[_0x3e5b('0x47')])?null:_0x26c9ab[_0x3e5b('0x47')][_0x3e5b('0x4a')]();}else{logger['error'](_0x3e5b('0x48'),getLogFromObject(_0x26c9ab));return null;}}else{logger[_0x3e5b('0x15')](_0x3e5b('0x4b'));return null;}}catch(_0x22d495){logger[_0x3e5b('0x15')](_0x22d495['stack']);return null;}});if(_0x33e356['finally']){logger['info'](util[_0x3e5b('0x16')](_0x3e5b('0x4c'),_0x9d01c4[_0x3e5b('0x1f')],_0x9d01c4['calleridname'],_0x9d01c4['callerid'],_0x9d01c4[_0x3e5b('0x1b')],_0x9d01c4[_0x3e5b('0x1d')]));_0x1f3162[_0x3e5b('0x3d')](_0x33e356['finally']['id'],function(_0x514501){try{_0x514501=_0x26f842[_0x3e5b('0x3f')](_0x514501);logger['debug'](_0x3e5b('0x40'),JSON[_0x3e5b('0x37')](_0x514501,null,0x2));if(_0x514501&&_0x26f842[_0x514501[_0x3e5b('0x23')]]){_0x26c9ab=_0x26f842[_0x514501[_0x3e5b('0x23')]](_0x514501);if(_0x26c9ab){logger[_0x3e5b('0x35')](_0x3e5b('0x48'),getLogFromObject(_0x26c9ab));return _[_0x3e5b('0x49')](_0x26c9ab[_0x3e5b('0x47')])?null:_0x26c9ab[_0x3e5b('0x47')]['toString']();}else{logger[_0x3e5b('0x15')]('response',getLogFromObject(_0x26c9ab));return null;}}else{logger[_0x3e5b('0x15')](_0x3e5b('0x4b'));return null;}}catch(_0x26e11e){logger[_0x3e5b('0x15')](_0x26e11e[_0x3e5b('0x18')]);return null;}});}logger[_0x3e5b('0x11')](util[_0x3e5b('0x16')](_0x3e5b('0x4d'),_0x9d01c4[_0x3e5b('0x1f')],_0x9d01c4[_0x3e5b('0x1c')],_0x9d01c4[_0x3e5b('0x1a')],_0x9d01c4[_0x3e5b('0x1b')],_0x9d01c4[_0x3e5b('0x1d')]));logger['info'](util[_0x3e5b('0x16')](_0x3e5b('0x4e'),_0x9d01c4[_0x3e5b('0x43')],_0x9d01c4[_0x3e5b('0x44')],parseInt(_0x9d01c4[_0x3e5b('0x45')],0xa)+0x1));_0x9d01c4[_0x3e5b('0x4f')](_0x9d01c4['context'],_0x9d01c4[_0x3e5b('0x44')],parseInt(_0x9d01c4[_0x3e5b('0x45')],0xa)+0x1);_0x9d01c4[_0x3e5b('0x39')]();}}else{logger[_0x3e5b('0x15')](util[_0x3e5b('0x16')](_0x3e5b('0x50'),_0x9d01c4[_0x3e5b('0x1f')]));_0x9d01c4[_0x3e5b('0x4f')](_0x9d01c4['context'],_0x9d01c4[_0x3e5b('0x44')],parseInt(_0x9d01c4['priority'],0xa)+0x1);_0x9d01c4['close']();}}else{logger[_0x3e5b('0x15')](util['format'](_0x3e5b('0x51'),_0x9d01c4[_0x3e5b('0x1f')]));_0x9d01c4[_0x3e5b('0x4f')](_0x9d01c4[_0x3e5b('0x43')],_0x9d01c4['extension'],parseInt(_0x9d01c4['priority'],0xa)+0x1);_0x9d01c4['close']();}}function main(){var _0x581b94;return utilLicense[_0x3e5b('0x52')]()[_0x3e5b('0x2f')](function(_0x1ea02a){if(_0x1ea02a){if(_0x1ea02a[_0x3e5b('0x53')]){if(_0x1ea02a[_0x3e5b('0x54')]&&_0x1ea02a['callysquare']>0x0){logger['info'](util[_0x3e5b('0x16')](_0x3e5b('0x55'),_0x1ea02a[_0x3e5b('0x54')]));_0x581b94=_0x1ea02a[_0x3e5b('0x54')];}else{logger[_0x3e5b('0x11')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x581b94=-0x1;}}})['catch'](function(_0x3563b0){logger[_0x3e5b('0x15')](_0x3e5b('0x56'),_0x3563b0[_0x3e5b('0x18')]);})[_0x3e5b('0x57')](function(){var _0x24087b=require(_0x3e5b('0x58'))(config[_0x3e5b('0x6')]['port'],config[_0x3e5b('0x6')]['ip'],_0x581b94);_0x24087b['on'](_0x3e5b('0x15'),errorHandler);_0x24087b['on'](_0x3e5b('0x59'),listeningHandler);_0x24087b['on'](_0x3e5b('0x5a'),connectionHandler);_0x24087b['on'](_0x3e5b('0x39'),closeHandler);});}main();