Built motion from commit e6806ed6.|2.6.0
[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 _0xc879=['syncho','moment','../../config/logger','../../config/license/util','./rpc','./vertices','agi','defaults','127.0.0.1','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','error','stack','[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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','evtHangup','mxGraphModel','root','hasOwnProperty','retry','maxRetry','addVertex','omit','length','addEdge','source','target','value','getSquareProject','then','catch','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','production','start','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','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','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\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash'];(function(_0x4ffa64,_0x271035){var _0x5da001=function(_0x7d1940){while(--_0x7d1940){_0x4ffa64['push'](_0x4ffa64['shift']());}};_0x5da001(++_0x271035);}(_0xc879,0xb6));var _0x9c87=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xc879[_0x4565bf];return _0x5610ba;};'use strict';var parser=require(_0x9c87('0x0'));var _=require(_0x9c87('0x1'));var syncho=require(_0x9c87('0x2'));var util=require('util');var moment=require(_0x9c87('0x3'));var config=require('../../config/environment');var logger=require(_0x9c87('0x4'))('agi');var utilLicense=require(_0x9c87('0x5'));var rpc=require(_0x9c87('0x6'));var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0x9c87('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x9c87('0x8')]=_[_0x9c87('0x9')](config['agi'],{'ip':_0x9c87('0xa'),'port':0x11dd});function connectionHandler(_0x12a87b){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x12a87b);agiHandler(_0x12a87b);}catch(_0x76fa64){logger['error'](_0x76fa64['stack']);}});});}function listeningHandler(){console[_0x9c87('0xb')](_0x9c87('0xc'),config[_0x9c87('0x8')][_0x9c87('0xd')]);logger[_0x9c87('0xe')](util['format'](_0x9c87('0xf'),config[_0x9c87('0x8')]['ip'],config[_0x9c87('0x8')][_0x9c87('0xd')]));}function errorHandler(_0x368f6d){if(_0x368f6d&&_0x368f6d[_0x9c87('0x10')]&&_0x368f6d[_0x9c87('0x11')]){logger['error'](util[_0x9c87('0x12')](_0x9c87('0x13'),_0x368f6d[_0x9c87('0x10')],_0x368f6d[_0x9c87('0x11')]));}else{logger[_0x9c87('0x14')](util[_0x9c87('0x12')]('[ERROR]\x20%s',_0x368f6d[_0x9c87('0x15')]));}}function closeHandler(){logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x16'),this[_0x9c87('0x17')],this['calleridname'],this[_0x9c87('0x18')],this[_0x9c87('0x19')],this['uniqueid']));try{createSquareReport(this);}catch(_0x225d5e){logger[_0x9c87('0x14')](_0x225d5e['stack']);}}function timeoutHandler(){logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x1a'),this[_0x9c87('0x17')],this[_0x9c87('0x1b')],this[_0x9c87('0x18')],this[_0x9c87('0x19')],this['uniqueid']));}function hangupHandler(){logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x1c'),this[_0x9c87('0x17')],this[_0x9c87('0x1b')],this[_0x9c87('0x18')],this[_0x9c87('0x19')],this[_0x9c87('0x1d')]));this[_0x9c87('0x1e')]=!![];}function getRoot(_0x1211e5){return parser['toJson'](_0x1211e5,{'object':!![]})[_0x9c87('0x1f')][_0x9c87('0x20')];}function addVertex(_0x82454d,_0x8acb00,_0x6d7aa8){_0x8acb00['agicommand']=_0x6d7aa8;if(_0x8acb00[_0x9c87('0x21')](_0x9c87('0x22'))){_0x8acb00[_0x9c87('0x23')]=parseInt(_0x8acb00[_0x9c87('0x22')],0xa);}_0x82454d[_0x9c87('0x24')](_[_0x9c87('0x25')](_0x8acb00,'mxCell'));}function initGraph(_0x505d46,_0x148162){var _0x276dca=new Graph();for(var _0x114453 in _0x505d46){if(_0x505d46[_0x9c87('0x21')](_0x114453)){if(_['isArray'](_0x505d46[_0x114453])){for(var _0x2bff84=0x0;_0x2bff84<_0x505d46[_0x114453]['length'];_0x2bff84+=0x1){addVertex(_0x276dca,_0x505d46[_0x114453][_0x2bff84],_0x114453);}}else{addVertex(_0x276dca,_0x505d46[_0x114453],_0x114453);}}}for(var _0x376b27=0x0;_0x376b27<_0x148162[_0x9c87('0x26')];_0x376b27+=0x1){if(_0x148162[_0x376b27]['source']&&_0x148162[_0x376b27]['target']){_0x276dca[_0x9c87('0x27')](_0x148162[_0x376b27][_0x9c87('0x28')],_0x148162[_0x376b27][_0x9c87('0x29')],_0x148162[_0x376b27][_0x9c87('0x2a')]);}}return _0x276dca;}function getSquareProject(_0x194703,_0x585e35){rpc[_0x9c87('0x2b')](_0x194703)[_0x9c87('0x2c')](function(_0x3b386a){_0x585e35(null,_0x3b386a);})[_0x9c87('0x2d')](function(_0x2e9278){_0x585e35(null,_0x2e9278);});}function createSquareReport(_0x4f4fcb,_0x1d0cb8){rpc['createSquareReport'](_0x4f4fcb)['then'](function(_0x40cb39){if(_0x1d0cb8){_0x1d0cb8(null,_0x40cb39);}})[_0x9c87('0x2d')](function(_0x5043f7){if(_0x1d0cb8){_0x1d0cb8(null,_0x5043f7);}});}function setChannelVariables(_0x239082){for(var _0x3e0fd7 in _0x239082){if(_0x239082[_0x9c87('0x21')](_0x3e0fd7)){if(_0x3e0fd7['indexOf'](_0x9c87('0x2e'))===0x0){_0x239082[_0x3e0fd7[_0x9c87('0x2f')](0x4)]=_0x239082[_0x3e0fd7];delete _0x239082[_0x3e0fd7];}}}}function getLogFromObject(_0x5e3cff){return util[_0x9c87('0x30')](_0x5e3cff,{'showHidden':![],'depth':null});}function agiHandler(_0x4b76a8){var _0x17261c,_0x3ac041,_0x58dfb5,_0x5b3bdb,_0x769c65;logger[_0x9c87('0x31')](_0x9c87('0x32'),JSON[_0x9c87('0x33')](_0x4b76a8,null,0x2));logger['info'](util[_0x9c87('0x12')](_0x9c87('0x34'),_0x4b76a8['arg_1'],_0x4b76a8[_0x9c87('0x1b')],_0x4b76a8['callerid'],_0x4b76a8[_0x9c87('0x19')],_0x4b76a8[_0x9c87('0x1d')]));_0x4b76a8['on'](_0x9c87('0x14'),errorHandler);_0x4b76a8['on'](_0x9c87('0x35'),closeHandler);_0x4b76a8['on'](_0x9c87('0x36'),timeoutHandler);_0x4b76a8[_0x9c87('0x1e')]=![];_0x4b76a8['on']('hangup',hangupHandler);var _0x3ae32b=getSquareProject['sync'](null,_0x4b76a8[_0x9c87('0x17')]);if(_0x3ae32b){if(_0x3ae32b[_0x9c87('0x37')]){_0x17261c=getRoot(_0x3ae32b[_0x9c87('0x37')]);if(_0x17261c&&_0x17261c[_0x9c87('0x38')]){logger[_0x9c87('0x31')](_0x9c87('0x20'),JSON[_0x9c87('0x33')](_0x17261c,null,0x2));_0x4b76a8[_0x9c87('0x39')]=moment()['format'](_0x9c87('0x3a'));_0x3ac041=initGraph(_[_0x9c87('0x25')](_0x17261c,'mxCell'),_0x17261c[_0x9c87('0x3b')]);_0x58dfb5=new Vertices(_0x4b76a8,rpc,mailRpc);logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x3c'),_0x4b76a8[_0x9c87('0x17')],_0x4b76a8[_0x9c87('0x1b')],_0x4b76a8[_0x9c87('0x18')],_0x4b76a8[_0x9c87('0x19')],_0x4b76a8[_0x9c87('0x1d')]));_0x3ac041[_0x9c87('0x3d')](_0x17261c[_0x9c87('0x38')]['id'],function(_0x16d38d){try{_0x16d38d=_0x58dfb5['clear'](_0x16d38d);logger[_0x9c87('0x31')](_0x9c87('0x3e'),JSON['stringify'](_0x16d38d,null,0x2));if(_0x16d38d[_0x9c87('0x3f')]===_0x9c87('0x40')){logger[_0x9c87('0xe')](_0x9c87('0x41'));_0x4b76a8[_0x9c87('0x42')]=_0x16d38d[_0x9c87('0x42')]||_0x4b76a8[_0x9c87('0x42')];_0x4b76a8[_0x9c87('0x43')]=_0x16d38d['extension'];_0x4b76a8['priority']=_0x16d38d[_0x9c87('0x44')]?_0x16d38d[_0x9c87('0x44')]-0x1:0x1;return null;}else if(_0x16d38d&&_0x58dfb5[_0x16d38d['agicommand']]){_0x769c65=_0x58dfb5[_0x16d38d['agicommand']](_0x16d38d);logger[_0x9c87('0xe')](_0x9c87('0x45'),JSON[_0x9c87('0x33')](_0x769c65,null,0x2));if(_0x769c65&&_0x769c65[_0x9c87('0x46')]===AGI_CODE_SUCCESS&&_0x769c65[_0x9c87('0x47')]!==AGI_RESULT_ERROR&&!_0x4b76a8[_0x9c87('0x1e')]){logger[_0x9c87('0x31')](_0x9c87('0x45'),getLogFromObject(_0x769c65));return _[_0x9c87('0x48')](_0x769c65[_0x9c87('0x47')])?null:_0x769c65[_0x9c87('0x47')][_0x9c87('0x49')]();}else{logger[_0x9c87('0x14')](_0x9c87('0x45'),getLogFromObject(_0x769c65));return null;}}else{logger[_0x9c87('0x14')]('agicommand\x20not\x20found');return null;}}catch(_0x49f58d){logger['error'](_0x49f58d[_0x9c87('0x15')]);return null;}});if(_0x17261c['finally']){logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x4a'),_0x4b76a8['arg_1'],_0x4b76a8['calleridname'],_0x4b76a8[_0x9c87('0x18')],_0x4b76a8[_0x9c87('0x19')],_0x4b76a8[_0x9c87('0x1d')]));_0x3ac041[_0x9c87('0x3d')](_0x17261c[_0x9c87('0x4b')]['id'],function(_0x30099a){try{_0x30099a=_0x58dfb5[_0x9c87('0x4c')](_0x30099a);logger[_0x9c87('0x31')](_0x9c87('0x3e'),JSON['stringify'](_0x30099a,null,0x2));if(_0x30099a&&_0x58dfb5[_0x30099a[_0x9c87('0x3f')]]){_0x769c65=_0x58dfb5[_0x30099a[_0x9c87('0x3f')]](_0x30099a);if(_0x769c65){logger[_0x9c87('0x31')](_0x9c87('0x45'),getLogFromObject(_0x769c65));return _[_0x9c87('0x48')](_0x769c65[_0x9c87('0x47')])?null:_0x769c65[_0x9c87('0x47')][_0x9c87('0x49')]();}else{logger['error']('response',getLogFromObject(_0x769c65));return null;}}else{logger[_0x9c87('0x14')](_0x9c87('0x4d'));return null;}}catch(_0x38664e){logger[_0x9c87('0x14')](_0x38664e[_0x9c87('0x15')]);return null;}});}logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x4e'),_0x4b76a8['arg_1'],_0x4b76a8[_0x9c87('0x1b')],_0x4b76a8[_0x9c87('0x18')],_0x4b76a8['dnid'],_0x4b76a8['uniqueid']));logger[_0x9c87('0xe')](util[_0x9c87('0x12')](_0x9c87('0x4f'),_0x4b76a8[_0x9c87('0x42')],_0x4b76a8['extension'],parseInt(_0x4b76a8['priority'],0xa)+0x1));_0x4b76a8[_0x9c87('0x50')](_0x4b76a8[_0x9c87('0x42')],_0x4b76a8[_0x9c87('0x43')],parseInt(_0x4b76a8['priority'],0xa)+0x1);_0x4b76a8[_0x9c87('0x35')]();}}else{logger[_0x9c87('0x14')](util[_0x9c87('0x12')]('Project\x20%s\x20not\x20published',_0x4b76a8['arg_1']));_0x4b76a8['continueAt'](_0x4b76a8[_0x9c87('0x42')],_0x4b76a8['extension'],parseInt(_0x4b76a8[_0x9c87('0x44')],0xa)+0x1);_0x4b76a8['close']();}}else{logger['error'](util[_0x9c87('0x12')](_0x9c87('0x51'),_0x4b76a8[_0x9c87('0x17')]));_0x4b76a8[_0x9c87('0x50')](_0x4b76a8[_0x9c87('0x42')],_0x4b76a8[_0x9c87('0x43')],parseInt(_0x4b76a8[_0x9c87('0x44')],0xa)+0x1);_0x4b76a8[_0x9c87('0x35')]();}}function main(){var _0x8495cb;return utilLicense[_0x9c87('0x52')]()[_0x9c87('0x2c')](function(_0x229bb2){if(_0x229bb2){if(_0x229bb2[_0x9c87('0x53')]){if(_0x229bb2[_0x9c87('0x54')]&&_0x229bb2['callysquare']>0x0){logger['info'](util['format'](_0x9c87('0x55'),_0x229bb2['callysquare']));_0x8495cb=_0x229bb2['callysquare'];}else{logger[_0x9c87('0xe')](_0x9c87('0x56'));}}else{logger[_0x9c87('0xe')](_0x9c87('0x57'));_0x8495cb=-0x1;}}})[_0x9c87('0x2d')](function(_0x55958f){logger['error'](_0x9c87('0x58'),_0x55958f['stack']);})[_0x9c87('0x4b')](function(){var _0x329d21=require(_0x9c87('0x59'))(config[_0x9c87('0x8')][_0x9c87('0xd')],config[_0x9c87('0x8')]['ip'],_0x8495cb);_0x329d21['on']('error',errorHandler);_0x329d21['on'](_0x9c87('0x5a'),listeningHandler);_0x329d21['on'](_0x9c87('0x5b'),connectionHandler);_0x329d21['on']('close',closeHandler);});}main();