Built motion from commit (unavailable).|2.5.4
[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 _0x5b1c=['length','source','target','addEdge','value','getSquareProject','then','catch','indexOf','agi_','substring','inspect','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','sync','production','SQUAREROOT','start','joinAt','vertices','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','LOOP\x20through\x20graph','traverseBFS','clear','vertex','stringify','VERTEX','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','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','[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','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','listening','xml2json','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','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','[ERROR]\x20%s','stack','calleridname','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','evtHangup','toJson','mxGraphModel','root','agicommand','maxRetry','retry','omit','mxCell','hasOwnProperty','isArray'];(function(_0x2db667,_0x193cf5){var _0x83ff9=function(_0x5da022){while(--_0x5da022){_0x2db667['push'](_0x2db667['shift']());}};_0x83ff9(++_0x193cf5);}(_0x5b1c,0x1b9));var _0xc5b1=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x5b1c[_0x167cc1];return _0x10bc4b;};'use strict';var parser=require(_0xc5b1('0x0'));var _=require('lodash');var syncho=require(_0xc5b1('0x1'));var util=require(_0xc5b1('0x2'));var moment=require(_0xc5b1('0x3'));var config=require(_0xc5b1('0x4'));var logger=require(_0xc5b1('0x5'))(_0xc5b1('0x6'));var utilLicense=require(_0xc5b1('0x7'));var rpc=require(_0xc5b1('0x8'));var mailRpc=require(_0xc5b1('0x9'));var Graph=require(_0xc5b1('0xa'));var Vertices=require(_0xc5b1('0xb'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc5b1('0x6')]=_[_0xc5b1('0xc')](config[_0xc5b1('0x6')],{'ip':_0xc5b1('0xd'),'port':0x11dd});function connectionHandler(_0x5d88fe){process[_0xc5b1('0xe')](function(){syncho(function(){try{setChannelVariables(_0x5d88fe);agiHandler(_0x5d88fe);}catch(_0x2727d6){logger['error'](_0x2727d6['stack']);}});});}function listeningHandler(){console[_0xc5b1('0xf')](_0xc5b1('0x10'),config[_0xc5b1('0x6')][_0xc5b1('0x11')]);logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')](_0xc5b1('0x14'),config[_0xc5b1('0x6')]['ip'],config['agi'][_0xc5b1('0x11')]));}function errorHandler(_0x32deda){if(_0x32deda&&_0x32deda[_0xc5b1('0x15')]&&_0x32deda[_0xc5b1('0x16')]){logger['error'](util['format'](_0xc5b1('0x17'),_0x32deda[_0xc5b1('0x15')],_0x32deda[_0xc5b1('0x16')]));}else{logger[_0xc5b1('0x18')](util[_0xc5b1('0x13')](_0xc5b1('0x19'),_0x32deda[_0xc5b1('0x1a')]));}}function closeHandler(){logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xc5b1('0x1b')],this['callerid'],this[_0xc5b1('0x1c')],this[_0xc5b1('0x1d')]));try{createSquareReport(this);}catch(_0x3bc11b){logger[_0xc5b1('0x18')](_0x3bc11b['stack']);}}function timeoutHandler(){logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')](_0xc5b1('0x1e'),this[_0xc5b1('0x1f')],this[_0xc5b1('0x1b')],this['callerid'],this['dnid'],this[_0xc5b1('0x1d')]));}function hangupHandler(){logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xc5b1('0x1f')],this['calleridname'],this[_0xc5b1('0x20')],this[_0xc5b1('0x1c')],this[_0xc5b1('0x1d')]));this[_0xc5b1('0x21')]=!![];}function getRoot(_0x24335f){return parser[_0xc5b1('0x22')](_0x24335f,{'object':!![]})[_0xc5b1('0x23')][_0xc5b1('0x24')];}function addVertex(_0xe7acf3,_0x48f28d,_0x51b37b){_0x48f28d[_0xc5b1('0x25')]=_0x51b37b;if(_0x48f28d['hasOwnProperty']('retry')){_0x48f28d[_0xc5b1('0x26')]=parseInt(_0x48f28d[_0xc5b1('0x27')],0xa);}_0xe7acf3['addVertex'](_[_0xc5b1('0x28')](_0x48f28d,_0xc5b1('0x29')));}function initGraph(_0x29d52a,_0x536efa){var _0x36aa94=new Graph();for(var _0x39cd10 in _0x29d52a){if(_0x29d52a[_0xc5b1('0x2a')](_0x39cd10)){if(_[_0xc5b1('0x2b')](_0x29d52a[_0x39cd10])){for(var _0xa0b9bc=0x0;_0xa0b9bc<_0x29d52a[_0x39cd10][_0xc5b1('0x2c')];_0xa0b9bc+=0x1){addVertex(_0x36aa94,_0x29d52a[_0x39cd10][_0xa0b9bc],_0x39cd10);}}else{addVertex(_0x36aa94,_0x29d52a[_0x39cd10],_0x39cd10);}}}for(var _0x317f3f=0x0;_0x317f3f<_0x536efa[_0xc5b1('0x2c')];_0x317f3f+=0x1){if(_0x536efa[_0x317f3f][_0xc5b1('0x2d')]&&_0x536efa[_0x317f3f][_0xc5b1('0x2e')]){_0x36aa94[_0xc5b1('0x2f')](_0x536efa[_0x317f3f][_0xc5b1('0x2d')],_0x536efa[_0x317f3f][_0xc5b1('0x2e')],_0x536efa[_0x317f3f][_0xc5b1('0x30')]);}}return _0x36aa94;}function getSquareProject(_0x10f07c,_0x2d2e7d){rpc[_0xc5b1('0x31')](_0x10f07c)[_0xc5b1('0x32')](function(_0x3f4ae0){_0x2d2e7d(null,_0x3f4ae0);})[_0xc5b1('0x33')](function(_0x2fe48d){_0x2d2e7d(null,_0x2fe48d);});}function createSquareReport(_0x1fc834,_0x1c19d2){rpc['createSquareReport'](_0x1fc834)[_0xc5b1('0x32')](function(_0x5d407e){if(_0x1c19d2){_0x1c19d2(null,_0x5d407e);}})[_0xc5b1('0x33')](function(_0x30a782){if(_0x1c19d2){_0x1c19d2(null,_0x30a782);}});}function setChannelVariables(_0x310c49){for(var _0x1ccf03 in _0x310c49){if(_0x310c49[_0xc5b1('0x2a')](_0x1ccf03)){if(_0x1ccf03[_0xc5b1('0x34')](_0xc5b1('0x35'))===0x0){_0x310c49[_0x1ccf03[_0xc5b1('0x36')](0x4)]=_0x310c49[_0x1ccf03];delete _0x310c49[_0x1ccf03];}}}}function getLogFromObject(_0x8935d5){return util[_0xc5b1('0x37')](_0x8935d5,{'showHidden':![],'depth':null});}function agiHandler(_0x40cf6b){var _0x1e9170,_0x5478c6,_0x10d005,_0x3ea467,_0x4aafc5;logger[_0xc5b1('0x38')](_0xc5b1('0x39'),JSON['stringify'](_0x40cf6b,null,0x2));logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')](_0xc5b1('0x3a'),_0x40cf6b[_0xc5b1('0x1f')],_0x40cf6b[_0xc5b1('0x1b')],_0x40cf6b[_0xc5b1('0x20')],_0x40cf6b[_0xc5b1('0x1c')],_0x40cf6b[_0xc5b1('0x1d')]));_0x40cf6b['on'](_0xc5b1('0x18'),errorHandler);_0x40cf6b['on'](_0xc5b1('0x3b'),closeHandler);_0x40cf6b['on'](_0xc5b1('0x3c'),timeoutHandler);_0x40cf6b[_0xc5b1('0x21')]=![];_0x40cf6b['on']('hangup',hangupHandler);var _0x18d76e=getSquareProject[_0xc5b1('0x3d')](null,_0x40cf6b[_0xc5b1('0x1f')]);if(_0x18d76e){if(_0x18d76e[_0xc5b1('0x3e')]){_0x1e9170=getRoot(_0x18d76e[_0xc5b1('0x3e')]);console[_0xc5b1('0xf')](_0xc5b1('0x3f'),_0x1e9170);if(_0x1e9170&&_0x1e9170[_0xc5b1('0x40')]){logger['debug'](_0xc5b1('0x24'),JSON['stringify'](_0x1e9170,null,0x2));_0x40cf6b[_0xc5b1('0x41')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5478c6=initGraph(_[_0xc5b1('0x28')](_0x1e9170,'mxCell'),_0x1e9170[_0xc5b1('0x29')]);_0x10d005=new Vertices(_0x40cf6b,rpc,mailRpc);console['log'](_0xc5b1('0x42'),_0x10d005);logger[_0xc5b1('0x12')](util[_0xc5b1('0x13')](_0xc5b1('0x43'),_0x40cf6b[_0xc5b1('0x1f')],_0x40cf6b[_0xc5b1('0x1b')],_0x40cf6b[_0xc5b1('0x20')],_0x40cf6b['dnid'],_0x40cf6b[_0xc5b1('0x1d')]));console['log'](_0xc5b1('0x44'));_0x5478c6[_0xc5b1('0x45')](_0x1e9170['start']['id'],function(_0x1954c1){try{_0x1954c1=_0x10d005[_0xc5b1('0x46')](_0x1954c1);logger[_0xc5b1('0x38')](_0xc5b1('0x47'),JSON[_0xc5b1('0x48')](_0x1954c1,null,0x2));console[_0xc5b1('0xf')](_0xc5b1('0x49'),_0x1954c1);if(_0x1954c1[_0xc5b1('0x25')]===_0xc5b1('0x4a')){logger[_0xc5b1('0x12')](_0xc5b1('0x4b'));_0x40cf6b['context']=_0x1954c1['context']||_0x40cf6b[_0xc5b1('0x4c')];_0x40cf6b[_0xc5b1('0x4d')]=_0x1954c1[_0xc5b1('0x4d')];_0x40cf6b[_0xc5b1('0x4e')]=_0x1954c1['priority']?_0x1954c1[_0xc5b1('0x4e')]-0x1:0x1;return null;}else if(_0x1954c1&&_0x10d005[_0x1954c1[_0xc5b1('0x25')]]){_0x4aafc5=_0x10d005[_0x1954c1[_0xc5b1('0x25')]](_0x1954c1);console[_0xc5b1('0xf')]('vresponse',_0x4aafc5);logger[_0xc5b1('0x12')](_0xc5b1('0x4f'),JSON[_0xc5b1('0x48')](_0x4aafc5,null,0x2));if(_0x4aafc5&&_0x4aafc5[_0xc5b1('0x50')]===AGI_CODE_SUCCESS&&_0x4aafc5[_0xc5b1('0x51')]!==AGI_RESULT_ERROR&&!_0x40cf6b[_0xc5b1('0x21')]){logger[_0xc5b1('0x38')](_0xc5b1('0x4f'),getLogFromObject(_0x4aafc5));return _[_0xc5b1('0x52')](_0x4aafc5[_0xc5b1('0x51')])?null:_0x4aafc5[_0xc5b1('0x51')][_0xc5b1('0x53')]();}else{logger[_0xc5b1('0x18')](_0xc5b1('0x4f'),getLogFromObject(_0x4aafc5));return null;}}else{logger[_0xc5b1('0x18')](_0xc5b1('0x54'));return null;}}catch(_0x15dbbf){logger[_0xc5b1('0x18')](_0x15dbbf[_0xc5b1('0x1a')]);return null;}});if(_0x1e9170[_0xc5b1('0x55')]){logger['info'](util[_0xc5b1('0x13')](_0xc5b1('0x56'),_0x40cf6b[_0xc5b1('0x1f')],_0x40cf6b['calleridname'],_0x40cf6b['callerid'],_0x40cf6b[_0xc5b1('0x1c')],_0x40cf6b['uniqueid']));_0x5478c6[_0xc5b1('0x45')](_0x1e9170[_0xc5b1('0x55')]['id'],function(_0x5d748d){try{_0x5d748d=_0x10d005[_0xc5b1('0x46')](_0x5d748d);logger[_0xc5b1('0x38')]('vertex',JSON[_0xc5b1('0x48')](_0x5d748d,null,0x2));if(_0x5d748d&&_0x10d005[_0x5d748d['agicommand']]){_0x4aafc5=_0x10d005[_0x5d748d[_0xc5b1('0x25')]](_0x5d748d);if(_0x4aafc5){logger[_0xc5b1('0x38')](_0xc5b1('0x4f'),getLogFromObject(_0x4aafc5));return _[_0xc5b1('0x52')](_0x4aafc5[_0xc5b1('0x51')])?null:_0x4aafc5[_0xc5b1('0x51')][_0xc5b1('0x53')]();}else{logger['error'](_0xc5b1('0x4f'),getLogFromObject(_0x4aafc5));return null;}}else{logger[_0xc5b1('0x18')](_0xc5b1('0x54'));return null;}}catch(_0x5669d2){logger[_0xc5b1('0x18')](_0x5669d2['stack']);return null;}});}logger['info'](util[_0xc5b1('0x13')](_0xc5b1('0x57'),_0x40cf6b[_0xc5b1('0x1f')],_0x40cf6b[_0xc5b1('0x1b')],_0x40cf6b[_0xc5b1('0x20')],_0x40cf6b[_0xc5b1('0x1c')],_0x40cf6b[_0xc5b1('0x1d')]));logger['info'](util[_0xc5b1('0x13')](_0xc5b1('0x58'),_0x40cf6b['context'],_0x40cf6b[_0xc5b1('0x4d')],parseInt(_0x40cf6b[_0xc5b1('0x4e')],0xa)+0x1));_0x40cf6b[_0xc5b1('0x59')](_0x40cf6b['context'],_0x40cf6b[_0xc5b1('0x4d')],parseInt(_0x40cf6b['priority'],0xa)+0x1);_0x40cf6b[_0xc5b1('0x3b')]();}}else{logger[_0xc5b1('0x18')](util[_0xc5b1('0x13')]('Project\x20%s\x20not\x20published',_0x40cf6b[_0xc5b1('0x1f')]));_0x40cf6b['continueAt'](_0x40cf6b[_0xc5b1('0x4c')],_0x40cf6b['extension'],parseInt(_0x40cf6b['priority'],0xa)+0x1);_0x40cf6b[_0xc5b1('0x3b')]();}}else{logger['error'](util[_0xc5b1('0x13')]('Project\x20%s\x20not\x20found',_0x40cf6b[_0xc5b1('0x1f')]));_0x40cf6b[_0xc5b1('0x59')](_0x40cf6b[_0xc5b1('0x4c')],_0x40cf6b[_0xc5b1('0x4d')],parseInt(_0x40cf6b[_0xc5b1('0x4e')],0xa)+0x1);_0x40cf6b[_0xc5b1('0x3b')]();}}function main(){var _0x355edf;return utilLicense[_0xc5b1('0x5a')]()[_0xc5b1('0x32')](function(_0x452ff9){if(_0x452ff9){if(_0x452ff9[_0xc5b1('0x5b')]){if(_0x452ff9[_0xc5b1('0x5c')]&&_0x452ff9[_0xc5b1('0x5c')]>0x0){logger['info'](util[_0xc5b1('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0x452ff9[_0xc5b1('0x5c')]));_0x355edf=_0x452ff9['callysquare'];}else{logger[_0xc5b1('0x12')](_0xc5b1('0x5d'));}}else{logger[_0xc5b1('0x12')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x355edf=-0x1;}}})[_0xc5b1('0x33')](function(_0x5bf9c8){logger[_0xc5b1('0x18')](_0xc5b1('0x5e'),_0x5bf9c8[_0xc5b1('0x1a')]);})['finally'](function(){var _0x28553a=require(_0xc5b1('0x5f'))(config['agi'][_0xc5b1('0x11')],config[_0xc5b1('0x6')]['ip'],_0x355edf);_0x28553a['on'](_0xc5b1('0x18'),errorHandler);_0x28553a['on'](_0xc5b1('0x60'),listeningHandler);_0x28553a['on']('connection',connectionHandler);_0x28553a['on'](_0xc5b1('0x3b'),closeHandler);});}main();