Built motion from commit 85328c08.|2.5.50
[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 _0x7e35=['isUndefined','result','agicommand\x20not\x20found','finally','[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','close','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]','port','listening','connection','xml2json','lodash','syncho','util','moment','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','nextTick','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','error','stack','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','mxGraphModel','agicommand','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','getSquareProject','then','createSquareReport','catch','indexOf','agi_','substring','inspect','debug','variables','stringify','hangup','sync','start','root','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7e35,0x11c));var _0x57e3=function(_0x4badb7,_0x42e3aa){_0x4badb7=_0x4badb7-0x0;var _0x2aef47=_0x7e35[_0x4badb7];return _0x2aef47;};'use strict';var parser=require(_0x57e3('0x0'));var _=require(_0x57e3('0x1'));var syncho=require(_0x57e3('0x2'));var util=require(_0x57e3('0x3'));var moment=require(_0x57e3('0x4'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x57e3('0x5'));var utilLicense=require(_0x57e3('0x6'));var rpc=require(_0x57e3('0x7'));var mailRpc=require(_0x57e3('0x8'));var Graph=require(_0x57e3('0x9'));var Vertices=require(_0x57e3('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x57e3('0x5')]=_[_0x57e3('0xb')](config[_0x57e3('0x5')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x1badc8){process[_0x57e3('0xc')](function(){syncho(function(){try{setChannelVariables(_0x1badc8);agiHandler(_0x1badc8);}catch(_0x1b11a9){logger['error'](_0x1b11a9['stack']);}});});}function listeningHandler(){console['log'](_0x57e3('0xd'),config[_0x57e3('0x5')]['port']);logger['info'](util[_0x57e3('0xe')](_0x57e3('0xf'),config[_0x57e3('0x5')]['ip'],config[_0x57e3('0x5')]['port']));}function errorHandler(_0x32a821){if(_0x32a821&&_0x32a821[_0x57e3('0x10')]&&_0x32a821['message']){logger[_0x57e3('0x11')](util[_0x57e3('0xe')]('[%s]\x20%s',_0x32a821[_0x57e3('0x10')],_0x32a821['message']));}else{logger['error'](util[_0x57e3('0xe')]('[ERROR]\x20%s',_0x32a821[_0x57e3('0x12')]));}}function closeHandler(){logger[_0x57e3('0x13')](util['format'](_0x57e3('0x14'),this[_0x57e3('0x15')],this[_0x57e3('0x16')],this[_0x57e3('0x17')],this[_0x57e3('0x18')],this[_0x57e3('0x19')]));try{createSquareReport(this);}catch(_0x27cd01){logger[_0x57e3('0x11')](_0x27cd01[_0x57e3('0x12')]);}}function timeoutHandler(){logger[_0x57e3('0x13')](util[_0x57e3('0xe')](_0x57e3('0x1a'),this[_0x57e3('0x15')],this[_0x57e3('0x16')],this[_0x57e3('0x17')],this[_0x57e3('0x18')],this[_0x57e3('0x19')]));}function hangupHandler(){logger[_0x57e3('0x13')](util[_0x57e3('0xe')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x57e3('0x15')],this[_0x57e3('0x16')],this[_0x57e3('0x17')],this[_0x57e3('0x18')],this['uniqueid']));this[_0x57e3('0x1b')]=!![];}function getRoot(_0x45d2f7){return parser['toJson'](_0x45d2f7,{'object':!![]})[_0x57e3('0x1c')]['root'];}function addVertex(_0x1c0175,_0x12d1ef,_0x4e200f){_0x12d1ef[_0x57e3('0x1d')]=_0x4e200f;if(_0x12d1ef['hasOwnProperty'](_0x57e3('0x1e'))){_0x12d1ef[_0x57e3('0x1f')]=parseInt(_0x12d1ef['retry'],0xa);}_0x1c0175[_0x57e3('0x20')](_[_0x57e3('0x21')](_0x12d1ef,_0x57e3('0x22')));}function initGraph(_0x230710,_0x1bd2a6){var _0x150868=new Graph();for(var _0x395167 in _0x230710){if(_0x230710[_0x57e3('0x23')](_0x395167)){if(_[_0x57e3('0x24')](_0x230710[_0x395167])){for(var _0x39b50e=0x0;_0x39b50e<_0x230710[_0x395167][_0x57e3('0x25')];_0x39b50e+=0x1){addVertex(_0x150868,_0x230710[_0x395167][_0x39b50e],_0x395167);}}else{addVertex(_0x150868,_0x230710[_0x395167],_0x395167);}}}for(var _0x4df245=0x0;_0x4df245<_0x1bd2a6['length'];_0x4df245+=0x1){if(_0x1bd2a6[_0x4df245][_0x57e3('0x26')]&&_0x1bd2a6[_0x4df245][_0x57e3('0x27')]){_0x150868[_0x57e3('0x28')](_0x1bd2a6[_0x4df245]['source'],_0x1bd2a6[_0x4df245][_0x57e3('0x27')],_0x1bd2a6[_0x4df245]['value']);}}return _0x150868;}function getSquareProject(_0x1b53a3,_0x2201f1){rpc[_0x57e3('0x29')](_0x1b53a3)[_0x57e3('0x2a')](function(_0x46d5bf){_0x2201f1(null,_0x46d5bf);})['catch'](function(_0x3d1fcf){_0x2201f1(null,_0x3d1fcf);});}function createSquareReport(_0x5e6d5b,_0x29f58f){rpc[_0x57e3('0x2b')](_0x5e6d5b)[_0x57e3('0x2a')](function(_0x143826){if(_0x29f58f){_0x29f58f(null,_0x143826);}})[_0x57e3('0x2c')](function(_0x1571fa){if(_0x29f58f){_0x29f58f(null,_0x1571fa);}});}function setChannelVariables(_0xe59ca1){for(var _0x3a4095 in _0xe59ca1){if(_0xe59ca1[_0x57e3('0x23')](_0x3a4095)){if(_0x3a4095[_0x57e3('0x2d')](_0x57e3('0x2e'))===0x0){_0xe59ca1[_0x3a4095[_0x57e3('0x2f')](0x4)]=_0xe59ca1[_0x3a4095];delete _0xe59ca1[_0x3a4095];}}}}function getLogFromObject(_0x916dbf){return util[_0x57e3('0x30')](_0x916dbf,{'showHidden':![],'depth':null});}function agiHandler(_0x319f1f){var _0x29ca04,_0xc6746b,_0x174c79,_0x496f12,_0x52d6dc;logger[_0x57e3('0x31')](_0x57e3('0x32'),JSON[_0x57e3('0x33')](_0x319f1f,null,0x2));logger['info'](util[_0x57e3('0xe')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x319f1f[_0x57e3('0x15')],_0x319f1f[_0x57e3('0x16')],_0x319f1f[_0x57e3('0x17')],_0x319f1f[_0x57e3('0x18')],_0x319f1f[_0x57e3('0x19')]));_0x319f1f['on'](_0x57e3('0x11'),errorHandler);_0x319f1f['on']('close',closeHandler);_0x319f1f['on']('timeout',timeoutHandler);_0x319f1f[_0x57e3('0x1b')]=![];_0x319f1f['on'](_0x57e3('0x34'),hangupHandler);var _0x109bdc=getSquareProject[_0x57e3('0x35')](null,_0x319f1f['arg_1']);if(_0x109bdc){if(_0x109bdc['production']){_0x29ca04=getRoot(_0x109bdc['production']);if(_0x29ca04&&_0x29ca04[_0x57e3('0x36')]){logger[_0x57e3('0x31')](_0x57e3('0x37'),JSON[_0x57e3('0x33')](_0x29ca04,null,0x2));_0x319f1f[_0x57e3('0x38')]=moment()[_0x57e3('0xe')](_0x57e3('0x39'));_0xc6746b=initGraph(_['omit'](_0x29ca04,_0x57e3('0x22')),_0x29ca04[_0x57e3('0x22')]);_0x174c79=new Vertices(_0x319f1f,rpc,mailRpc);logger[_0x57e3('0x13')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x319f1f[_0x57e3('0x15')],_0x319f1f[_0x57e3('0x16')],_0x319f1f[_0x57e3('0x17')],_0x319f1f['dnid'],_0x319f1f[_0x57e3('0x19')]));_0xc6746b[_0x57e3('0x3a')](_0x29ca04[_0x57e3('0x36')]['id'],function(_0x40bee5){try{_0x40bee5=_0x174c79[_0x57e3('0x3b')](_0x40bee5);logger[_0x57e3('0x31')](_0x57e3('0x3c'),JSON['stringify'](_0x40bee5,null,0x2));if(_0x40bee5[_0x57e3('0x1d')]===_0x57e3('0x3d')){logger[_0x57e3('0x13')](_0x57e3('0x3e'));_0x319f1f[_0x57e3('0x3f')]=_0x40bee5['context']||_0x319f1f[_0x57e3('0x3f')];_0x319f1f[_0x57e3('0x40')]=_0x40bee5['extension'];_0x319f1f[_0x57e3('0x41')]=_0x40bee5[_0x57e3('0x41')]?_0x40bee5[_0x57e3('0x41')]-0x1:0x1;return null;}else if(_0x40bee5&&_0x174c79[_0x40bee5[_0x57e3('0x1d')]]){_0x52d6dc=_0x174c79[_0x40bee5[_0x57e3('0x1d')]](_0x40bee5);logger[_0x57e3('0x13')](_0x57e3('0x42'),JSON['stringify'](_0x52d6dc,null,0x2));if(_0x52d6dc&&_0x52d6dc[_0x57e3('0x43')]===AGI_CODE_SUCCESS&&_0x52d6dc['result']!==AGI_RESULT_ERROR&&!_0x319f1f[_0x57e3('0x1b')]){logger[_0x57e3('0x31')](_0x57e3('0x42'),getLogFromObject(_0x52d6dc));return _[_0x57e3('0x44')](_0x52d6dc[_0x57e3('0x45')])?null:_0x52d6dc[_0x57e3('0x45')]['toString']();}else{logger[_0x57e3('0x11')](_0x57e3('0x42'),getLogFromObject(_0x52d6dc));return null;}}else{logger[_0x57e3('0x11')](_0x57e3('0x46'));return null;}}catch(_0x145d8d){logger['error'](_0x145d8d[_0x57e3('0x12')]);return null;}});if(_0x29ca04[_0x57e3('0x47')]){logger[_0x57e3('0x13')](util[_0x57e3('0xe')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x319f1f[_0x57e3('0x15')],_0x319f1f[_0x57e3('0x16')],_0x319f1f[_0x57e3('0x17')],_0x319f1f[_0x57e3('0x18')],_0x319f1f[_0x57e3('0x19')]));_0xc6746b['traverseBFS'](_0x29ca04[_0x57e3('0x47')]['id'],function(_0x378d8d){try{_0x378d8d=_0x174c79[_0x57e3('0x3b')](_0x378d8d);logger[_0x57e3('0x31')](_0x57e3('0x3c'),JSON['stringify'](_0x378d8d,null,0x2));if(_0x378d8d&&_0x174c79[_0x378d8d[_0x57e3('0x1d')]]){_0x52d6dc=_0x174c79[_0x378d8d[_0x57e3('0x1d')]](_0x378d8d);if(_0x52d6dc){logger[_0x57e3('0x31')](_0x57e3('0x42'),getLogFromObject(_0x52d6dc));return _['isUndefined'](_0x52d6dc[_0x57e3('0x45')])?null:_0x52d6dc[_0x57e3('0x45')]['toString']();}else{logger['error'](_0x57e3('0x42'),getLogFromObject(_0x52d6dc));return null;}}else{logger['error'](_0x57e3('0x46'));return null;}}catch(_0x3c651a){logger['error'](_0x3c651a['stack']);return null;}});}logger[_0x57e3('0x13')](util[_0x57e3('0xe')](_0x57e3('0x48'),_0x319f1f[_0x57e3('0x15')],_0x319f1f[_0x57e3('0x16')],_0x319f1f[_0x57e3('0x17')],_0x319f1f[_0x57e3('0x18')],_0x319f1f[_0x57e3('0x19')]));logger[_0x57e3('0x13')](util['format'](_0x57e3('0x49'),_0x319f1f[_0x57e3('0x3f')],_0x319f1f['extension'],parseInt(_0x319f1f[_0x57e3('0x41')],0xa)+0x1));_0x319f1f[_0x57e3('0x4a')](_0x319f1f[_0x57e3('0x3f')],_0x319f1f['extension'],parseInt(_0x319f1f['priority'],0xa)+0x1);_0x319f1f[_0x57e3('0x4b')]();}}else{logger[_0x57e3('0x11')](util[_0x57e3('0xe')](_0x57e3('0x4c'),_0x319f1f[_0x57e3('0x15')]));_0x319f1f['continueAt'](_0x319f1f[_0x57e3('0x3f')],_0x319f1f[_0x57e3('0x40')],parseInt(_0x319f1f[_0x57e3('0x41')],0xa)+0x1);_0x319f1f[_0x57e3('0x4b')]();}}else{logger['error'](util[_0x57e3('0xe')](_0x57e3('0x4d'),_0x319f1f[_0x57e3('0x15')]));_0x319f1f[_0x57e3('0x4a')](_0x319f1f[_0x57e3('0x3f')],_0x319f1f[_0x57e3('0x40')],parseInt(_0x319f1f[_0x57e3('0x41')],0xa)+0x1);_0x319f1f[_0x57e3('0x4b')]();}}function main(){var _0x33ce45;return utilLicense[_0x57e3('0x4e')]()[_0x57e3('0x2a')](function(_0x448ebf){if(_0x448ebf){if(_0x448ebf[_0x57e3('0x4f')]){if(_0x448ebf['callysquare']&&_0x448ebf[_0x57e3('0x50')]>0x0){logger[_0x57e3('0x13')](util['format'](_0x57e3('0x51'),_0x448ebf[_0x57e3('0x50')]));_0x33ce45=_0x448ebf['callysquare'];}else{logger[_0x57e3('0x13')](_0x57e3('0x52'));}}else{logger['info'](_0x57e3('0x53'));_0x33ce45=-0x1;}}})[_0x57e3('0x2c')](function(_0x3578a5){logger[_0x57e3('0x11')](_0x57e3('0x54'),_0x3578a5[_0x57e3('0x12')]);})[_0x57e3('0x47')](function(){var _0x5a6fa1=require('./server')(config['agi'][_0x57e3('0x55')],config[_0x57e3('0x5')]['ip'],_0x33ce45);_0x5a6fa1['on'](_0x57e3('0x11'),errorHandler);_0x5a6fa1['on'](_0x57e3('0x56'),listeningHandler);_0x5a6fa1['on'](_0x57e3('0x57'),connectionHandler);_0x5a6fa1['on'](_0x57e3('0x4b'),closeHandler);});}main();