6ad1a3091977ecf2134b5aa199f577956f3fecc9
[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 _0x008c=['omit','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','response','result','isUndefined','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','close','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','util','moment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','stack','log','info','format','port','name','message','error','[ERROR]\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','length','source','target','value','getSquareProject','then','createSquareReport','catch','indexOf','agi_','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','timeout','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x495123,_0x2bf158){var _0x39e1ee=function(_0x226778){while(--_0x226778){_0x495123['push'](_0x495123['shift']());}};_0x39e1ee(++_0x2bf158);}(_0x008c,0x188));var _0xc008=function(_0x5b080b,_0xe34631){_0x5b080b=_0x5b080b-0x0;var _0x3d724c=_0x008c[_0x5b080b];return _0x3d724c;};'use strict';var parser=require(_0xc008('0x0'));var _=require(_0xc008('0x1'));var syncho=require(_0xc008('0x2'));var util=require(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var config=require('../../config/environment');var logger=require(_0xc008('0x5'))(_0xc008('0x6'));var utilLicense=require(_0xc008('0x7'));var rpc=require(_0xc008('0x8'));var mailRpc=require(_0xc008('0x9'));var Graph=require(_0xc008('0xa'));var Vertices=require(_0xc008('0xb'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc008('0x6')]=_[_0xc008('0xc')](config['agi'],{'ip':_0xc008('0xd'),'port':0x11dd});function connectionHandler(_0x5aa09b){process[_0xc008('0xe')](function(){syncho(function(){try{setChannelVariables(_0x5aa09b);agiHandler(_0x5aa09b);}catch(_0x5b64f8){logger['error'](_0x5b64f8[_0xc008('0xf')]);}});});}function listeningHandler(){console[_0xc008('0x10')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger[_0xc008('0x11')](util[_0xc008('0x12')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xc008('0x6')]['ip'],config[_0xc008('0x6')][_0xc008('0x13')]));}function errorHandler(_0x2a5b4e){if(_0x2a5b4e&&_0x2a5b4e[_0xc008('0x14')]&&_0x2a5b4e[_0xc008('0x15')]){logger[_0xc008('0x16')](util['format']('[%s]\x20%s',_0x2a5b4e[_0xc008('0x14')],_0x2a5b4e['message']));}else{logger[_0xc008('0x16')](util[_0xc008('0x12')](_0xc008('0x17'),_0x2a5b4e[_0xc008('0xf')]));}}function closeHandler(){logger[_0xc008('0x11')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xc008('0x18')],this[_0xc008('0x19')],this[_0xc008('0x1a')],this[_0xc008('0x1b')]));try{createSquareReport(this);}catch(_0x4fe771){logger['error'](_0x4fe771['stack']);}}function timeoutHandler(){logger['info'](util[_0xc008('0x12')](_0xc008('0x1c'),this['arg_1'],this[_0xc008('0x18')],this['callerid'],this['dnid'],this['uniqueid']));}function hangupHandler(){logger['info'](util[_0xc008('0x12')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this['callerid'],this['dnid'],this[_0xc008('0x1b')]));this[_0xc008('0x1d')]=!![];}function getRoot(_0x251db2){return parser[_0xc008('0x1e')](_0x251db2,{'object':!![]})[_0xc008('0x1f')][_0xc008('0x20')];}function addVertex(_0x4f43e2,_0x459fd9,_0x5c85f2){_0x459fd9['agicommand']=_0x5c85f2;if(_0x459fd9[_0xc008('0x21')](_0xc008('0x22'))){_0x459fd9[_0xc008('0x23')]=parseInt(_0x459fd9[_0xc008('0x22')],0xa);}_0x4f43e2['addVertex'](_['omit'](_0x459fd9,'mxCell'));}function initGraph(_0x3f7b07,_0x15dade){var _0x92c582=new Graph();for(var _0x2e31c2 in _0x3f7b07){if(_0x3f7b07['hasOwnProperty'](_0x2e31c2)){if(_['isArray'](_0x3f7b07[_0x2e31c2])){for(var _0x4fce9c=0x0;_0x4fce9c<_0x3f7b07[_0x2e31c2]['length'];_0x4fce9c+=0x1){addVertex(_0x92c582,_0x3f7b07[_0x2e31c2][_0x4fce9c],_0x2e31c2);}}else{addVertex(_0x92c582,_0x3f7b07[_0x2e31c2],_0x2e31c2);}}}for(var _0x4caaf4=0x0;_0x4caaf4<_0x15dade[_0xc008('0x24')];_0x4caaf4+=0x1){if(_0x15dade[_0x4caaf4][_0xc008('0x25')]&&_0x15dade[_0x4caaf4][_0xc008('0x26')]){_0x92c582['addEdge'](_0x15dade[_0x4caaf4][_0xc008('0x25')],_0x15dade[_0x4caaf4][_0xc008('0x26')],_0x15dade[_0x4caaf4][_0xc008('0x27')]);}}return _0x92c582;}function getSquareProject(_0x2a7d4f,_0x4c5dec){rpc[_0xc008('0x28')](_0x2a7d4f)[_0xc008('0x29')](function(_0x53ed35){_0x4c5dec(null,_0x53ed35);})['catch'](function(_0x539766){_0x4c5dec(null,_0x539766);});}function createSquareReport(_0x1032b2,_0x267abd){rpc[_0xc008('0x2a')](_0x1032b2)[_0xc008('0x29')](function(_0x1de04b){if(_0x267abd){_0x267abd(null,_0x1de04b);}})[_0xc008('0x2b')](function(_0x294f97){if(_0x267abd){_0x267abd(null,_0x294f97);}});}function setChannelVariables(_0x22d8e8){for(var _0x1fe1e1 in _0x22d8e8){if(_0x22d8e8[_0xc008('0x21')](_0x1fe1e1)){if(_0x1fe1e1[_0xc008('0x2c')](_0xc008('0x2d'))===0x0){_0x22d8e8[_0x1fe1e1['substring'](0x4)]=_0x22d8e8[_0x1fe1e1];delete _0x22d8e8[_0x1fe1e1];}}}}function getLogFromObject(_0x334a09){return util[_0xc008('0x2e')](_0x334a09,{'showHidden':![],'depth':null});}function agiHandler(_0x499754){var _0xaf4b84,_0x165a7b,_0x383be7,_0xca0520,_0xd0e05a;logger[_0xc008('0x2f')](_0xc008('0x30'),JSON[_0xc008('0x31')](_0x499754,null,0x2));logger[_0xc008('0x11')](util['format'](_0xc008('0x32'),_0x499754[_0xc008('0x33')],_0x499754[_0xc008('0x18')],_0x499754[_0xc008('0x19')],_0x499754[_0xc008('0x1a')],_0x499754[_0xc008('0x1b')]));_0x499754['on'](_0xc008('0x16'),errorHandler);_0x499754['on']('close',closeHandler);_0x499754['on'](_0xc008('0x34'),timeoutHandler);_0x499754[_0xc008('0x1d')]=![];_0x499754['on']('hangup',hangupHandler);var _0x399b64=getSquareProject[_0xc008('0x35')](null,_0x499754['arg_1']);if(_0x399b64){if(_0x399b64[_0xc008('0x36')]){_0xaf4b84=getRoot(_0x399b64[_0xc008('0x36')]);if(_0xaf4b84&&_0xaf4b84[_0xc008('0x37')]){logger['debug']('root',JSON['stringify'](_0xaf4b84,null,0x2));_0x499754[_0xc008('0x38')]=moment()['format'](_0xc008('0x39'));_0x165a7b=initGraph(_[_0xc008('0x3a')](_0xaf4b84,_0xc008('0x3b')),_0xaf4b84[_0xc008('0x3b')]);_0x383be7=new Vertices(_0x499754,rpc,mailRpc);logger[_0xc008('0x11')](util[_0xc008('0x12')](_0xc008('0x3c'),_0x499754[_0xc008('0x33')],_0x499754[_0xc008('0x18')],_0x499754[_0xc008('0x19')],_0x499754[_0xc008('0x1a')],_0x499754[_0xc008('0x1b')]));_0x165a7b[_0xc008('0x3d')](_0xaf4b84[_0xc008('0x37')]['id'],function(_0x4cace5){try{_0x4cace5=_0x383be7[_0xc008('0x3e')](_0x4cace5);logger[_0xc008('0x2f')](_0xc008('0x3f'),JSON[_0xc008('0x31')](_0x4cace5,null,0x2));if(_0x4cace5['agicommand']===_0xc008('0x40')){logger[_0xc008('0x11')](_0xc008('0x41'));_0x499754[_0xc008('0x42')]=_0x4cace5[_0xc008('0x42')]||_0x499754['context'];_0x499754[_0xc008('0x43')]=_0x4cace5[_0xc008('0x43')];_0x499754[_0xc008('0x44')]=_0x4cace5[_0xc008('0x44')]?_0x4cace5[_0xc008('0x44')]-0x1:0x1;return null;}else if(_0x4cace5&&_0x383be7[_0x4cace5['agicommand']]){_0xd0e05a=_0x383be7[_0x4cace5[_0xc008('0x45')]](_0x4cace5);logger[_0xc008('0x11')](_0xc008('0x46'),JSON[_0xc008('0x31')](_0xd0e05a,null,0x2));if(_0xd0e05a&&_0xd0e05a['code']===AGI_CODE_SUCCESS&&_0xd0e05a[_0xc008('0x47')]!==AGI_RESULT_ERROR&&!_0x499754[_0xc008('0x1d')]){logger[_0xc008('0x2f')]('response',getLogFromObject(_0xd0e05a));return _[_0xc008('0x48')](_0xd0e05a['result'])?null:_0xd0e05a[_0xc008('0x47')]['toString']();}else{logger[_0xc008('0x16')](_0xc008('0x46'),getLogFromObject(_0xd0e05a));return null;}}else{logger['error'](_0xc008('0x49'));return null;}}catch(_0x24ba0f){logger[_0xc008('0x16')](_0x24ba0f['stack']);return null;}});if(_0xaf4b84[_0xc008('0x4a')]){logger[_0xc008('0x11')](util[_0xc008('0x12')](_0xc008('0x4b'),_0x499754[_0xc008('0x33')],_0x499754[_0xc008('0x18')],_0x499754['callerid'],_0x499754['dnid'],_0x499754['uniqueid']));_0x165a7b[_0xc008('0x3d')](_0xaf4b84[_0xc008('0x4a')]['id'],function(_0x103a83){try{_0x103a83=_0x383be7[_0xc008('0x3e')](_0x103a83);logger[_0xc008('0x2f')](_0xc008('0x3f'),JSON[_0xc008('0x31')](_0x103a83,null,0x2));if(_0x103a83&&_0x383be7[_0x103a83[_0xc008('0x45')]]){_0xd0e05a=_0x383be7[_0x103a83['agicommand']](_0x103a83);if(_0xd0e05a){logger['debug']('response',getLogFromObject(_0xd0e05a));return _[_0xc008('0x48')](_0xd0e05a[_0xc008('0x47')])?null:_0xd0e05a[_0xc008('0x47')]['toString']();}else{logger[_0xc008('0x16')](_0xc008('0x46'),getLogFromObject(_0xd0e05a));return null;}}else{logger[_0xc008('0x16')](_0xc008('0x49'));return null;}}catch(_0x4981b4){logger[_0xc008('0x16')](_0x4981b4[_0xc008('0xf')]);return null;}});}logger[_0xc008('0x11')](util[_0xc008('0x12')](_0xc008('0x4c'),_0x499754['arg_1'],_0x499754['calleridname'],_0x499754[_0xc008('0x19')],_0x499754['dnid'],_0x499754[_0xc008('0x1b')]));logger[_0xc008('0x11')](util[_0xc008('0x12')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x499754[_0xc008('0x42')],_0x499754[_0xc008('0x43')],parseInt(_0x499754[_0xc008('0x44')],0xa)+0x1));_0x499754[_0xc008('0x4d')](_0x499754[_0xc008('0x42')],_0x499754['extension'],parseInt(_0x499754[_0xc008('0x44')],0xa)+0x1);_0x499754[_0xc008('0x4e')]();}}else{logger['error'](util[_0xc008('0x12')](_0xc008('0x4f'),_0x499754['arg_1']));_0x499754['continueAt'](_0x499754[_0xc008('0x42')],_0x499754[_0xc008('0x43')],parseInt(_0x499754[_0xc008('0x44')],0xa)+0x1);_0x499754[_0xc008('0x4e')]();}}else{logger[_0xc008('0x16')](util['format']('Project\x20%s\x20not\x20found',_0x499754[_0xc008('0x33')]));_0x499754['continueAt'](_0x499754[_0xc008('0x42')],_0x499754[_0xc008('0x43')],parseInt(_0x499754[_0xc008('0x44')],0xa)+0x1);_0x499754[_0xc008('0x4e')]();}}function main(){var _0x44f42d;return utilLicense[_0xc008('0x50')]()['then'](function(_0x2ea742){if(_0x2ea742){if(_0x2ea742[_0xc008('0x51')]){if(_0x2ea742[_0xc008('0x52')]&&_0x2ea742[_0xc008('0x52')]>0x0){logger[_0xc008('0x11')](util['format'](_0xc008('0x53'),_0x2ea742['callysquare']));_0x44f42d=_0x2ea742['callysquare'];}else{logger['info'](_0xc008('0x54'));}}else{logger[_0xc008('0x11')](_0xc008('0x55'));_0x44f42d=-0x1;}}})['catch'](function(_0x3aeeab){logger[_0xc008('0x16')](_0xc008('0x56'),_0x3aeeab['stack']);})[_0xc008('0x4a')](function(){var _0x1092cb=require(_0xc008('0x57'))(config[_0xc008('0x6')]['port'],config[_0xc008('0x6')]['ip'],_0x44f42d);_0x1092cb['on']('error',errorHandler);_0x1092cb['on'](_0xc008('0x58'),listeningHandler);_0x1092cb['on'](_0xc008('0x59'),connectionHandler);_0x1092cb['on'](_0xc008('0x4e'),closeHandler);});}main();