Built motion from commit ab870f9e.|2.5.44
[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 _0x2dbf=['createSquareReport','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','sync','start','root','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','clear','vertex','agicommand','gotoc','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','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','moment','../../config/environment','../../config/logger','../../config/license/util','./rpc','./mailRpc','agi','defaults','127.0.0.1','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','format','[%s]\x20%s','[ERROR]\x20%s','stack','[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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','length','source','target','addEdge','value','getSquareProject','then','catch'];(function(_0x151f23,_0x533521){var _0x3c13a7=function(_0x5e0eb2){while(--_0x5e0eb2){_0x151f23['push'](_0x151f23['shift']());}};_0x3c13a7(++_0x533521);}(_0x2dbf,0xda));var _0xf2db=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x2dbf[_0x13ce0c];return _0x4388fb;};'use strict';var parser=require(_0xf2db('0x0'));var _=require('lodash');var syncho=require(_0xf2db('0x1'));var util=require('util');var moment=require(_0xf2db('0x2'));var config=require(_0xf2db('0x3'));var logger=require(_0xf2db('0x4'))('agi');var utilLicense=require(_0xf2db('0x5'));var rpc=require(_0xf2db('0x6'));var mailRpc=require(_0xf2db('0x7'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xf2db('0x8')]=_[_0xf2db('0x9')](config[_0xf2db('0x8')],{'ip':_0xf2db('0xa'),'port':0x11dd});function connectionHandler(_0x517e4b){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x517e4b);agiHandler(_0x517e4b);}catch(_0x598bdd){logger[_0xf2db('0xb')](_0x598bdd['stack']);}});});}function listeningHandler(){console[_0xf2db('0xc')](_0xf2db('0xd'),config['agi'][_0xf2db('0xe')]);logger[_0xf2db('0xf')](util['format'](_0xf2db('0x10'),config[_0xf2db('0x8')]['ip'],config[_0xf2db('0x8')][_0xf2db('0xe')]));}function errorHandler(_0x4c8eff){if(_0x4c8eff&&_0x4c8eff['name']&&_0x4c8eff[_0xf2db('0x11')]){logger[_0xf2db('0xb')](util[_0xf2db('0x12')](_0xf2db('0x13'),_0x4c8eff['name'],_0x4c8eff[_0xf2db('0x11')]));}else{logger[_0xf2db('0xb')](util[_0xf2db('0x12')](_0xf2db('0x14'),_0x4c8eff[_0xf2db('0x15')]));}}function closeHandler(){logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x16'),this[_0xf2db('0x17')],this[_0xf2db('0x18')],this[_0xf2db('0x19')],this[_0xf2db('0x1a')],this[_0xf2db('0x1b')]));try{createSquareReport(this);}catch(_0x360569){logger[_0xf2db('0xb')](_0x360569[_0xf2db('0x15')]);}}function timeoutHandler(){logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x1c'),this[_0xf2db('0x17')],this['calleridname'],this[_0xf2db('0x19')],this[_0xf2db('0x1a')],this[_0xf2db('0x1b')]));}function hangupHandler(){logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x1d'),this[_0xf2db('0x17')],this[_0xf2db('0x18')],this[_0xf2db('0x19')],this[_0xf2db('0x1a')],this[_0xf2db('0x1b')]));this['evtHangup']=!![];}function getRoot(_0x3b76be){return parser[_0xf2db('0x1e')](_0x3b76be,{'object':!![]})[_0xf2db('0x1f')]['root'];}function addVertex(_0x508c21,_0x29eba8,_0x5c40a1){_0x29eba8['agicommand']=_0x5c40a1;if(_0x29eba8['hasOwnProperty'](_0xf2db('0x20'))){_0x29eba8[_0xf2db('0x21')]=parseInt(_0x29eba8[_0xf2db('0x20')],0xa);}_0x508c21[_0xf2db('0x22')](_[_0xf2db('0x23')](_0x29eba8,_0xf2db('0x24')));}function initGraph(_0x43e571,_0x5523e7){var _0x40fffc=new Graph();for(var _0x30bc74 in _0x43e571){if(_0x43e571[_0xf2db('0x25')](_0x30bc74)){if(_['isArray'](_0x43e571[_0x30bc74])){for(var _0x114d72=0x0;_0x114d72<_0x43e571[_0x30bc74]['length'];_0x114d72+=0x1){addVertex(_0x40fffc,_0x43e571[_0x30bc74][_0x114d72],_0x30bc74);}}else{addVertex(_0x40fffc,_0x43e571[_0x30bc74],_0x30bc74);}}}for(var _0x50a70e=0x0;_0x50a70e<_0x5523e7[_0xf2db('0x26')];_0x50a70e+=0x1){if(_0x5523e7[_0x50a70e][_0xf2db('0x27')]&&_0x5523e7[_0x50a70e][_0xf2db('0x28')]){_0x40fffc[_0xf2db('0x29')](_0x5523e7[_0x50a70e][_0xf2db('0x27')],_0x5523e7[_0x50a70e][_0xf2db('0x28')],_0x5523e7[_0x50a70e][_0xf2db('0x2a')]);}}return _0x40fffc;}function getSquareProject(_0x59cabd,_0x1a1eec){rpc[_0xf2db('0x2b')](_0x59cabd)[_0xf2db('0x2c')](function(_0x5be88a){_0x1a1eec(null,_0x5be88a);})[_0xf2db('0x2d')](function(_0x113a3b){_0x1a1eec(null,_0x113a3b);});}function createSquareReport(_0x3e55f2,_0x15d862){rpc[_0xf2db('0x2e')](_0x3e55f2)[_0xf2db('0x2c')](function(_0x3ba35f){if(_0x15d862){_0x15d862(null,_0x3ba35f);}})[_0xf2db('0x2d')](function(_0x511685){if(_0x15d862){_0x15d862(null,_0x511685);}});}function setChannelVariables(_0x55e4d9){for(var _0x1b957c in _0x55e4d9){if(_0x55e4d9['hasOwnProperty'](_0x1b957c)){if(_0x1b957c['indexOf']('agi_')===0x0){_0x55e4d9[_0x1b957c['substring'](0x4)]=_0x55e4d9[_0x1b957c];delete _0x55e4d9[_0x1b957c];}}}}function getLogFromObject(_0x219e5c){return util['inspect'](_0x219e5c,{'showHidden':![],'depth':null});}function agiHandler(_0x4c522a){var _0x394eeb,_0x19aa29,_0x3b53f1,_0x288bfb,_0x8478e4;logger[_0xf2db('0x2f')]('variables',JSON[_0xf2db('0x30')](_0x4c522a,null,0x2));logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x31'),_0x4c522a[_0xf2db('0x17')],_0x4c522a[_0xf2db('0x18')],_0x4c522a[_0xf2db('0x19')],_0x4c522a[_0xf2db('0x1a')],_0x4c522a[_0xf2db('0x1b')]));_0x4c522a['on'](_0xf2db('0xb'),errorHandler);_0x4c522a['on'](_0xf2db('0x32'),closeHandler);_0x4c522a['on'](_0xf2db('0x33'),timeoutHandler);_0x4c522a[_0xf2db('0x34')]=![];_0x4c522a['on'](_0xf2db('0x35'),hangupHandler);var _0x170185=getSquareProject[_0xf2db('0x36')](null,_0x4c522a[_0xf2db('0x17')]);if(_0x170185){if(_0x170185['production']){_0x394eeb=getRoot(_0x170185['production']);if(_0x394eeb&&_0x394eeb[_0xf2db('0x37')]){logger['debug'](_0xf2db('0x38'),JSON[_0xf2db('0x30')](_0x394eeb,null,0x2));_0x4c522a[_0xf2db('0x39')]=moment()[_0xf2db('0x12')](_0xf2db('0x3a'));_0x19aa29=initGraph(_[_0xf2db('0x23')](_0x394eeb,'mxCell'),_0x394eeb[_0xf2db('0x24')]);_0x3b53f1=new Vertices(_0x4c522a,rpc,mailRpc);logger[_0xf2db('0xf')](util['format'](_0xf2db('0x3b'),_0x4c522a[_0xf2db('0x17')],_0x4c522a['calleridname'],_0x4c522a['callerid'],_0x4c522a[_0xf2db('0x1a')],_0x4c522a['uniqueid']));_0x19aa29[_0xf2db('0x3c')](_0x394eeb[_0xf2db('0x37')]['id'],function(_0x3c39a7){try{_0x3c39a7=_0x3b53f1[_0xf2db('0x3d')](_0x3c39a7);logger[_0xf2db('0x2f')](_0xf2db('0x3e'),JSON['stringify'](_0x3c39a7,null,0x2));if(_0x3c39a7[_0xf2db('0x3f')]===_0xf2db('0x40')){logger[_0xf2db('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x4c522a['context']=_0x3c39a7[_0xf2db('0x41')]||_0x4c522a[_0xf2db('0x41')];_0x4c522a[_0xf2db('0x42')]=_0x3c39a7[_0xf2db('0x42')];_0x4c522a[_0xf2db('0x43')]=_0x3c39a7['priority']?_0x3c39a7[_0xf2db('0x43')]-0x1:0x1;return null;}else if(_0x3c39a7&&_0x3b53f1[_0x3c39a7[_0xf2db('0x3f')]]){_0x8478e4=_0x3b53f1[_0x3c39a7['agicommand']](_0x3c39a7);logger['info'](_0xf2db('0x44'),JSON['stringify'](_0x8478e4,null,0x2));if(_0x8478e4&&_0x8478e4[_0xf2db('0x45')]===AGI_CODE_SUCCESS&&_0x8478e4[_0xf2db('0x46')]!==AGI_RESULT_ERROR&&!_0x4c522a[_0xf2db('0x34')]){logger[_0xf2db('0x2f')](_0xf2db('0x44'),getLogFromObject(_0x8478e4));return _[_0xf2db('0x47')](_0x8478e4[_0xf2db('0x46')])?null:_0x8478e4['result'][_0xf2db('0x48')]();}else{logger[_0xf2db('0xb')](_0xf2db('0x44'),getLogFromObject(_0x8478e4));return null;}}else{logger[_0xf2db('0xb')](_0xf2db('0x49'));return null;}}catch(_0x1e0a51){logger[_0xf2db('0xb')](_0x1e0a51['stack']);return null;}});if(_0x394eeb[_0xf2db('0x4a')]){logger[_0xf2db('0xf')](util['format'](_0xf2db('0x4b'),_0x4c522a['arg_1'],_0x4c522a[_0xf2db('0x18')],_0x4c522a[_0xf2db('0x19')],_0x4c522a['dnid'],_0x4c522a[_0xf2db('0x1b')]));_0x19aa29[_0xf2db('0x3c')](_0x394eeb['finally']['id'],function(_0x895c3){try{_0x895c3=_0x3b53f1[_0xf2db('0x3d')](_0x895c3);logger[_0xf2db('0x2f')](_0xf2db('0x3e'),JSON[_0xf2db('0x30')](_0x895c3,null,0x2));if(_0x895c3&&_0x3b53f1[_0x895c3[_0xf2db('0x3f')]]){_0x8478e4=_0x3b53f1[_0x895c3[_0xf2db('0x3f')]](_0x895c3);if(_0x8478e4){logger[_0xf2db('0x2f')](_0xf2db('0x44'),getLogFromObject(_0x8478e4));return _[_0xf2db('0x47')](_0x8478e4[_0xf2db('0x46')])?null:_0x8478e4[_0xf2db('0x46')]['toString']();}else{logger[_0xf2db('0xb')](_0xf2db('0x44'),getLogFromObject(_0x8478e4));return null;}}else{logger[_0xf2db('0xb')](_0xf2db('0x49'));return null;}}catch(_0x310783){logger['error'](_0x310783[_0xf2db('0x15')]);return null;}});}logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x4c'),_0x4c522a['arg_1'],_0x4c522a[_0xf2db('0x18')],_0x4c522a[_0xf2db('0x19')],_0x4c522a[_0xf2db('0x1a')],_0x4c522a[_0xf2db('0x1b')]));logger[_0xf2db('0xf')](util[_0xf2db('0x12')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x4c522a[_0xf2db('0x41')],_0x4c522a[_0xf2db('0x42')],parseInt(_0x4c522a[_0xf2db('0x43')],0xa)+0x1));_0x4c522a[_0xf2db('0x4d')](_0x4c522a[_0xf2db('0x41')],_0x4c522a[_0xf2db('0x42')],parseInt(_0x4c522a[_0xf2db('0x43')],0xa)+0x1);_0x4c522a[_0xf2db('0x32')]();}}else{logger[_0xf2db('0xb')](util[_0xf2db('0x12')]('Project\x20%s\x20not\x20published',_0x4c522a[_0xf2db('0x17')]));_0x4c522a['continueAt'](_0x4c522a['context'],_0x4c522a[_0xf2db('0x42')],parseInt(_0x4c522a['priority'],0xa)+0x1);_0x4c522a['close']();}}else{logger['error'](util[_0xf2db('0x12')](_0xf2db('0x4e'),_0x4c522a[_0xf2db('0x17')]));_0x4c522a[_0xf2db('0x4d')](_0x4c522a['context'],_0x4c522a[_0xf2db('0x42')],parseInt(_0x4c522a['priority'],0xa)+0x1);_0x4c522a[_0xf2db('0x32')]();}}function main(){var _0x1f73c4;return utilLicense[_0xf2db('0x4f')]()[_0xf2db('0x2c')](function(_0x31d939){if(_0x31d939){if(_0x31d939[_0xf2db('0x50')]){if(_0x31d939[_0xf2db('0x51')]&&_0x31d939[_0xf2db('0x51')]>0x0){logger[_0xf2db('0xf')](util[_0xf2db('0x12')](_0xf2db('0x52'),_0x31d939[_0xf2db('0x51')]));_0x1f73c4=_0x31d939['callysquare'];}else{logger[_0xf2db('0xf')](_0xf2db('0x53'));}}else{logger[_0xf2db('0xf')](_0xf2db('0x54'));_0x1f73c4=-0x1;}}})[_0xf2db('0x2d')](function(_0x561674){logger[_0xf2db('0xb')]('[LICENSE]',_0x561674[_0xf2db('0x15')]);})[_0xf2db('0x4a')](function(){var _0x41144c=require(_0xf2db('0x55'))(config['agi'][_0xf2db('0xe')],config[_0xf2db('0x8')]['ip'],_0x1f73c4);_0x41144c['on'](_0xf2db('0xb'),errorHandler);_0x41144c['on'](_0xf2db('0x56'),listeningHandler);_0x41144c['on'](_0xf2db('0x57'),connectionHandler);_0x41144c['on'](_0xf2db('0x32'),closeHandler);});}main();