1ed49bce80f657641371f80ed64e1533542f3b2b
[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 _0xf3ec=['[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','debug','vertex','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','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','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','xml2json','lodash','syncho','moment','../../config/environment','agi','../../config/license/util','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','omit','mxCell','isArray','length','source','target','addEdge','value','then','catch','createSquareReport','indexOf','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','close','timeout','hangup','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3490f9,_0x1c8667){var _0x240cee=function(_0x427cf5){while(--_0x427cf5){_0x3490f9['push'](_0x3490f9['shift']());}};_0x240cee(++_0x1c8667);}(_0xf3ec,0x177));var _0xcf3e=function(_0x2699d8,_0x14ba19){_0x2699d8=_0x2699d8-0x0;var _0x5b3896=_0xf3ec[_0x2699d8];return _0x5b3896;};'use strict';var parser=require(_0xcf3e('0x0'));var _=require(_0xcf3e('0x1'));var syncho=require(_0xcf3e('0x2'));var util=require('util');var moment=require(_0xcf3e('0x3'));var config=require(_0xcf3e('0x4'));var logger=require('../../config/logger')(_0xcf3e('0x5'));var utilLicense=require(_0xcf3e('0x6'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xcf3e('0x7'));var Vertices=require(_0xcf3e('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xcf3e('0x5')]=_[_0xcf3e('0x9')](config[_0xcf3e('0x5')],{'ip':_0xcf3e('0xa'),'port':0x11dd});function connectionHandler(_0x5b0cca){process[_0xcf3e('0xb')](function(){syncho(function(){try{setChannelVariables(_0x5b0cca);agiHandler(_0x5b0cca);}catch(_0x4f485c){logger[_0xcf3e('0xc')](_0x4f485c[_0xcf3e('0xd')]);}});});}function listeningHandler(){console[_0xcf3e('0xe')](_0xcf3e('0xf'),config[_0xcf3e('0x5')][_0xcf3e('0x10')]);logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')](_0xcf3e('0x13'),config[_0xcf3e('0x5')]['ip'],config['agi'][_0xcf3e('0x10')]));}function errorHandler(_0x3ea519){if(_0x3ea519&&_0x3ea519[_0xcf3e('0x14')]&&_0x3ea519[_0xcf3e('0x15')]){logger['error'](util[_0xcf3e('0x12')](_0xcf3e('0x16'),_0x3ea519['name'],_0x3ea519['message']));}else{logger[_0xcf3e('0xc')](util[_0xcf3e('0x12')](_0xcf3e('0x17'),_0x3ea519[_0xcf3e('0xd')]));}}function closeHandler(){logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xcf3e('0x18')],this[_0xcf3e('0x19')],this[_0xcf3e('0x1a')],this[_0xcf3e('0x1b')],this['uniqueid']));try{createSquareReport(this);}catch(_0x49b90c){logger['error'](_0x49b90c[_0xcf3e('0xd')]);}}function timeoutHandler(){logger['info'](util[_0xcf3e('0x12')](_0xcf3e('0x1c'),this[_0xcf3e('0x18')],this['calleridname'],this['callerid'],this[_0xcf3e('0x1b')],this['uniqueid']));}function hangupHandler(){logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')](_0xcf3e('0x1d'),this[_0xcf3e('0x18')],this[_0xcf3e('0x19')],this[_0xcf3e('0x1a')],this[_0xcf3e('0x1b')],this['uniqueid']));this[_0xcf3e('0x1e')]=!![];}function getRoot(_0x2eb687){return parser[_0xcf3e('0x1f')](_0x2eb687,{'object':!![]})[_0xcf3e('0x20')][_0xcf3e('0x21')];}function addVertex(_0x39b60e,_0x16c7f0,_0x4b8e7f){_0x16c7f0['agicommand']=_0x4b8e7f;if(_0x16c7f0[_0xcf3e('0x22')](_0xcf3e('0x23'))){_0x16c7f0['maxRetry']=parseInt(_0x16c7f0['retry'],0xa);}_0x39b60e['addVertex'](_[_0xcf3e('0x24')](_0x16c7f0,_0xcf3e('0x25')));}function initGraph(_0x2c31d8,_0x193002){var _0x2fd11a=new Graph();for(var _0x1ec069 in _0x2c31d8){if(_0x2c31d8[_0xcf3e('0x22')](_0x1ec069)){if(_[_0xcf3e('0x26')](_0x2c31d8[_0x1ec069])){for(var _0x3b1693=0x0;_0x3b1693<_0x2c31d8[_0x1ec069][_0xcf3e('0x27')];_0x3b1693+=0x1){addVertex(_0x2fd11a,_0x2c31d8[_0x1ec069][_0x3b1693],_0x1ec069);}}else{addVertex(_0x2fd11a,_0x2c31d8[_0x1ec069],_0x1ec069);}}}for(var _0x2e2802=0x0;_0x2e2802<_0x193002['length'];_0x2e2802+=0x1){if(_0x193002[_0x2e2802][_0xcf3e('0x28')]&&_0x193002[_0x2e2802][_0xcf3e('0x29')]){_0x2fd11a[_0xcf3e('0x2a')](_0x193002[_0x2e2802][_0xcf3e('0x28')],_0x193002[_0x2e2802][_0xcf3e('0x29')],_0x193002[_0x2e2802][_0xcf3e('0x2b')]);}}return _0x2fd11a;}function getSquareProject(_0x5735ca,_0x54a68d){rpc['getSquareProject'](_0x5735ca)[_0xcf3e('0x2c')](function(_0xa4cc8e){_0x54a68d(null,_0xa4cc8e);})[_0xcf3e('0x2d')](function(_0x266ab6){_0x54a68d(null,_0x266ab6);});}function createSquareReport(_0x23fafe,_0x3728c1){rpc[_0xcf3e('0x2e')](_0x23fafe)[_0xcf3e('0x2c')](function(_0x21ebaa){if(_0x3728c1){_0x3728c1(null,_0x21ebaa);}})['catch'](function(_0x2a96e4){if(_0x3728c1){_0x3728c1(null,_0x2a96e4);}});}function setChannelVariables(_0x4041bb){for(var _0x19ee92 in _0x4041bb){if(_0x4041bb[_0xcf3e('0x22')](_0x19ee92)){if(_0x19ee92[_0xcf3e('0x2f')]('agi_')===0x0){_0x4041bb[_0x19ee92['substring'](0x4)]=_0x4041bb[_0x19ee92];delete _0x4041bb[_0x19ee92];}}}}function getLogFromObject(_0x87748c){return util['inspect'](_0x87748c,{'showHidden':![],'depth':null});}function agiHandler(_0xd4962a){var _0xe3134e,_0x277600,_0x442aef,_0x14be9c,_0x1307b5;logger['debug'](_0xcf3e('0x30'),JSON[_0xcf3e('0x31')](_0xd4962a,null,0x2));logger['info'](util['format'](_0xcf3e('0x32'),_0xd4962a[_0xcf3e('0x18')],_0xd4962a[_0xcf3e('0x19')],_0xd4962a['callerid'],_0xd4962a[_0xcf3e('0x1b')],_0xd4962a[_0xcf3e('0x33')]));_0xd4962a['on']('error',errorHandler);_0xd4962a['on'](_0xcf3e('0x34'),closeHandler);_0xd4962a['on'](_0xcf3e('0x35'),timeoutHandler);_0xd4962a[_0xcf3e('0x1e')]=![];_0xd4962a['on'](_0xcf3e('0x36'),hangupHandler);var _0x369888=getSquareProject[_0xcf3e('0x37')](null,_0xd4962a['arg_1']);if(_0x369888){if(_0x369888['production']){_0xe3134e=getRoot(_0x369888[_0xcf3e('0x38')]);if(_0xe3134e&&_0xe3134e[_0xcf3e('0x39')]){logger['debug'](_0xcf3e('0x21'),JSON['stringify'](_0xe3134e,null,0x2));_0xd4962a[_0xcf3e('0x3a')]=moment()[_0xcf3e('0x12')](_0xcf3e('0x3b'));_0x277600=initGraph(_['omit'](_0xe3134e,_0xcf3e('0x25')),_0xe3134e['mxCell']);_0x442aef=new Vertices(_0xd4962a,rpc,mailRpc);logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')](_0xcf3e('0x3c'),_0xd4962a[_0xcf3e('0x18')],_0xd4962a['calleridname'],_0xd4962a['callerid'],_0xd4962a['dnid'],_0xd4962a[_0xcf3e('0x33')]));_0x277600[_0xcf3e('0x3d')](_0xe3134e[_0xcf3e('0x39')]['id'],function(_0x3635e1){try{_0x3635e1=_0x442aef['clear'](_0x3635e1);logger[_0xcf3e('0x3e')](_0xcf3e('0x3f'),JSON[_0xcf3e('0x31')](_0x3635e1,null,0x2));if(_0x3635e1['agicommand']==='gotoc'){logger[_0xcf3e('0x11')](_0xcf3e('0x40'));_0xd4962a[_0xcf3e('0x41')]=_0x3635e1[_0xcf3e('0x41')]||_0xd4962a[_0xcf3e('0x41')];_0xd4962a[_0xcf3e('0x42')]=_0x3635e1['extension'];_0xd4962a[_0xcf3e('0x43')]=_0x3635e1['priority']?_0x3635e1[_0xcf3e('0x43')]-0x1:0x1;return null;}else if(_0x3635e1&&_0x442aef[_0x3635e1['agicommand']]){_0x1307b5=_0x442aef[_0x3635e1[_0xcf3e('0x44')]](_0x3635e1);logger[_0xcf3e('0x11')](_0xcf3e('0x45'),JSON[_0xcf3e('0x31')](_0x1307b5,null,0x2));if(_0x1307b5&&_0x1307b5[_0xcf3e('0x46')]===AGI_CODE_SUCCESS&&_0x1307b5[_0xcf3e('0x47')]!==AGI_RESULT_ERROR&&!_0xd4962a[_0xcf3e('0x1e')]){logger['debug']('response',getLogFromObject(_0x1307b5));return _[_0xcf3e('0x48')](_0x1307b5[_0xcf3e('0x47')])?null:_0x1307b5['result'][_0xcf3e('0x49')]();}else{logger['error'](_0xcf3e('0x45'),getLogFromObject(_0x1307b5));return null;}}else{logger['error'](_0xcf3e('0x4a'));return null;}}catch(_0x3a8da2){logger[_0xcf3e('0xc')](_0x3a8da2[_0xcf3e('0xd')]);return null;}});if(_0xe3134e[_0xcf3e('0x4b')]){logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')](_0xcf3e('0x4c'),_0xd4962a[_0xcf3e('0x18')],_0xd4962a[_0xcf3e('0x19')],_0xd4962a['callerid'],_0xd4962a[_0xcf3e('0x1b')],_0xd4962a[_0xcf3e('0x33')]));_0x277600[_0xcf3e('0x3d')](_0xe3134e['finally']['id'],function(_0x31c9e3){try{_0x31c9e3=_0x442aef['clear'](_0x31c9e3);logger[_0xcf3e('0x3e')](_0xcf3e('0x3f'),JSON['stringify'](_0x31c9e3,null,0x2));if(_0x31c9e3&&_0x442aef[_0x31c9e3[_0xcf3e('0x44')]]){_0x1307b5=_0x442aef[_0x31c9e3[_0xcf3e('0x44')]](_0x31c9e3);if(_0x1307b5){logger[_0xcf3e('0x3e')]('response',getLogFromObject(_0x1307b5));return _[_0xcf3e('0x48')](_0x1307b5[_0xcf3e('0x47')])?null:_0x1307b5[_0xcf3e('0x47')][_0xcf3e('0x49')]();}else{logger['error']('response',getLogFromObject(_0x1307b5));return null;}}else{logger[_0xcf3e('0xc')](_0xcf3e('0x4a'));return null;}}catch(_0x24c8f2){logger[_0xcf3e('0xc')](_0x24c8f2[_0xcf3e('0xd')]);return null;}});}logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xd4962a[_0xcf3e('0x18')],_0xd4962a['calleridname'],_0xd4962a['callerid'],_0xd4962a[_0xcf3e('0x1b')],_0xd4962a[_0xcf3e('0x33')]));logger[_0xcf3e('0x11')](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0xd4962a[_0xcf3e('0x41')],_0xd4962a['extension'],parseInt(_0xd4962a[_0xcf3e('0x43')],0xa)+0x1));_0xd4962a[_0xcf3e('0x4d')](_0xd4962a[_0xcf3e('0x41')],_0xd4962a[_0xcf3e('0x42')],parseInt(_0xd4962a[_0xcf3e('0x43')],0xa)+0x1);_0xd4962a[_0xcf3e('0x34')]();}}else{logger[_0xcf3e('0xc')](util[_0xcf3e('0x12')](_0xcf3e('0x4e'),_0xd4962a['arg_1']));_0xd4962a[_0xcf3e('0x4d')](_0xd4962a['context'],_0xd4962a[_0xcf3e('0x42')],parseInt(_0xd4962a[_0xcf3e('0x43')],0xa)+0x1);_0xd4962a[_0xcf3e('0x34')]();}}else{logger['error'](util[_0xcf3e('0x12')](_0xcf3e('0x4f'),_0xd4962a[_0xcf3e('0x18')]));_0xd4962a[_0xcf3e('0x4d')](_0xd4962a['context'],_0xd4962a['extension'],parseInt(_0xd4962a['priority'],0xa)+0x1);_0xd4962a['close']();}}function main(){var _0x1a394b;return utilLicense['getLicense']()['then'](function(_0x28ea60){if(_0x28ea60){if(_0x28ea60[_0xcf3e('0x50')]){if(_0x28ea60[_0xcf3e('0x51')]&&_0x28ea60[_0xcf3e('0x51')]>0x0){logger[_0xcf3e('0x11')](util[_0xcf3e('0x12')]('[LICENSE]\x20CHANNELS:\x20%s',_0x28ea60[_0xcf3e('0x51')]));_0x1a394b=_0x28ea60[_0xcf3e('0x51')];}else{logger[_0xcf3e('0x11')](_0xcf3e('0x52'));}}else{logger[_0xcf3e('0x11')](_0xcf3e('0x53'));_0x1a394b=-0x1;}}})[_0xcf3e('0x2d')](function(_0x38e70a){logger['error'](_0xcf3e('0x54'),_0x38e70a[_0xcf3e('0xd')]);})[_0xcf3e('0x4b')](function(){var _0x515c3d=require(_0xcf3e('0x55'))(config[_0xcf3e('0x5')][_0xcf3e('0x10')],config['agi']['ip'],_0x1a394b);_0x515c3d['on'](_0xcf3e('0xc'),errorHandler);_0x515c3d['on'](_0xcf3e('0x56'),listeningHandler);_0x515c3d['on']('connection',connectionHandler);_0x515c3d['on'](_0xcf3e('0x34'),closeHandler);});}main();