2e9cdb7177ef1f6b1f04ab2ee759fd63c169961e
[motion-next.git] / server / services / agi / index.js
1 const a1028_0x2151=['../../config/logger','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','isArray','connection','[LICENSE]\x20CHANNELS:\x20%s','YYYY-MM-DD\x20HH:mm:ss','[LICENSE]','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','listening','variables','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','message','name','[LICENSE]\x20CHANNELS:\x20UNLIMITED','Project\x20%s\x20not\x20published','[%s]\x20%s','agicommand\x20not\x20found','getLicense','root','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','[ERROR]\x20%s','xml2json','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','start','getSquareProject','mxCell','hangup','context','then','indexOf','127.0.0.1','log','./rpc','code','catch','[LICENSE]\x20VOICE\x20IS\x20DISABLED','format','../../globals','dnid','traverseBFS','./server','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','info','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','../../config/environment','agi_','undefined','addEdge','agi','priority','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','source','continueAt','length','omit','production','target','debug','result','response','substring','finally','stringify','error','retry','agicommand','toString','isUndefined','./graph','evtHangup','toJson','maxRetry','port','resolve','mxGraphModel','stack','callysquare','uniqueid','joinAt','extension','addVertex','createSquareReport','gotoc\x20block\x20stop\x20traverse\x20BFS','clear','arg_1','sync','vertex','close','./vertices','../../config/license/util'];(function(_0x28f27b,_0x215116){const _0x461bef=function(_0x305aff){while(--_0x305aff){_0x28f27b['push'](_0x28f27b['shift']());}};_0x461bef(++_0x215116);}(a1028_0x2151,0x120));const a1028_0x461b=function(_0x28f27b,_0x215116){_0x28f27b=_0x28f27b-0x0;let _0x461bef=a1028_0x2151[_0x28f27b];return _0x461bef;};const _0x2f8e3a=a1028_0x461b;'use strict';require(_0x2f8e3a('0x1e'));const parser=require(_0x2f8e3a('0xe')),_=require('lodash'),util=require('util'),moment=require('moment'),config=require(_0x2f8e3a('0x26')),logger=require(_0x2f8e3a('0x54'))(_0x2f8e3a('0x2a')),utilLicense=require(_0x2f8e3a('0x53')),rpc=require(_0x2f8e3a('0x19')),mailRpc=require('./mailRpc'),Graph=require(_0x2f8e3a('0x3e')),Vertices=require(_0x2f8e3a('0x52')),AGI_CODE_SUCCESS=0xc8,AGI_RESULT_ERROR=-0x1;config[_0x2f8e3a('0x2a')]=_['defaults'](config[_0x2f8e3a('0x2a')],{'ip':_0x2f8e3a('0x17'),'port':0x11dd});async function connectionHandler(_0x305aff){const _0x14a72d=_0x2f8e3a;try{await setChannelVariables(_0x305aff),await agiHandler(_0x305aff);}catch(_0xad74f4){logger[_0x14a72d('0x39')](_0xad74f4['stack']);}}function listeningHandler(){const _0x506740=_0x2f8e3a;console[_0x506740('0x18')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x506740('0x2a')][_0x506740('0x42')]),logger[_0x506740('0x23')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x506740('0x2a')]['ip'],config[_0x506740('0x2a')][_0x506740('0x42')]));}function errorHandler(_0x2861cf){const _0x24066a=_0x2f8e3a;_0x2861cf&&_0x2861cf[_0x24066a('0x4')]&&_0x2861cf[_0x24066a('0x3')]?logger['error'](util[_0x24066a('0x1d')](_0x24066a('0x7'),_0x2861cf[_0x24066a('0x4')],_0x2861cf['message'])):logger[_0x24066a('0x39')](util['format'](_0x24066a('0xd'),_0x2861cf[_0x24066a('0x45')]));}function closeHandler(){const _0x575bc3=_0x2f8e3a;logger['info'](util[_0x575bc3('0x1d')](_0x575bc3('0x22'),this[_0x575bc3('0x4e')],this[_0x575bc3('0x5c')],this[_0x575bc3('0x25')],this[_0x575bc3('0x1f')],this[_0x575bc3('0x47')]));try{createSquareReport(this);}catch(_0x31f29){logger[_0x575bc3('0x39')](_0x31f29[_0x575bc3('0x45')]);}}function timeoutHandler(){const _0x15dc6c=_0x2f8e3a;logger[_0x15dc6c('0x23')](util[_0x15dc6c('0x1d')](_0x15dc6c('0x5b'),this[_0x15dc6c('0x4e')],this[_0x15dc6c('0x5c')],this[_0x15dc6c('0x25')],this[_0x15dc6c('0x1f')],this[_0x15dc6c('0x47')]));}function hangupHandler(){const _0x39a3de=_0x2f8e3a;logger[_0x39a3de('0x23')](util[_0x39a3de('0x1d')](_0x39a3de('0x24'),this[_0x39a3de('0x4e')],this[_0x39a3de('0x5c')],this['callerid'],this['dnid'],this[_0x39a3de('0x47')])),this[_0x39a3de('0x3f')]=!![];}function getRoot(_0x133cc6){const _0xfc7970=_0x2f8e3a;return parser[_0xfc7970('0x40')](_0x133cc6,{'object':!![]})[_0xfc7970('0x44')][_0xfc7970('0xa')];}function addVertex(_0x4dcce6,_0x4ebfdb,_0x31241a){const _0x1fbfa7=_0x2f8e3a;_0x4ebfdb[_0x1fbfa7('0x3b')]=_0x31241a,typeof _0x4ebfdb['retry']!==_0x1fbfa7('0x28')&&(_0x4ebfdb[_0x1fbfa7('0x41')]=parseInt(_0x4ebfdb[_0x1fbfa7('0x3a')],0xa)),_0x4dcce6[_0x1fbfa7('0x4a')](_[_0x1fbfa7('0x30')](_0x4ebfdb,_0x1fbfa7('0x12')));}function initGraph(_0x48114a,_0x5af3d6){const _0x55d7da=_0x2f8e3a,_0x2db861=new Graph();for(const _0x3d760c in _0x48114a){if(typeof _0x48114a[_0x3d760c]!==_0x55d7da('0x28')){if(_[_0x55d7da('0x56')](_0x48114a[_0x3d760c]))for(let _0x45e989=0x0;_0x45e989<_0x48114a[_0x3d760c][_0x55d7da('0x2f')];_0x45e989+=0x1){addVertex(_0x2db861,_0x48114a[_0x3d760c][_0x45e989],_0x3d760c);}else addVertex(_0x2db861,_0x48114a[_0x3d760c],_0x3d760c);}}for(let _0x3da50b=0x0;_0x3da50b<_0x5af3d6['length'];_0x3da50b+=0x1){_0x5af3d6[_0x3da50b]['source']&&_0x5af3d6[_0x3da50b][_0x55d7da('0x32')]&&_0x2db861[_0x55d7da('0x29')](_0x5af3d6[_0x3da50b][_0x55d7da('0x2d')],_0x5af3d6[_0x3da50b]['target'],_0x5af3d6[_0x3da50b]['value']);}return _0x2db861;}function getSquareProject(_0xd69946,_0x2fdfb0){const _0x122288=_0x2f8e3a;rpc[_0x122288('0x11')](_0xd69946)[_0x122288('0x15')](function(_0x272833){_0x2fdfb0(null,_0x272833);})['catch'](function(_0x3cd907){_0x2fdfb0(null,_0x3cd907);});}function createSquareReport(_0x2fcade,_0x236fae){const _0x4ee061=_0x2f8e3a;rpc[_0x4ee061('0x4b')](_0x2fcade)[_0x4ee061('0x15')](function(_0x3b1642){_0x236fae&&_0x236fae(null,_0x3b1642);})['catch'](function(_0x565cd6){_0x236fae&&_0x236fae(null,_0x565cd6);});}async function setChannelVariables(_0x7b1e9f){const _0x399c3e=_0x2f8e3a;for(const _0x34783f in _0x7b1e9f){typeof _0x7b1e9f[_0x34783f]!==_0x399c3e('0x28')&&(_0x34783f[_0x399c3e('0x16')](_0x399c3e('0x27'))===0x0&&(_0x7b1e9f[_0x34783f[_0x399c3e('0x36')](0x4)]=_0x7b1e9f[_0x34783f],delete _0x7b1e9f[_0x34783f]));}return Promise[_0x399c3e('0x43')](_0x7b1e9f);}function getLogFromObject(_0x2f2e36){return util['inspect'](_0x2f2e36,{'showHidden':![],'depth':null});}async function agiHandler(_0x5dd822){const _0x3c0b83=_0x2f8e3a;let _0x43b556,_0x805bc9,_0x4d4071,_0x323ce9;logger[_0x3c0b83('0x33')](_0x3c0b83('0x1'),JSON[_0x3c0b83('0x38')](_0x5dd822,null,0x2)),logger['info'](util[_0x3c0b83('0x1d')](_0x3c0b83('0x55'),_0x5dd822['arg_1'],_0x5dd822[_0x3c0b83('0x5c')],_0x5dd822[_0x3c0b83('0x25')],_0x5dd822[_0x3c0b83('0x1f')],_0x5dd822[_0x3c0b83('0x47')])),_0x5dd822['on'](_0x3c0b83('0x39'),errorHandler),_0x5dd822['on']('close',closeHandler),_0x5dd822['on'](_0x3c0b83('0xc'),timeoutHandler),_0x5dd822['evtHangup']=![],_0x5dd822['on'](_0x3c0b83('0x13'),hangupHandler);const _0x304081=getSquareProject[_0x3c0b83('0x4f')](null,_0x5dd822[_0x3c0b83('0x4e')]);return _0x304081?_0x304081[_0x3c0b83('0x31')]?(_0x43b556=getRoot(_0x304081[_0x3c0b83('0x31')]),_0x43b556&&_0x43b556[_0x3c0b83('0x10')]&&(logger[_0x3c0b83('0x33')](_0x3c0b83('0xa'),JSON['stringify'](_0x43b556,null,0x2)),_0x5dd822[_0x3c0b83('0x48')]=moment()['format'](_0x3c0b83('0x59')),_0x805bc9=initGraph(_[_0x3c0b83('0x30')](_0x43b556,'mxCell'),_0x43b556['mxCell']),_0x4d4071=new Vertices(_0x5dd822,rpc,mailRpc),logger[_0x3c0b83('0x23')](util[_0x3c0b83('0x1d')](_0x3c0b83('0xf'),_0x5dd822[_0x3c0b83('0x4e')],_0x5dd822[_0x3c0b83('0x5c')],_0x5dd822['callerid'],_0x5dd822[_0x3c0b83('0x1f')],_0x5dd822[_0x3c0b83('0x47')])),_0x805bc9[_0x3c0b83('0x20')](_0x43b556[_0x3c0b83('0x10')]['id'],function(_0x3f51c7){const _0x18205e=_0x3c0b83;try{_0x3f51c7=_0x4d4071['clear'](_0x3f51c7),logger[_0x18205e('0x33')](_0x18205e('0x50'),JSON[_0x18205e('0x38')](_0x3f51c7,null,0x2));if(_0x3f51c7[_0x18205e('0x3b')]==='gotoc')return logger[_0x18205e('0x23')](_0x18205e('0x4c')),_0x5dd822[_0x18205e('0x14')]=_0x3f51c7[_0x18205e('0x14')]||_0x5dd822['context'],_0x5dd822[_0x18205e('0x49')]=_0x3f51c7[_0x18205e('0x49')],_0x5dd822[_0x18205e('0x2b')]=_0x3f51c7['priority']?_0x3f51c7['priority']-0x1:0x1,null;else return _0x3f51c7&&_0x4d4071[_0x3f51c7[_0x18205e('0x3b')]]?(_0x323ce9=_0x4d4071[_0x3f51c7['agicommand']](_0x3f51c7),logger[_0x18205e('0x23')](_0x18205e('0x35'),JSON['stringify'](_0x323ce9,null,0x2)),_0x323ce9&&_0x323ce9[_0x18205e('0x1a')]===AGI_CODE_SUCCESS&&_0x323ce9[_0x18205e('0x34')]!==AGI_RESULT_ERROR&&!_0x5dd822['evtHangup']?(logger[_0x18205e('0x33')]('response',getLogFromObject(_0x323ce9)),_['isUndefined'](_0x323ce9[_0x18205e('0x34')])?null:_0x323ce9[_0x18205e('0x34')][_0x18205e('0x3c')]()):(logger[_0x18205e('0x39')]('response',getLogFromObject(_0x323ce9)),null)):(logger[_0x18205e('0x39')](_0x18205e('0x8')),null);}catch(_0x1abc0e){return logger[_0x18205e('0x39')](_0x1abc0e[_0x18205e('0x45')]),null;}}),_0x43b556[_0x3c0b83('0x37')]&&(logger[_0x3c0b83('0x23')](util[_0x3c0b83('0x1d')](_0x3c0b83('0x2'),_0x5dd822[_0x3c0b83('0x4e')],_0x5dd822['calleridname'],_0x5dd822['callerid'],_0x5dd822['dnid'],_0x5dd822[_0x3c0b83('0x47')])),_0x805bc9['traverseBFS'](_0x43b556['finally']['id'],function(_0x2e04e3){const _0x13a68a=_0x3c0b83;try{return _0x2e04e3=_0x4d4071[_0x13a68a('0x4d')](_0x2e04e3),logger[_0x13a68a('0x33')](_0x13a68a('0x50'),JSON[_0x13a68a('0x38')](_0x2e04e3,null,0x2)),_0x2e04e3&&_0x4d4071[_0x2e04e3[_0x13a68a('0x3b')]]?(_0x323ce9=_0x4d4071[_0x2e04e3[_0x13a68a('0x3b')]](_0x2e04e3),_0x323ce9?(logger[_0x13a68a('0x33')](_0x13a68a('0x35'),getLogFromObject(_0x323ce9)),_[_0x13a68a('0x3d')](_0x323ce9[_0x13a68a('0x34')])?null:_0x323ce9[_0x13a68a('0x34')]['toString']()):(logger[_0x13a68a('0x39')](_0x13a68a('0x35'),getLogFromObject(_0x323ce9)),null)):(logger[_0x13a68a('0x39')]('agicommand\x20not\x20found'),null);}catch(_0x5e0f79){return logger[_0x13a68a('0x39')](_0x5e0f79[_0x13a68a('0x45')]),null;}})),logger['info'](util[_0x3c0b83('0x1d')](_0x3c0b83('0xb'),_0x5dd822[_0x3c0b83('0x4e')],_0x5dd822[_0x3c0b83('0x5c')],_0x5dd822[_0x3c0b83('0x25')],_0x5dd822['dnid'],_0x5dd822[_0x3c0b83('0x47')])),logger[_0x3c0b83('0x23')](util[_0x3c0b83('0x1d')](_0x3c0b83('0x2c'),_0x5dd822[_0x3c0b83('0x14')],_0x5dd822['extension'],parseInt(_0x5dd822[_0x3c0b83('0x2b')],0xa)+0x1)),_0x5dd822[_0x3c0b83('0x2e')](_0x5dd822[_0x3c0b83('0x14')],_0x5dd822[_0x3c0b83('0x49')],parseInt(_0x5dd822['priority'],0xa)+0x1),_0x5dd822[_0x3c0b83('0x51')]())):(logger[_0x3c0b83('0x39')](util[_0x3c0b83('0x1d')](_0x3c0b83('0x6'),_0x5dd822[_0x3c0b83('0x4e')])),_0x5dd822['continueAt'](_0x5dd822[_0x3c0b83('0x14')],_0x5dd822[_0x3c0b83('0x49')],parseInt(_0x5dd822[_0x3c0b83('0x2b')],0xa)+0x1),_0x5dd822[_0x3c0b83('0x51')]()):(logger['error'](util[_0x3c0b83('0x1d')]('Project\x20%s\x20not\x20found',_0x5dd822['arg_1'])),_0x5dd822[_0x3c0b83('0x2e')](_0x5dd822[_0x3c0b83('0x14')],_0x5dd822['extension'],parseInt(_0x5dd822[_0x3c0b83('0x2b')],0xa)+0x1),_0x5dd822[_0x3c0b83('0x51')]()),Promise[_0x3c0b83('0x43')]();}function main(){const _0x20baa0=_0x2f8e3a;let _0x3198e5;return utilLicense[_0x20baa0('0x9')]()[_0x20baa0('0x15')](function(_0x5caea1){const _0x4853d9=_0x20baa0;_0x5caea1&&(_0x5caea1['voice']?_0x5caea1[_0x4853d9('0x46')]&&_0x5caea1[_0x4853d9('0x46')]>0x0?(logger[_0x4853d9('0x23')](util[_0x4853d9('0x1d')](_0x4853d9('0x58'),_0x5caea1[_0x4853d9('0x46')])),_0x3198e5=_0x5caea1[_0x4853d9('0x46')]):logger[_0x4853d9('0x23')](_0x4853d9('0x5')):(logger[_0x4853d9('0x23')](_0x4853d9('0x1c')),_0x3198e5=-0x1));})[_0x20baa0('0x1b')](function(_0x21551d){const _0x4f254e=_0x20baa0;logger[_0x4f254e('0x39')](_0x4f254e('0x5a'),_0x21551d[_0x4f254e('0x45')]);})[_0x20baa0('0x37')](function(){const _0x1f8166=_0x20baa0,_0x5386a9=require(_0x1f8166('0x21'))(config[_0x1f8166('0x2a')][_0x1f8166('0x42')],config[_0x1f8166('0x2a')]['ip'],_0x3198e5);_0x5386a9['on']('error',errorHandler),_0x5386a9['on'](_0x1f8166('0x0'),listeningHandler),_0x5386a9['on'](_0x1f8166('0x57'),connectionHandler),_0x5386a9['on'](_0x1f8166('0x51'),closeHandler);});}main();