Built motion from commit 0900f080.|2.5.45
[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 _0x1c15=['toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','length','addEdge','source','target','getSquareProject','then','catch','createSquareReport','indexOf','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','sync','production','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','start','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','toString','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','isUndefined','[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\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','connection','xml2json','lodash','syncho','util','moment','../../config/environment','./rpc','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','message','error','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','callerid','uniqueid','info','evtHangup'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0x1c15,0x94));var _0x51c1=function(_0x1581bc,_0x23b9de){_0x1581bc=_0x1581bc-0x0;var _0x5e7936=_0x1c15[_0x1581bc];return _0x5e7936;};'use strict';var parser=require(_0x51c1('0x0'));var _=require(_0x51c1('0x1'));var syncho=require(_0x51c1('0x2'));var util=require(_0x51c1('0x3'));var moment=require(_0x51c1('0x4'));var config=require(_0x51c1('0x5'));var logger=require('../../config/logger')('agi');var utilLicense=require('../../config/license/util');var rpc=require(_0x51c1('0x6'));var mailRpc=require(_0x51c1('0x7'));var Graph=require(_0x51c1('0x8'));var Vertices=require(_0x51c1('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x51c1('0xa')]=_[_0x51c1('0xb')](config[_0x51c1('0xa')],{'ip':_0x51c1('0xc'),'port':0x11dd});function connectionHandler(_0x1adb59){process[_0x51c1('0xd')](function(){syncho(function(){try{setChannelVariables(_0x1adb59);agiHandler(_0x1adb59);}catch(_0x35caaf){logger['error'](_0x35caaf[_0x51c1('0xe')]);}});});}function listeningHandler(){console[_0x51c1('0xf')](_0x51c1('0x10'),config[_0x51c1('0xa')]['port']);logger['info'](util[_0x51c1('0x11')](_0x51c1('0x12'),config[_0x51c1('0xa')]['ip'],config[_0x51c1('0xa')][_0x51c1('0x13')]));}function errorHandler(_0x30a562){if(_0x30a562&&_0x30a562['name']&&_0x30a562[_0x51c1('0x14')]){logger[_0x51c1('0x15')](util['format'](_0x51c1('0x16'),_0x30a562['name'],_0x30a562[_0x51c1('0x14')]));}else{logger[_0x51c1('0x15')](util[_0x51c1('0x11')](_0x51c1('0x17'),_0x30a562[_0x51c1('0xe')]));}}function closeHandler(){logger['info'](util['format'](_0x51c1('0x18'),this[_0x51c1('0x19')],this[_0x51c1('0x1a')],this['callerid'],this[_0x51c1('0x1b')],this['uniqueid']));try{createSquareReport(this);}catch(_0x36803b){logger['error'](_0x36803b['stack']);}}function timeoutHandler(){logger['info'](util[_0x51c1('0x11')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x51c1('0x1a')],this[_0x51c1('0x1c')],this[_0x51c1('0x1b')],this[_0x51c1('0x1d')]));}function hangupHandler(){logger[_0x51c1('0x1e')](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x51c1('0x19')],this[_0x51c1('0x1a')],this['callerid'],this[_0x51c1('0x1b')],this[_0x51c1('0x1d')]));this[_0x51c1('0x1f')]=!![];}function getRoot(_0x3a40ef){return parser[_0x51c1('0x20')](_0x3a40ef,{'object':!![]})[_0x51c1('0x21')][_0x51c1('0x22')];}function addVertex(_0x9b0644,_0x69c7fa,_0x19c41a){_0x69c7fa[_0x51c1('0x23')]=_0x19c41a;if(_0x69c7fa[_0x51c1('0x24')](_0x51c1('0x25'))){_0x69c7fa['maxRetry']=parseInt(_0x69c7fa[_0x51c1('0x25')],0xa);}_0x9b0644[_0x51c1('0x26')](_[_0x51c1('0x27')](_0x69c7fa,_0x51c1('0x28')));}function initGraph(_0x357c53,_0x6b15ac){var _0x33d43a=new Graph();for(var _0x456522 in _0x357c53){if(_0x357c53[_0x51c1('0x24')](_0x456522)){if(_[_0x51c1('0x29')](_0x357c53[_0x456522])){for(var _0x456135=0x0;_0x456135<_0x357c53[_0x456522][_0x51c1('0x2a')];_0x456135+=0x1){addVertex(_0x33d43a,_0x357c53[_0x456522][_0x456135],_0x456522);}}else{addVertex(_0x33d43a,_0x357c53[_0x456522],_0x456522);}}}for(var _0x57f270=0x0;_0x57f270<_0x6b15ac[_0x51c1('0x2a')];_0x57f270+=0x1){if(_0x6b15ac[_0x57f270]['source']&&_0x6b15ac[_0x57f270]['target']){_0x33d43a[_0x51c1('0x2b')](_0x6b15ac[_0x57f270][_0x51c1('0x2c')],_0x6b15ac[_0x57f270][_0x51c1('0x2d')],_0x6b15ac[_0x57f270]['value']);}}return _0x33d43a;}function getSquareProject(_0x49183f,_0x3c1714){rpc[_0x51c1('0x2e')](_0x49183f)[_0x51c1('0x2f')](function(_0x4412ce){_0x3c1714(null,_0x4412ce);})[_0x51c1('0x30')](function(_0x4412d5){_0x3c1714(null,_0x4412d5);});}function createSquareReport(_0xa101b,_0x1a44b7){rpc[_0x51c1('0x31')](_0xa101b)[_0x51c1('0x2f')](function(_0x3383b0){if(_0x1a44b7){_0x1a44b7(null,_0x3383b0);}})['catch'](function(_0x2c07d0){if(_0x1a44b7){_0x1a44b7(null,_0x2c07d0);}});}function setChannelVariables(_0x253f2c){for(var _0x1b8052 in _0x253f2c){if(_0x253f2c[_0x51c1('0x24')](_0x1b8052)){if(_0x1b8052[_0x51c1('0x32')]('agi_')===0x0){_0x253f2c[_0x1b8052[_0x51c1('0x33')](0x4)]=_0x253f2c[_0x1b8052];delete _0x253f2c[_0x1b8052];}}}}function getLogFromObject(_0x54b070){return util['inspect'](_0x54b070,{'showHidden':![],'depth':null});}function agiHandler(_0x566b5c){var _0x196d99,_0x59baf3,_0x5e290b,_0xa44017,_0x297654;logger[_0x51c1('0x34')](_0x51c1('0x35'),JSON[_0x51c1('0x36')](_0x566b5c,null,0x2));logger['info'](util[_0x51c1('0x11')](_0x51c1('0x37'),_0x566b5c['arg_1'],_0x566b5c[_0x51c1('0x1a')],_0x566b5c[_0x51c1('0x1c')],_0x566b5c[_0x51c1('0x1b')],_0x566b5c[_0x51c1('0x1d')]));_0x566b5c['on'](_0x51c1('0x15'),errorHandler);_0x566b5c['on']('close',closeHandler);_0x566b5c['on'](_0x51c1('0x38'),timeoutHandler);_0x566b5c['evtHangup']=![];_0x566b5c['on']('hangup',hangupHandler);var _0x5ddde4=getSquareProject[_0x51c1('0x39')](null,_0x566b5c[_0x51c1('0x19')]);if(_0x5ddde4){if(_0x5ddde4[_0x51c1('0x3a')]){_0x196d99=getRoot(_0x5ddde4['production']);if(_0x196d99&&_0x196d99['start']){logger[_0x51c1('0x34')]('root',JSON[_0x51c1('0x36')](_0x196d99,null,0x2));_0x566b5c[_0x51c1('0x3b')]=moment()['format'](_0x51c1('0x3c'));_0x59baf3=initGraph(_[_0x51c1('0x27')](_0x196d99,'mxCell'),_0x196d99['mxCell']);_0x5e290b=new Vertices(_0x566b5c,rpc,mailRpc);logger[_0x51c1('0x1e')](util['format'](_0x51c1('0x3d'),_0x566b5c[_0x51c1('0x19')],_0x566b5c[_0x51c1('0x1a')],_0x566b5c[_0x51c1('0x1c')],_0x566b5c[_0x51c1('0x1b')],_0x566b5c[_0x51c1('0x1d')]));_0x59baf3[_0x51c1('0x3e')](_0x196d99[_0x51c1('0x3f')]['id'],function(_0x480cf3){try{_0x480cf3=_0x5e290b[_0x51c1('0x40')](_0x480cf3);logger[_0x51c1('0x34')](_0x51c1('0x41'),JSON[_0x51c1('0x36')](_0x480cf3,null,0x2));if(_0x480cf3[_0x51c1('0x23')]===_0x51c1('0x42')){logger[_0x51c1('0x1e')](_0x51c1('0x43'));_0x566b5c[_0x51c1('0x44')]=_0x480cf3[_0x51c1('0x44')]||_0x566b5c[_0x51c1('0x44')];_0x566b5c[_0x51c1('0x45')]=_0x480cf3[_0x51c1('0x45')];_0x566b5c[_0x51c1('0x46')]=_0x480cf3[_0x51c1('0x46')]?_0x480cf3[_0x51c1('0x46')]-0x1:0x1;return null;}else if(_0x480cf3&&_0x5e290b[_0x480cf3[_0x51c1('0x23')]]){_0x297654=_0x5e290b[_0x480cf3[_0x51c1('0x23')]](_0x480cf3);logger[_0x51c1('0x1e')](_0x51c1('0x47'),JSON['stringify'](_0x297654,null,0x2));if(_0x297654&&_0x297654['code']===AGI_CODE_SUCCESS&&_0x297654['result']!==AGI_RESULT_ERROR&&!_0x566b5c['evtHangup']){logger['debug'](_0x51c1('0x47'),getLogFromObject(_0x297654));return _['isUndefined'](_0x297654[_0x51c1('0x48')])?null:_0x297654[_0x51c1('0x48')][_0x51c1('0x49')]();}else{logger[_0x51c1('0x15')](_0x51c1('0x47'),getLogFromObject(_0x297654));return null;}}else{logger[_0x51c1('0x15')](_0x51c1('0x4a'));return null;}}catch(_0x46f26b){logger[_0x51c1('0x15')](_0x46f26b[_0x51c1('0xe')]);return null;}});if(_0x196d99['finally']){logger[_0x51c1('0x1e')](util[_0x51c1('0x11')](_0x51c1('0x4b'),_0x566b5c[_0x51c1('0x19')],_0x566b5c[_0x51c1('0x1a')],_0x566b5c['callerid'],_0x566b5c[_0x51c1('0x1b')],_0x566b5c[_0x51c1('0x1d')]));_0x59baf3[_0x51c1('0x3e')](_0x196d99[_0x51c1('0x4c')]['id'],function(_0x50cef3){try{_0x50cef3=_0x5e290b[_0x51c1('0x40')](_0x50cef3);logger[_0x51c1('0x34')](_0x51c1('0x41'),JSON['stringify'](_0x50cef3,null,0x2));if(_0x50cef3&&_0x5e290b[_0x50cef3[_0x51c1('0x23')]]){_0x297654=_0x5e290b[_0x50cef3[_0x51c1('0x23')]](_0x50cef3);if(_0x297654){logger[_0x51c1('0x34')](_0x51c1('0x47'),getLogFromObject(_0x297654));return _[_0x51c1('0x4d')](_0x297654[_0x51c1('0x48')])?null:_0x297654[_0x51c1('0x48')]['toString']();}else{logger['error'](_0x51c1('0x47'),getLogFromObject(_0x297654));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x2aa2a2){logger[_0x51c1('0x15')](_0x2aa2a2[_0x51c1('0xe')]);return null;}});}logger[_0x51c1('0x1e')](util[_0x51c1('0x11')](_0x51c1('0x4e'),_0x566b5c['arg_1'],_0x566b5c[_0x51c1('0x1a')],_0x566b5c['callerid'],_0x566b5c[_0x51c1('0x1b')],_0x566b5c[_0x51c1('0x1d')]));logger[_0x51c1('0x1e')](util['format'](_0x51c1('0x4f'),_0x566b5c['context'],_0x566b5c[_0x51c1('0x45')],parseInt(_0x566b5c[_0x51c1('0x46')],0xa)+0x1));_0x566b5c[_0x51c1('0x50')](_0x566b5c[_0x51c1('0x44')],_0x566b5c[_0x51c1('0x45')],parseInt(_0x566b5c[_0x51c1('0x46')],0xa)+0x1);_0x566b5c[_0x51c1('0x51')]();}}else{logger[_0x51c1('0x15')](util[_0x51c1('0x11')]('Project\x20%s\x20not\x20published',_0x566b5c[_0x51c1('0x19')]));_0x566b5c[_0x51c1('0x50')](_0x566b5c[_0x51c1('0x44')],_0x566b5c['extension'],parseInt(_0x566b5c[_0x51c1('0x46')],0xa)+0x1);_0x566b5c[_0x51c1('0x51')]();}}else{logger[_0x51c1('0x15')](util[_0x51c1('0x11')](_0x51c1('0x52'),_0x566b5c[_0x51c1('0x19')]));_0x566b5c[_0x51c1('0x50')](_0x566b5c[_0x51c1('0x44')],_0x566b5c['extension'],parseInt(_0x566b5c['priority'],0xa)+0x1);_0x566b5c[_0x51c1('0x51')]();}}function main(){var _0x222433;return utilLicense['getLicense']()['then'](function(_0x2b06d1){if(_0x2b06d1){if(_0x2b06d1['voice']){if(_0x2b06d1['callysquare']&&_0x2b06d1[_0x51c1('0x53')]>0x0){logger[_0x51c1('0x1e')](util[_0x51c1('0x11')](_0x51c1('0x54'),_0x2b06d1['callysquare']));_0x222433=_0x2b06d1[_0x51c1('0x53')];}else{logger[_0x51c1('0x1e')](_0x51c1('0x55'));}}else{logger['info'](_0x51c1('0x56'));_0x222433=-0x1;}}})[_0x51c1('0x30')](function(_0x5c6af1){logger[_0x51c1('0x15')](_0x51c1('0x57'),_0x5c6af1['stack']);})[_0x51c1('0x4c')](function(){var _0xd1b9f9=require(_0x51c1('0x58'))(config[_0x51c1('0xa')][_0x51c1('0x13')],config['agi']['ip'],_0x222433);_0xd1b9f9['on']('error',errorHandler);_0xd1b9f9['on']('listening',listeningHandler);_0xd1b9f9['on'](_0x51c1('0x59'),connectionHandler);_0xd1b9f9['on'](_0x51c1('0x51'),closeHandler);});}main();