2b4330f9cbfe82d97f343f23cccfcf4bfbd5a0bf
[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 _0x1dcc=['inspect','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','sync','production','start','stringify','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','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','response','isUndefined','result','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','agicommand\x20not\x20found','[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','voice','callysquare','[LICENSE]\x20VOICE\x20IS\x20DISABLED','listening','xml2json','lodash','syncho','util','../../config/environment','agi','../../config/license/util','./rpc','./vertices','defaults','127.0.0.1','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','length','target','addEdge','source','value','getSquareProject','then','catch','createSquareReport','agi_','substring'];(function(_0x55ff79,_0x3d45e7){var _0x579067=function(_0x3650e4){while(--_0x3650e4){_0x55ff79['push'](_0x55ff79['shift']());}};_0x579067(++_0x3d45e7);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x5e0653,_0x4e252c){_0x5e0653=_0x5e0653-0x0;var _0x188fbc=_0x1dcc[_0x5e0653];return _0x188fbc;};'use strict';var parser=require(_0xc1dc('0x0'));var _=require(_0xc1dc('0x1'));var syncho=require(_0xc1dc('0x2'));var util=require(_0xc1dc('0x3'));var moment=require('moment');var config=require(_0xc1dc('0x4'));var logger=require('../../config/logger')(_0xc1dc('0x5'));var utilLicense=require(_0xc1dc('0x6'));var rpc=require(_0xc1dc('0x7'));var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0xc1dc('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc1dc('0x5')]=_[_0xc1dc('0x9')](config['agi'],{'ip':_0xc1dc('0xa'),'port':0x11dd});function connectionHandler(_0x3deb94){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3deb94);agiHandler(_0x3deb94);}catch(_0x6aad09){logger['error'](_0x6aad09[_0xc1dc('0xb')]);}});});}function listeningHandler(){console['log'](_0xc1dc('0xc'),config[_0xc1dc('0x5')][_0xc1dc('0xd')]);logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x10'),config[_0xc1dc('0x5')]['ip'],config[_0xc1dc('0x5')][_0xc1dc('0xd')]));}function errorHandler(_0x4a2c0c){if(_0x4a2c0c&&_0x4a2c0c[_0xc1dc('0x11')]&&_0x4a2c0c[_0xc1dc('0x12')]){logger[_0xc1dc('0x13')](util['format'](_0xc1dc('0x14'),_0x4a2c0c[_0xc1dc('0x11')],_0x4a2c0c[_0xc1dc('0x12')]));}else{logger[_0xc1dc('0x13')](util[_0xc1dc('0xf')](_0xc1dc('0x15'),_0x4a2c0c[_0xc1dc('0xb')]));}}function closeHandler(){logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x16'),this[_0xc1dc('0x17')],this['calleridname'],this[_0xc1dc('0x18')],this[_0xc1dc('0x19')],this[_0xc1dc('0x1a')]));try{createSquareReport(this);}catch(_0x3d3315){logger['error'](_0x3d3315[_0xc1dc('0xb')]);}}function timeoutHandler(){logger[_0xc1dc('0xe')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xc1dc('0x17')],this[_0xc1dc('0x1b')],this[_0xc1dc('0x18')],this[_0xc1dc('0x19')],this[_0xc1dc('0x1a')]));}function hangupHandler(){logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x1c'),this['arg_1'],this['calleridname'],this['callerid'],this[_0xc1dc('0x19')],this[_0xc1dc('0x1a')]));this['evtHangup']=!![];}function getRoot(_0x367965){return parser[_0xc1dc('0x1d')](_0x367965,{'object':!![]})[_0xc1dc('0x1e')][_0xc1dc('0x1f')];}function addVertex(_0x22b80d,_0x2944a2,_0x353bf3){_0x2944a2[_0xc1dc('0x20')]=_0x353bf3;if(_0x2944a2[_0xc1dc('0x21')](_0xc1dc('0x22'))){_0x2944a2['maxRetry']=parseInt(_0x2944a2[_0xc1dc('0x22')],0xa);}_0x22b80d[_0xc1dc('0x23')](_[_0xc1dc('0x24')](_0x2944a2,_0xc1dc('0x25')));}function initGraph(_0x4e3ab2,_0x296523){var _0x109e88=new Graph();for(var _0xfd3f88 in _0x4e3ab2){if(_0x4e3ab2[_0xc1dc('0x21')](_0xfd3f88)){if(_[_0xc1dc('0x26')](_0x4e3ab2[_0xfd3f88])){for(var _0x152a50=0x0;_0x152a50<_0x4e3ab2[_0xfd3f88][_0xc1dc('0x27')];_0x152a50+=0x1){addVertex(_0x109e88,_0x4e3ab2[_0xfd3f88][_0x152a50],_0xfd3f88);}}else{addVertex(_0x109e88,_0x4e3ab2[_0xfd3f88],_0xfd3f88);}}}for(var _0x411ee0=0x0;_0x411ee0<_0x296523[_0xc1dc('0x27')];_0x411ee0+=0x1){if(_0x296523[_0x411ee0]['source']&&_0x296523[_0x411ee0][_0xc1dc('0x28')]){_0x109e88[_0xc1dc('0x29')](_0x296523[_0x411ee0][_0xc1dc('0x2a')],_0x296523[_0x411ee0][_0xc1dc('0x28')],_0x296523[_0x411ee0][_0xc1dc('0x2b')]);}}return _0x109e88;}function getSquareProject(_0x4750a9,_0x14dec0){rpc[_0xc1dc('0x2c')](_0x4750a9)[_0xc1dc('0x2d')](function(_0x1182a4){_0x14dec0(null,_0x1182a4);})[_0xc1dc('0x2e')](function(_0x5c380c){_0x14dec0(null,_0x5c380c);});}function createSquareReport(_0x376e95,_0x317f87){rpc[_0xc1dc('0x2f')](_0x376e95)[_0xc1dc('0x2d')](function(_0x30b3c2){if(_0x317f87){_0x317f87(null,_0x30b3c2);}})[_0xc1dc('0x2e')](function(_0x202903){if(_0x317f87){_0x317f87(null,_0x202903);}});}function setChannelVariables(_0x9a8ca0){for(var _0xc1e07e in _0x9a8ca0){if(_0x9a8ca0['hasOwnProperty'](_0xc1e07e)){if(_0xc1e07e['indexOf'](_0xc1dc('0x30'))===0x0){_0x9a8ca0[_0xc1e07e[_0xc1dc('0x31')](0x4)]=_0x9a8ca0[_0xc1e07e];delete _0x9a8ca0[_0xc1e07e];}}}}function getLogFromObject(_0x1d02ec){return util[_0xc1dc('0x32')](_0x1d02ec,{'showHidden':![],'depth':null});}function agiHandler(_0x3e6a68){var _0x1d4d87,_0x5c5490,_0x3cf84a,_0x40f76e,_0x5ab0a4;logger[_0xc1dc('0x33')](_0xc1dc('0x34'),JSON['stringify'](_0x3e6a68,null,0x2));logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x35'),_0x3e6a68['arg_1'],_0x3e6a68[_0xc1dc('0x1b')],_0x3e6a68[_0xc1dc('0x18')],_0x3e6a68[_0xc1dc('0x19')],_0x3e6a68[_0xc1dc('0x1a')]));_0x3e6a68['on'](_0xc1dc('0x13'),errorHandler);_0x3e6a68['on'](_0xc1dc('0x36'),closeHandler);_0x3e6a68['on'](_0xc1dc('0x37'),timeoutHandler);_0x3e6a68[_0xc1dc('0x38')]=![];_0x3e6a68['on'](_0xc1dc('0x39'),hangupHandler);var _0x4e3051=getSquareProject[_0xc1dc('0x3a')](null,_0x3e6a68[_0xc1dc('0x17')]);if(_0x4e3051){if(_0x4e3051[_0xc1dc('0x3b')]){_0x1d4d87=getRoot(_0x4e3051['production']);if(_0x1d4d87&&_0x1d4d87[_0xc1dc('0x3c')]){logger[_0xc1dc('0x33')](_0xc1dc('0x1f'),JSON[_0xc1dc('0x3d')](_0x1d4d87,null,0x2));_0x3e6a68[_0xc1dc('0x3e')]=moment()[_0xc1dc('0xf')](_0xc1dc('0x3f'));_0x5c5490=initGraph(_[_0xc1dc('0x24')](_0x1d4d87,'mxCell'),_0x1d4d87[_0xc1dc('0x25')]);_0x3cf84a=new Vertices(_0x3e6a68,rpc,mailRpc);logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x40'),_0x3e6a68[_0xc1dc('0x17')],_0x3e6a68[_0xc1dc('0x1b')],_0x3e6a68['callerid'],_0x3e6a68[_0xc1dc('0x19')],_0x3e6a68[_0xc1dc('0x1a')]));_0x5c5490[_0xc1dc('0x41')](_0x1d4d87[_0xc1dc('0x3c')]['id'],function(_0x1bcf3d){try{_0x1bcf3d=_0x3cf84a['clear'](_0x1bcf3d);logger['debug'](_0xc1dc('0x42'),JSON[_0xc1dc('0x3d')](_0x1bcf3d,null,0x2));if(_0x1bcf3d[_0xc1dc('0x20')]===_0xc1dc('0x43')){logger[_0xc1dc('0xe')](_0xc1dc('0x44'));_0x3e6a68[_0xc1dc('0x45')]=_0x1bcf3d['context']||_0x3e6a68[_0xc1dc('0x45')];_0x3e6a68[_0xc1dc('0x46')]=_0x1bcf3d[_0xc1dc('0x46')];_0x3e6a68['priority']=_0x1bcf3d[_0xc1dc('0x47')]?_0x1bcf3d[_0xc1dc('0x47')]-0x1:0x1;return null;}else if(_0x1bcf3d&&_0x3cf84a[_0x1bcf3d[_0xc1dc('0x20')]]){_0x5ab0a4=_0x3cf84a[_0x1bcf3d[_0xc1dc('0x20')]](_0x1bcf3d);logger['info']('response',JSON[_0xc1dc('0x3d')](_0x5ab0a4,null,0x2));if(_0x5ab0a4&&_0x5ab0a4[_0xc1dc('0x48')]===AGI_CODE_SUCCESS&&_0x5ab0a4['result']!==AGI_RESULT_ERROR&&!_0x3e6a68[_0xc1dc('0x38')]){logger[_0xc1dc('0x33')](_0xc1dc('0x49'),getLogFromObject(_0x5ab0a4));return _[_0xc1dc('0x4a')](_0x5ab0a4[_0xc1dc('0x4b')])?null:_0x5ab0a4[_0xc1dc('0x4b')][_0xc1dc('0x4c')]();}else{logger['error']('response',getLogFromObject(_0x5ab0a4));return null;}}else{logger[_0xc1dc('0x13')]('agicommand\x20not\x20found');return null;}}catch(_0x38be6d){logger[_0xc1dc('0x13')](_0x38be6d[_0xc1dc('0xb')]);return null;}});if(_0x1d4d87[_0xc1dc('0x4d')]){logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x4e'),_0x3e6a68[_0xc1dc('0x17')],_0x3e6a68['calleridname'],_0x3e6a68[_0xc1dc('0x18')],_0x3e6a68[_0xc1dc('0x19')],_0x3e6a68[_0xc1dc('0x1a')]));_0x5c5490[_0xc1dc('0x41')](_0x1d4d87[_0xc1dc('0x4d')]['id'],function(_0x21a2fe){try{_0x21a2fe=_0x3cf84a[_0xc1dc('0x4f')](_0x21a2fe);logger[_0xc1dc('0x33')](_0xc1dc('0x42'),JSON[_0xc1dc('0x3d')](_0x21a2fe,null,0x2));if(_0x21a2fe&&_0x3cf84a[_0x21a2fe['agicommand']]){_0x5ab0a4=_0x3cf84a[_0x21a2fe['agicommand']](_0x21a2fe);if(_0x5ab0a4){logger['debug'](_0xc1dc('0x49'),getLogFromObject(_0x5ab0a4));return _[_0xc1dc('0x4a')](_0x5ab0a4['result'])?null:_0x5ab0a4[_0xc1dc('0x4b')][_0xc1dc('0x4c')]();}else{logger['error'](_0xc1dc('0x49'),getLogFromObject(_0x5ab0a4));return null;}}else{logger['error'](_0xc1dc('0x50'));return null;}}catch(_0x1d1706){logger[_0xc1dc('0x13')](_0x1d1706[_0xc1dc('0xb')]);return null;}});}logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')](_0xc1dc('0x51'),_0x3e6a68[_0xc1dc('0x17')],_0x3e6a68['calleridname'],_0x3e6a68[_0xc1dc('0x18')],_0x3e6a68[_0xc1dc('0x19')],_0x3e6a68[_0xc1dc('0x1a')]));logger[_0xc1dc('0xe')](util['format'](_0xc1dc('0x52'),_0x3e6a68[_0xc1dc('0x45')],_0x3e6a68[_0xc1dc('0x46')],parseInt(_0x3e6a68[_0xc1dc('0x47')],0xa)+0x1));_0x3e6a68[_0xc1dc('0x53')](_0x3e6a68[_0xc1dc('0x45')],_0x3e6a68[_0xc1dc('0x46')],parseInt(_0x3e6a68[_0xc1dc('0x47')],0xa)+0x1);_0x3e6a68['close']();}}else{logger[_0xc1dc('0x13')](util[_0xc1dc('0xf')](_0xc1dc('0x54'),_0x3e6a68[_0xc1dc('0x17')]));_0x3e6a68[_0xc1dc('0x53')](_0x3e6a68[_0xc1dc('0x45')],_0x3e6a68[_0xc1dc('0x46')],parseInt(_0x3e6a68['priority'],0xa)+0x1);_0x3e6a68[_0xc1dc('0x36')]();}}else{logger[_0xc1dc('0x13')](util[_0xc1dc('0xf')](_0xc1dc('0x55'),_0x3e6a68[_0xc1dc('0x17')]));_0x3e6a68[_0xc1dc('0x53')](_0x3e6a68[_0xc1dc('0x45')],_0x3e6a68[_0xc1dc('0x46')],parseInt(_0x3e6a68[_0xc1dc('0x47')],0xa)+0x1);_0x3e6a68['close']();}}function main(){var _0xc7fd75;return utilLicense['getLicense']()[_0xc1dc('0x2d')](function(_0x372548){if(_0x372548){if(_0x372548[_0xc1dc('0x56')]){if(_0x372548[_0xc1dc('0x57')]&&_0x372548[_0xc1dc('0x57')]>0x0){logger[_0xc1dc('0xe')](util[_0xc1dc('0xf')]('[LICENSE]\x20CHANNELS:\x20%s',_0x372548[_0xc1dc('0x57')]));_0xc7fd75=_0x372548[_0xc1dc('0x57')];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xc1dc('0xe')](_0xc1dc('0x58'));_0xc7fd75=-0x1;}}})[_0xc1dc('0x2e')](function(_0xf08489){logger['error']('[LICENSE]',_0xf08489[_0xc1dc('0xb')]);})[_0xc1dc('0x4d')](function(){var _0x32e20f=require('./server')(config[_0xc1dc('0x5')][_0xc1dc('0xd')],config[_0xc1dc('0x5')]['ip'],_0xc7fd75);_0x32e20f['on'](_0xc1dc('0x13'),errorHandler);_0x32e20f['on'](_0xc1dc('0x59'),listeningHandler);_0x32e20f['on']('connection',connectionHandler);_0x32e20f['on'](_0xc1dc('0x36'),closeHandler);});}main();