Built motion from commit 753c950e.|2.5.42
[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 _0x806c=['util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./graph','./vertices','defaults','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','maxRetry','addVertex','omit','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','agi_','substring','inspect','debug','variables','stringify','close','hangup','sync','production','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toString','[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]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','xml2json','lodash','syncho'];(function(_0x31ad84,_0x3a1364){var _0x2ab374=function(_0x596f0a){while(--_0x596f0a){_0x31ad84['push'](_0x31ad84['shift']());}};_0x2ab374(++_0x3a1364);}(_0x806c,0x111));var _0xc806=function(_0x4e11d5,_0x1ce514){_0x4e11d5=_0x4e11d5-0x0;var _0x5e4e4c=_0x806c[_0x4e11d5];return _0x5e4e4c;};'use strict';var parser=require(_0xc806('0x0'));var _=require(_0xc806('0x1'));var syncho=require(_0xc806('0x2'));var util=require(_0xc806('0x3'));var moment=require('moment');var config=require(_0xc806('0x4'));var logger=require(_0xc806('0x5'))(_0xc806('0x6'));var utilLicense=require(_0xc806('0x7'));var rpc=require(_0xc806('0x8'));var mailRpc=require('./mailRpc');var Graph=require(_0xc806('0x9'));var Vertices=require(_0xc806('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc806('0x6')]=_[_0xc806('0xb')](config[_0xc806('0x6')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x3441b7){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3441b7);agiHandler(_0x3441b7);}catch(_0x2391a6){logger['error'](_0x2391a6[_0xc806('0xc')]);}});});}function listeningHandler(){console[_0xc806('0xd')](_0xc806('0xe'),config[_0xc806('0x6')][_0xc806('0xf')]);logger['info'](util[_0xc806('0x10')](_0xc806('0x11'),config[_0xc806('0x6')]['ip'],config[_0xc806('0x6')]['port']));}function errorHandler(_0x9c896e){if(_0x9c896e&&_0x9c896e[_0xc806('0x12')]&&_0x9c896e[_0xc806('0x13')]){logger[_0xc806('0x14')](util[_0xc806('0x10')]('[%s]\x20%s',_0x9c896e[_0xc806('0x12')],_0x9c896e[_0xc806('0x13')]));}else{logger[_0xc806('0x14')](util[_0xc806('0x10')](_0xc806('0x15'),_0x9c896e['stack']));}}function closeHandler(){logger[_0xc806('0x16')](util['format'](_0xc806('0x17'),this['arg_1'],this['calleridname'],this[_0xc806('0x18')],this[_0xc806('0x19')],this[_0xc806('0x1a')]));try{createSquareReport(this);}catch(_0x365bcc){logger[_0xc806('0x14')](_0x365bcc[_0xc806('0xc')]);}}function timeoutHandler(){logger[_0xc806('0x16')](util[_0xc806('0x10')](_0xc806('0x1b'),this[_0xc806('0x1c')],this[_0xc806('0x1d')],this['callerid'],this[_0xc806('0x19')],this[_0xc806('0x1a')]));}function hangupHandler(){logger['info'](util['format'](_0xc806('0x1e'),this[_0xc806('0x1c')],this[_0xc806('0x1d')],this[_0xc806('0x18')],this[_0xc806('0x19')],this[_0xc806('0x1a')]));this[_0xc806('0x1f')]=!![];}function getRoot(_0x302077){return parser[_0xc806('0x20')](_0x302077,{'object':!![]})[_0xc806('0x21')][_0xc806('0x22')];}function addVertex(_0x35f2a9,_0x51fea9,_0x5ccb9b){_0x51fea9['agicommand']=_0x5ccb9b;if(_0x51fea9[_0xc806('0x23')]('retry')){_0x51fea9[_0xc806('0x24')]=parseInt(_0x51fea9['retry'],0xa);}_0x35f2a9[_0xc806('0x25')](_[_0xc806('0x26')](_0x51fea9,'mxCell'));}function initGraph(_0x20cd8c,_0xfb4b0d){var _0x3d71ff=new Graph();for(var _0x2e6102 in _0x20cd8c){if(_0x20cd8c[_0xc806('0x23')](_0x2e6102)){if(_[_0xc806('0x27')](_0x20cd8c[_0x2e6102])){for(var _0x3a00a2=0x0;_0x3a00a2<_0x20cd8c[_0x2e6102][_0xc806('0x28')];_0x3a00a2+=0x1){addVertex(_0x3d71ff,_0x20cd8c[_0x2e6102][_0x3a00a2],_0x2e6102);}}else{addVertex(_0x3d71ff,_0x20cd8c[_0x2e6102],_0x2e6102);}}}for(var _0xb21f8e=0x0;_0xb21f8e<_0xfb4b0d[_0xc806('0x28')];_0xb21f8e+=0x1){if(_0xfb4b0d[_0xb21f8e][_0xc806('0x29')]&&_0xfb4b0d[_0xb21f8e][_0xc806('0x2a')]){_0x3d71ff[_0xc806('0x2b')](_0xfb4b0d[_0xb21f8e][_0xc806('0x29')],_0xfb4b0d[_0xb21f8e][_0xc806('0x2a')],_0xfb4b0d[_0xb21f8e][_0xc806('0x2c')]);}}return _0x3d71ff;}function getSquareProject(_0x2f800f,_0x455510){rpc[_0xc806('0x2d')](_0x2f800f)[_0xc806('0x2e')](function(_0x58a8c2){_0x455510(null,_0x58a8c2);})[_0xc806('0x2f')](function(_0x5b617f){_0x455510(null,_0x5b617f);});}function createSquareReport(_0x149f2d,_0x511ace){rpc[_0xc806('0x30')](_0x149f2d)[_0xc806('0x2e')](function(_0x143346){if(_0x511ace){_0x511ace(null,_0x143346);}})[_0xc806('0x2f')](function(_0xad4e9a){if(_0x511ace){_0x511ace(null,_0xad4e9a);}});}function setChannelVariables(_0x988625){for(var _0x2be5fb in _0x988625){if(_0x988625['hasOwnProperty'](_0x2be5fb)){if(_0x2be5fb['indexOf'](_0xc806('0x31'))===0x0){_0x988625[_0x2be5fb[_0xc806('0x32')](0x4)]=_0x988625[_0x2be5fb];delete _0x988625[_0x2be5fb];}}}}function getLogFromObject(_0x24d72e){return util[_0xc806('0x33')](_0x24d72e,{'showHidden':![],'depth':null});}function agiHandler(_0x4f6125){var _0x28b453,_0x13d2b2,_0x15f0da,_0x2a6ba4,_0x2df72e;logger[_0xc806('0x34')](_0xc806('0x35'),JSON[_0xc806('0x36')](_0x4f6125,null,0x2));logger['info'](util[_0xc806('0x10')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4f6125[_0xc806('0x1c')],_0x4f6125[_0xc806('0x1d')],_0x4f6125[_0xc806('0x18')],_0x4f6125[_0xc806('0x19')],_0x4f6125[_0xc806('0x1a')]));_0x4f6125['on'](_0xc806('0x14'),errorHandler);_0x4f6125['on'](_0xc806('0x37'),closeHandler);_0x4f6125['on']('timeout',timeoutHandler);_0x4f6125['evtHangup']=![];_0x4f6125['on'](_0xc806('0x38'),hangupHandler);var _0x442e6b=getSquareProject[_0xc806('0x39')](null,_0x4f6125[_0xc806('0x1c')]);if(_0x442e6b){if(_0x442e6b[_0xc806('0x3a')]){_0x28b453=getRoot(_0x442e6b[_0xc806('0x3a')]);if(_0x28b453&&_0x28b453['start']){logger['debug']('root',JSON[_0xc806('0x36')](_0x28b453,null,0x2));_0x4f6125[_0xc806('0x3b')]=moment()[_0xc806('0x10')](_0xc806('0x3c'));_0x13d2b2=initGraph(_[_0xc806('0x26')](_0x28b453,'mxCell'),_0x28b453[_0xc806('0x3d')]);_0x15f0da=new Vertices(_0x4f6125,rpc,mailRpc);logger['info'](util[_0xc806('0x10')](_0xc806('0x3e'),_0x4f6125[_0xc806('0x1c')],_0x4f6125[_0xc806('0x1d')],_0x4f6125[_0xc806('0x18')],_0x4f6125[_0xc806('0x19')],_0x4f6125[_0xc806('0x1a')]));_0x13d2b2[_0xc806('0x3f')](_0x28b453['start']['id'],function(_0x1e8c8d){try{_0x1e8c8d=_0x15f0da[_0xc806('0x40')](_0x1e8c8d);logger['debug'](_0xc806('0x41'),JSON[_0xc806('0x36')](_0x1e8c8d,null,0x2));if(_0x1e8c8d[_0xc806('0x42')]==='gotoc'){logger[_0xc806('0x16')](_0xc806('0x43'));_0x4f6125[_0xc806('0x44')]=_0x1e8c8d[_0xc806('0x44')]||_0x4f6125[_0xc806('0x44')];_0x4f6125[_0xc806('0x45')]=_0x1e8c8d[_0xc806('0x45')];_0x4f6125[_0xc806('0x46')]=_0x1e8c8d[_0xc806('0x46')]?_0x1e8c8d[_0xc806('0x46')]-0x1:0x1;return null;}else if(_0x1e8c8d&&_0x15f0da[_0x1e8c8d[_0xc806('0x42')]]){_0x2df72e=_0x15f0da[_0x1e8c8d['agicommand']](_0x1e8c8d);logger[_0xc806('0x16')](_0xc806('0x47'),JSON[_0xc806('0x36')](_0x2df72e,null,0x2));if(_0x2df72e&&_0x2df72e[_0xc806('0x48')]===AGI_CODE_SUCCESS&&_0x2df72e['result']!==AGI_RESULT_ERROR&&!_0x4f6125[_0xc806('0x1f')]){logger[_0xc806('0x34')](_0xc806('0x47'),getLogFromObject(_0x2df72e));return _[_0xc806('0x49')](_0x2df72e[_0xc806('0x4a')])?null:_0x2df72e[_0xc806('0x4a')]['toString']();}else{logger[_0xc806('0x14')](_0xc806('0x47'),getLogFromObject(_0x2df72e));return null;}}else{logger[_0xc806('0x14')](_0xc806('0x4b'));return null;}}catch(_0x2965d3){logger[_0xc806('0x14')](_0x2965d3[_0xc806('0xc')]);return null;}});if(_0x28b453[_0xc806('0x4c')]){logger[_0xc806('0x16')](util[_0xc806('0x10')](_0xc806('0x4d'),_0x4f6125['arg_1'],_0x4f6125[_0xc806('0x1d')],_0x4f6125['callerid'],_0x4f6125[_0xc806('0x19')],_0x4f6125[_0xc806('0x1a')]));_0x13d2b2['traverseBFS'](_0x28b453[_0xc806('0x4c')]['id'],function(_0x147905){try{_0x147905=_0x15f0da[_0xc806('0x40')](_0x147905);logger[_0xc806('0x34')](_0xc806('0x41'),JSON['stringify'](_0x147905,null,0x2));if(_0x147905&&_0x15f0da[_0x147905[_0xc806('0x42')]]){_0x2df72e=_0x15f0da[_0x147905['agicommand']](_0x147905);if(_0x2df72e){logger['debug'](_0xc806('0x47'),getLogFromObject(_0x2df72e));return _['isUndefined'](_0x2df72e['result'])?null:_0x2df72e[_0xc806('0x4a')][_0xc806('0x4e')]();}else{logger[_0xc806('0x14')](_0xc806('0x47'),getLogFromObject(_0x2df72e));return null;}}else{logger[_0xc806('0x14')](_0xc806('0x4b'));return null;}}catch(_0x74cda3){logger[_0xc806('0x14')](_0x74cda3['stack']);return null;}});}logger[_0xc806('0x16')](util[_0xc806('0x10')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4f6125[_0xc806('0x1c')],_0x4f6125[_0xc806('0x1d')],_0x4f6125[_0xc806('0x18')],_0x4f6125[_0xc806('0x19')],_0x4f6125[_0xc806('0x1a')]));logger[_0xc806('0x16')](util['format'](_0xc806('0x4f'),_0x4f6125['context'],_0x4f6125[_0xc806('0x45')],parseInt(_0x4f6125[_0xc806('0x46')],0xa)+0x1));_0x4f6125[_0xc806('0x50')](_0x4f6125[_0xc806('0x44')],_0x4f6125['extension'],parseInt(_0x4f6125[_0xc806('0x46')],0xa)+0x1);_0x4f6125[_0xc806('0x37')]();}}else{logger[_0xc806('0x14')](util['format'](_0xc806('0x51'),_0x4f6125[_0xc806('0x1c')]));_0x4f6125[_0xc806('0x50')](_0x4f6125[_0xc806('0x44')],_0x4f6125[_0xc806('0x45')],parseInt(_0x4f6125[_0xc806('0x46')],0xa)+0x1);_0x4f6125[_0xc806('0x37')]();}}else{logger[_0xc806('0x14')](util[_0xc806('0x10')](_0xc806('0x52'),_0x4f6125[_0xc806('0x1c')]));_0x4f6125[_0xc806('0x50')](_0x4f6125[_0xc806('0x44')],_0x4f6125['extension'],parseInt(_0x4f6125[_0xc806('0x46')],0xa)+0x1);_0x4f6125['close']();}}function main(){var _0x1b47cd;return utilLicense[_0xc806('0x53')]()['then'](function(_0x25389d){if(_0x25389d){if(_0x25389d[_0xc806('0x54')]){if(_0x25389d[_0xc806('0x55')]&&_0x25389d[_0xc806('0x55')]>0x0){logger[_0xc806('0x16')](util[_0xc806('0x10')](_0xc806('0x56'),_0x25389d[_0xc806('0x55')]));_0x1b47cd=_0x25389d[_0xc806('0x55')];}else{logger[_0xc806('0x16')](_0xc806('0x57'));}}else{logger[_0xc806('0x16')](_0xc806('0x58'));_0x1b47cd=-0x1;}}})[_0xc806('0x2f')](function(_0xaf884f){logger[_0xc806('0x14')](_0xc806('0x59'),_0xaf884f['stack']);})[_0xc806('0x4c')](function(){var _0x418cfb=require(_0xc806('0x5a'))(config['agi']['port'],config[_0xc806('0x6')]['ip'],_0x1b47cd);_0x418cfb['on'](_0xc806('0x14'),errorHandler);_0x418cfb['on'](_0xc806('0x5b'),listeningHandler);_0x418cfb['on']('connection',connectionHandler);_0x418cfb['on'](_0xc806('0x37'),closeHandler);});}main();