Built motion from commit 9d1906d1.|2.5.40
[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 _0xfa9f=['source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','agi_','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','sync','production','start','debug','root','stringify','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','traverseBFS','gotoc','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','clear','vertex','[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]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','format','[%s]\x20%s','message','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','[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','isArray','length'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xfa9f,0x1ae));var _0xffa9=function(_0x2c5340,_0x5c86e5){_0x2c5340=_0x2c5340-0x0;var _0x3c505e=_0xfa9f[_0x2c5340];return _0x3c505e;};'use strict';var parser=require(_0xffa9('0x0'));var _=require(_0xffa9('0x1'));var syncho=require(_0xffa9('0x2'));var util=require(_0xffa9('0x3'));var moment=require(_0xffa9('0x4'));var config=require(_0xffa9('0x5'));var logger=require(_0xffa9('0x6'))(_0xffa9('0x7'));var utilLicense=require(_0xffa9('0x8'));var rpc=require(_0xffa9('0x9'));var mailRpc=require(_0xffa9('0xa'));var Graph=require(_0xffa9('0xb'));var Vertices=require(_0xffa9('0xc'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xffa9('0x7')]=_[_0xffa9('0xd')](config[_0xffa9('0x7')],{'ip':_0xffa9('0xe'),'port':0x11dd});function connectionHandler(_0x1f2178){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x1f2178);agiHandler(_0x1f2178);}catch(_0x1a65be){logger[_0xffa9('0xf')](_0x1a65be[_0xffa9('0x10')]);}});});}function listeningHandler(){console[_0xffa9('0x11')](_0xffa9('0x12'),config['agi'][_0xffa9('0x13')]);logger['info'](util['format'](_0xffa9('0x14'),config[_0xffa9('0x7')]['ip'],config[_0xffa9('0x7')]['port']));}function errorHandler(_0x3db056){if(_0x3db056&&_0x3db056[_0xffa9('0x15')]&&_0x3db056['message']){logger['error'](util[_0xffa9('0x16')](_0xffa9('0x17'),_0x3db056[_0xffa9('0x15')],_0x3db056[_0xffa9('0x18')]));}else{logger['error'](util[_0xffa9('0x16')](_0xffa9('0x19'),_0x3db056['stack']));}}function closeHandler(){logger[_0xffa9('0x1a')](util[_0xffa9('0x16')](_0xffa9('0x1b'),this[_0xffa9('0x1c')],this['calleridname'],this[_0xffa9('0x1d')],this[_0xffa9('0x1e')],this['uniqueid']));try{createSquareReport(this);}catch(_0x479008){logger[_0xffa9('0xf')](_0x479008[_0xffa9('0x10')]);}}function timeoutHandler(){logger[_0xffa9('0x1a')](util['format'](_0xffa9('0x1f'),this['arg_1'],this[_0xffa9('0x20')],this[_0xffa9('0x1d')],this[_0xffa9('0x1e')],this[_0xffa9('0x21')]));}function hangupHandler(){logger[_0xffa9('0x1a')](util[_0xffa9('0x16')](_0xffa9('0x22'),this['arg_1'],this[_0xffa9('0x20')],this['callerid'],this[_0xffa9('0x1e')],this['uniqueid']));this[_0xffa9('0x23')]=!![];}function getRoot(_0x1dae72){return parser[_0xffa9('0x24')](_0x1dae72,{'object':!![]})[_0xffa9('0x25')]['root'];}function addVertex(_0x515523,_0x5508d5,_0x9e94da){_0x5508d5[_0xffa9('0x26')]=_0x9e94da;if(_0x5508d5[_0xffa9('0x27')](_0xffa9('0x28'))){_0x5508d5[_0xffa9('0x29')]=parseInt(_0x5508d5[_0xffa9('0x28')],0xa);}_0x515523[_0xffa9('0x2a')](_['omit'](_0x5508d5,'mxCell'));}function initGraph(_0x1428f6,_0x5e29d7){var _0x1e936d=new Graph();for(var _0x4e98a1 in _0x1428f6){if(_0x1428f6['hasOwnProperty'](_0x4e98a1)){if(_[_0xffa9('0x2b')](_0x1428f6[_0x4e98a1])){for(var _0xcf52a=0x0;_0xcf52a<_0x1428f6[_0x4e98a1][_0xffa9('0x2c')];_0xcf52a+=0x1){addVertex(_0x1e936d,_0x1428f6[_0x4e98a1][_0xcf52a],_0x4e98a1);}}else{addVertex(_0x1e936d,_0x1428f6[_0x4e98a1],_0x4e98a1);}}}for(var _0x38046c=0x0;_0x38046c<_0x5e29d7[_0xffa9('0x2c')];_0x38046c+=0x1){if(_0x5e29d7[_0x38046c][_0xffa9('0x2d')]&&_0x5e29d7[_0x38046c][_0xffa9('0x2e')]){_0x1e936d[_0xffa9('0x2f')](_0x5e29d7[_0x38046c]['source'],_0x5e29d7[_0x38046c][_0xffa9('0x2e')],_0x5e29d7[_0x38046c][_0xffa9('0x30')]);}}return _0x1e936d;}function getSquareProject(_0x315784,_0x5dfb7f){rpc[_0xffa9('0x31')](_0x315784)['then'](function(_0x3c0720){_0x5dfb7f(null,_0x3c0720);})[_0xffa9('0x32')](function(_0x40d5ec){_0x5dfb7f(null,_0x40d5ec);});}function createSquareReport(_0x3af022,_0x1225b8){rpc[_0xffa9('0x33')](_0x3af022)[_0xffa9('0x34')](function(_0x294bc2){if(_0x1225b8){_0x1225b8(null,_0x294bc2);}})['catch'](function(_0x3fb95a){if(_0x1225b8){_0x1225b8(null,_0x3fb95a);}});}function setChannelVariables(_0x4b92f7){for(var _0x3bf3b8 in _0x4b92f7){if(_0x4b92f7[_0xffa9('0x27')](_0x3bf3b8)){if(_0x3bf3b8['indexOf'](_0xffa9('0x35'))===0x0){_0x4b92f7[_0x3bf3b8['substring'](0x4)]=_0x4b92f7[_0x3bf3b8];delete _0x4b92f7[_0x3bf3b8];}}}}function getLogFromObject(_0x2f345a){return util['inspect'](_0x2f345a,{'showHidden':![],'depth':null});}function agiHandler(_0x24ff94){var _0x268842,_0x91c1e3,_0x231b77,_0x3661b0,_0xb74d84;logger['debug'](_0xffa9('0x36'),JSON['stringify'](_0x24ff94,null,0x2));logger['info'](util[_0xffa9('0x16')](_0xffa9('0x37'),_0x24ff94[_0xffa9('0x1c')],_0x24ff94[_0xffa9('0x20')],_0x24ff94[_0xffa9('0x1d')],_0x24ff94[_0xffa9('0x1e')],_0x24ff94[_0xffa9('0x21')]));_0x24ff94['on'](_0xffa9('0xf'),errorHandler);_0x24ff94['on'](_0xffa9('0x38'),closeHandler);_0x24ff94['on'](_0xffa9('0x39'),timeoutHandler);_0x24ff94[_0xffa9('0x23')]=![];_0x24ff94['on']('hangup',hangupHandler);var _0x29e128=getSquareProject[_0xffa9('0x3a')](null,_0x24ff94[_0xffa9('0x1c')]);if(_0x29e128){if(_0x29e128[_0xffa9('0x3b')]){_0x268842=getRoot(_0x29e128['production']);if(_0x268842&&_0x268842[_0xffa9('0x3c')]){logger[_0xffa9('0x3d')](_0xffa9('0x3e'),JSON[_0xffa9('0x3f')](_0x268842,null,0x2));_0x24ff94['joinAt']=moment()[_0xffa9('0x16')](_0xffa9('0x40'));_0x91c1e3=initGraph(_[_0xffa9('0x41')](_0x268842,_0xffa9('0x42')),_0x268842[_0xffa9('0x42')]);_0x231b77=new Vertices(_0x24ff94,rpc,mailRpc);logger[_0xffa9('0x1a')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x24ff94[_0xffa9('0x1c')],_0x24ff94[_0xffa9('0x20')],_0x24ff94[_0xffa9('0x1d')],_0x24ff94['dnid'],_0x24ff94[_0xffa9('0x21')]));_0x91c1e3[_0xffa9('0x43')](_0x268842[_0xffa9('0x3c')]['id'],function(_0x3fcacc){try{_0x3fcacc=_0x231b77['clear'](_0x3fcacc);logger[_0xffa9('0x3d')]('vertex',JSON[_0xffa9('0x3f')](_0x3fcacc,null,0x2));if(_0x3fcacc[_0xffa9('0x26')]===_0xffa9('0x44')){logger[_0xffa9('0x1a')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x24ff94['context']=_0x3fcacc[_0xffa9('0x45')]||_0x24ff94['context'];_0x24ff94[_0xffa9('0x46')]=_0x3fcacc[_0xffa9('0x46')];_0x24ff94[_0xffa9('0x47')]=_0x3fcacc['priority']?_0x3fcacc[_0xffa9('0x47')]-0x1:0x1;return null;}else if(_0x3fcacc&&_0x231b77[_0x3fcacc[_0xffa9('0x26')]]){_0xb74d84=_0x231b77[_0x3fcacc[_0xffa9('0x26')]](_0x3fcacc);logger[_0xffa9('0x1a')](_0xffa9('0x48'),JSON['stringify'](_0xb74d84,null,0x2));if(_0xb74d84&&_0xb74d84[_0xffa9('0x49')]===AGI_CODE_SUCCESS&&_0xb74d84[_0xffa9('0x4a')]!==AGI_RESULT_ERROR&&!_0x24ff94[_0xffa9('0x23')]){logger['debug']('response',getLogFromObject(_0xb74d84));return _[_0xffa9('0x4b')](_0xb74d84[_0xffa9('0x4a')])?null:_0xb74d84[_0xffa9('0x4a')][_0xffa9('0x4c')]();}else{logger[_0xffa9('0xf')]('response',getLogFromObject(_0xb74d84));return null;}}else{logger[_0xffa9('0xf')](_0xffa9('0x4d'));return null;}}catch(_0x43cca4){logger[_0xffa9('0xf')](_0x43cca4[_0xffa9('0x10')]);return null;}});if(_0x268842[_0xffa9('0x4e')]){logger[_0xffa9('0x1a')](util['format'](_0xffa9('0x4f'),_0x24ff94[_0xffa9('0x1c')],_0x24ff94['calleridname'],_0x24ff94[_0xffa9('0x1d')],_0x24ff94[_0xffa9('0x1e')],_0x24ff94[_0xffa9('0x21')]));_0x91c1e3[_0xffa9('0x43')](_0x268842['finally']['id'],function(_0x2eb6d8){try{_0x2eb6d8=_0x231b77[_0xffa9('0x50')](_0x2eb6d8);logger[_0xffa9('0x3d')](_0xffa9('0x51'),JSON[_0xffa9('0x3f')](_0x2eb6d8,null,0x2));if(_0x2eb6d8&&_0x231b77[_0x2eb6d8[_0xffa9('0x26')]]){_0xb74d84=_0x231b77[_0x2eb6d8[_0xffa9('0x26')]](_0x2eb6d8);if(_0xb74d84){logger[_0xffa9('0x3d')](_0xffa9('0x48'),getLogFromObject(_0xb74d84));return _[_0xffa9('0x4b')](_0xb74d84[_0xffa9('0x4a')])?null:_0xb74d84[_0xffa9('0x4a')][_0xffa9('0x4c')]();}else{logger[_0xffa9('0xf')]('response',getLogFromObject(_0xb74d84));return null;}}else{logger['error'](_0xffa9('0x4d'));return null;}}catch(_0x5efa09){logger[_0xffa9('0xf')](_0x5efa09[_0xffa9('0x10')]);return null;}});}logger[_0xffa9('0x1a')](util[_0xffa9('0x16')](_0xffa9('0x52'),_0x24ff94[_0xffa9('0x1c')],_0x24ff94[_0xffa9('0x20')],_0x24ff94[_0xffa9('0x1d')],_0x24ff94[_0xffa9('0x1e')],_0x24ff94[_0xffa9('0x21')]));logger['info'](util[_0xffa9('0x16')](_0xffa9('0x53'),_0x24ff94[_0xffa9('0x45')],_0x24ff94[_0xffa9('0x46')],parseInt(_0x24ff94[_0xffa9('0x47')],0xa)+0x1));_0x24ff94[_0xffa9('0x54')](_0x24ff94[_0xffa9('0x45')],_0x24ff94[_0xffa9('0x46')],parseInt(_0x24ff94['priority'],0xa)+0x1);_0x24ff94[_0xffa9('0x38')]();}}else{logger[_0xffa9('0xf')](util[_0xffa9('0x16')](_0xffa9('0x55'),_0x24ff94[_0xffa9('0x1c')]));_0x24ff94['continueAt'](_0x24ff94[_0xffa9('0x45')],_0x24ff94[_0xffa9('0x46')],parseInt(_0x24ff94[_0xffa9('0x47')],0xa)+0x1);_0x24ff94[_0xffa9('0x38')]();}}else{logger[_0xffa9('0xf')](util[_0xffa9('0x16')](_0xffa9('0x56'),_0x24ff94[_0xffa9('0x1c')]));_0x24ff94[_0xffa9('0x54')](_0x24ff94[_0xffa9('0x45')],_0x24ff94['extension'],parseInt(_0x24ff94[_0xffa9('0x47')],0xa)+0x1);_0x24ff94[_0xffa9('0x38')]();}}function main(){var _0x3d36a3;return utilLicense[_0xffa9('0x57')]()[_0xffa9('0x34')](function(_0x4fc1ab){if(_0x4fc1ab){if(_0x4fc1ab[_0xffa9('0x58')]){if(_0x4fc1ab[_0xffa9('0x59')]&&_0x4fc1ab['callysquare']>0x0){logger[_0xffa9('0x1a')](util['format'](_0xffa9('0x5a'),_0x4fc1ab[_0xffa9('0x59')]));_0x3d36a3=_0x4fc1ab[_0xffa9('0x59')];}else{logger[_0xffa9('0x1a')](_0xffa9('0x5b'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x3d36a3=-0x1;}}})[_0xffa9('0x32')](function(_0x237206){logger[_0xffa9('0xf')](_0xffa9('0x5c'),_0x237206[_0xffa9('0x10')]);})[_0xffa9('0x4e')](function(){var _0x4172c7=require(_0xffa9('0x5d'))(config[_0xffa9('0x7')][_0xffa9('0x13')],config['agi']['ip'],_0x3d36a3);_0x4172c7['on'](_0xffa9('0xf'),errorHandler);_0x4172c7['on']('listening',listeningHandler);_0x4172c7['on'](_0xffa9('0x5e'),connectionHandler);_0x4172c7['on'](_0xffa9('0x38'),closeHandler);});}main();