Built motion from commit (unavailable).|2.5.21
[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 _0x9649=['dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup','toJson','root','agicommand','hasOwnProperty','maxRetry','retry','omit','mxCell','source','target','addEdge','value','getSquareProject','createSquareReport','then','catch','indexOf','agi_','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','debug','joinAt','traverseBFS','start','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','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\x20published','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','listening','connection','xml2json','lodash','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','stack','log','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','error','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s'];(function(_0x25a233,_0x1402dd){var _0x48ed17=function(_0x1f5c0b){while(--_0x1f5c0b){_0x25a233['push'](_0x25a233['shift']());}};_0x48ed17(++_0x1402dd);}(_0x9649,0x19f));var _0x9964=function(_0x4f483f,_0x378674){_0x4f483f=_0x4f483f-0x0;var _0x50953d=_0x9649[_0x4f483f];return _0x50953d;};'use strict';var parser=require(_0x9964('0x0'));var _=require(_0x9964('0x1'));var syncho=require(_0x9964('0x2'));var util=require(_0x9964('0x3'));var moment=require('moment');var config=require(_0x9964('0x4'));var logger=require(_0x9964('0x5'))('agi');var utilLicense=require(_0x9964('0x6'));var rpc=require('./rpc');var mailRpc=require(_0x9964('0x7'));var Graph=require(_0x9964('0x8'));var Vertices=require(_0x9964('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x9964('0xa')]=_[_0x9964('0xb')](config[_0x9964('0xa')],{'ip':_0x9964('0xc'),'port':0x11dd});function connectionHandler(_0x4bec88){process[_0x9964('0xd')](function(){syncho(function(){try{setChannelVariables(_0x4bec88);agiHandler(_0x4bec88);}catch(_0x67291b){logger['error'](_0x67291b[_0x9964('0xe')]);}});});}function listeningHandler(){console[_0x9964('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0x9964('0x10')]);logger[_0x9964('0x11')](util[_0x9964('0x12')](_0x9964('0x13'),config[_0x9964('0xa')]['ip'],config['agi'][_0x9964('0x10')]));}function errorHandler(_0x59820a){if(_0x59820a&&_0x59820a[_0x9964('0x14')]&&_0x59820a[_0x9964('0x15')]){logger['error'](util[_0x9964('0x12')](_0x9964('0x16'),_0x59820a['name'],_0x59820a[_0x9964('0x15')]));}else{logger[_0x9964('0x17')](util[_0x9964('0x12')](_0x9964('0x18'),_0x59820a[_0x9964('0xe')]));}}function closeHandler(){logger['info'](util[_0x9964('0x12')](_0x9964('0x19'),this['arg_1'],this[_0x9964('0x1a')],this[_0x9964('0x1b')],this['dnid'],this[_0x9964('0x1c')]));try{createSquareReport(this);}catch(_0x2e7e07){logger[_0x9964('0x17')](_0x2e7e07[_0x9964('0xe')]);}}function timeoutHandler(){logger['info'](util[_0x9964('0x12')](_0x9964('0x1d'),this['arg_1'],this[_0x9964('0x1a')],this[_0x9964('0x1b')],this[_0x9964('0x1e')],this[_0x9964('0x1c')]));}function hangupHandler(){logger[_0x9964('0x11')](util[_0x9964('0x12')](_0x9964('0x1f'),this[_0x9964('0x20')],this[_0x9964('0x1a')],this[_0x9964('0x1b')],this['dnid'],this[_0x9964('0x1c')]));this[_0x9964('0x21')]=!![];}function getRoot(_0x4c479f){return parser[_0x9964('0x22')](_0x4c479f,{'object':!![]})['mxGraphModel'][_0x9964('0x23')];}function addVertex(_0xdc3ba,_0x1c5e34,_0x167525){_0x1c5e34[_0x9964('0x24')]=_0x167525;if(_0x1c5e34[_0x9964('0x25')]('retry')){_0x1c5e34[_0x9964('0x26')]=parseInt(_0x1c5e34[_0x9964('0x27')],0xa);}_0xdc3ba['addVertex'](_[_0x9964('0x28')](_0x1c5e34,_0x9964('0x29')));}function initGraph(_0x196812,_0x1399e0){var _0x26cd95=new Graph();for(var _0x5a5793 in _0x196812){if(_0x196812[_0x9964('0x25')](_0x5a5793)){if(_['isArray'](_0x196812[_0x5a5793])){for(var _0x44cb60=0x0;_0x44cb60<_0x196812[_0x5a5793]['length'];_0x44cb60+=0x1){addVertex(_0x26cd95,_0x196812[_0x5a5793][_0x44cb60],_0x5a5793);}}else{addVertex(_0x26cd95,_0x196812[_0x5a5793],_0x5a5793);}}}for(var _0x17b29f=0x0;_0x17b29f<_0x1399e0['length'];_0x17b29f+=0x1){if(_0x1399e0[_0x17b29f][_0x9964('0x2a')]&&_0x1399e0[_0x17b29f][_0x9964('0x2b')]){_0x26cd95[_0x9964('0x2c')](_0x1399e0[_0x17b29f][_0x9964('0x2a')],_0x1399e0[_0x17b29f][_0x9964('0x2b')],_0x1399e0[_0x17b29f][_0x9964('0x2d')]);}}return _0x26cd95;}function getSquareProject(_0x146cf2,_0x2f6068){rpc[_0x9964('0x2e')](_0x146cf2)['then'](function(_0x498014){_0x2f6068(null,_0x498014);})['catch'](function(_0x483092){_0x2f6068(null,_0x483092);});}function createSquareReport(_0x36220b,_0x31398d){rpc[_0x9964('0x2f')](_0x36220b)[_0x9964('0x30')](function(_0x1a3698){if(_0x31398d){_0x31398d(null,_0x1a3698);}})[_0x9964('0x31')](function(_0x17a244){if(_0x31398d){_0x31398d(null,_0x17a244);}});}function setChannelVariables(_0x9d4eaf){for(var _0x228d46 in _0x9d4eaf){if(_0x9d4eaf['hasOwnProperty'](_0x228d46)){if(_0x228d46[_0x9964('0x32')](_0x9964('0x33'))===0x0){_0x9d4eaf[_0x228d46['substring'](0x4)]=_0x9d4eaf[_0x228d46];delete _0x9d4eaf[_0x228d46];}}}}function getLogFromObject(_0xbd2537){return util[_0x9964('0x34')](_0xbd2537,{'showHidden':![],'depth':null});}function agiHandler(_0x3e5154){var _0x257430,_0x5c13ea,_0x55b7a0,_0x445be2,_0x4e517c;logger['debug'](_0x9964('0x35'),JSON[_0x9964('0x36')](_0x3e5154,null,0x2));logger['info'](util['format'](_0x9964('0x37'),_0x3e5154[_0x9964('0x20')],_0x3e5154['calleridname'],_0x3e5154[_0x9964('0x1b')],_0x3e5154['dnid'],_0x3e5154['uniqueid']));_0x3e5154['on']('error',errorHandler);_0x3e5154['on'](_0x9964('0x38'),closeHandler);_0x3e5154['on'](_0x9964('0x39'),timeoutHandler);_0x3e5154[_0x9964('0x21')]=![];_0x3e5154['on'](_0x9964('0x3a'),hangupHandler);var _0x2cdbbc=getSquareProject[_0x9964('0x3b')](null,_0x3e5154[_0x9964('0x20')]);if(_0x2cdbbc){if(_0x2cdbbc[_0x9964('0x3c')]){_0x257430=getRoot(_0x2cdbbc[_0x9964('0x3c')]);if(_0x257430&&_0x257430['start']){logger[_0x9964('0x3d')](_0x9964('0x23'),JSON[_0x9964('0x36')](_0x257430,null,0x2));_0x3e5154[_0x9964('0x3e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5c13ea=initGraph(_[_0x9964('0x28')](_0x257430,_0x9964('0x29')),_0x257430[_0x9964('0x29')]);_0x55b7a0=new Vertices(_0x3e5154,rpc,mailRpc);logger[_0x9964('0x11')](util[_0x9964('0x12')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e5154[_0x9964('0x20')],_0x3e5154[_0x9964('0x1a')],_0x3e5154[_0x9964('0x1b')],_0x3e5154[_0x9964('0x1e')],_0x3e5154[_0x9964('0x1c')]));_0x5c13ea[_0x9964('0x3f')](_0x257430[_0x9964('0x40')]['id'],function(_0x178f52){try{_0x178f52=_0x55b7a0[_0x9964('0x41')](_0x178f52);logger[_0x9964('0x3d')](_0x9964('0x42'),JSON[_0x9964('0x36')](_0x178f52,null,0x2));if(_0x178f52[_0x9964('0x24')]===_0x9964('0x43')){logger[_0x9964('0x11')](_0x9964('0x44'));_0x3e5154['context']=_0x178f52[_0x9964('0x45')]||_0x3e5154['context'];_0x3e5154[_0x9964('0x46')]=_0x178f52[_0x9964('0x46')];_0x3e5154[_0x9964('0x47')]=_0x178f52['priority']?_0x178f52[_0x9964('0x47')]-0x1:0x1;return null;}else if(_0x178f52&&_0x55b7a0[_0x178f52['agicommand']]){_0x4e517c=_0x55b7a0[_0x178f52[_0x9964('0x24')]](_0x178f52);logger['info'](_0x9964('0x48'),JSON[_0x9964('0x36')](_0x4e517c,null,0x2));if(_0x4e517c&&_0x4e517c[_0x9964('0x49')]===AGI_CODE_SUCCESS&&_0x4e517c[_0x9964('0x4a')]!==AGI_RESULT_ERROR&&!_0x3e5154[_0x9964('0x21')]){logger[_0x9964('0x3d')](_0x9964('0x48'),getLogFromObject(_0x4e517c));return _[_0x9964('0x4b')](_0x4e517c['result'])?null:_0x4e517c[_0x9964('0x4a')][_0x9964('0x4c')]();}else{logger[_0x9964('0x17')](_0x9964('0x48'),getLogFromObject(_0x4e517c));return null;}}else{logger[_0x9964('0x17')](_0x9964('0x4d'));return null;}}catch(_0xc717aa){logger[_0x9964('0x17')](_0xc717aa[_0x9964('0xe')]);return null;}});if(_0x257430[_0x9964('0x4e')]){logger['info'](util['format'](_0x9964('0x4f'),_0x3e5154['arg_1'],_0x3e5154[_0x9964('0x1a')],_0x3e5154['callerid'],_0x3e5154['dnid'],_0x3e5154['uniqueid']));_0x5c13ea[_0x9964('0x3f')](_0x257430[_0x9964('0x4e')]['id'],function(_0x3e4a96){try{_0x3e4a96=_0x55b7a0['clear'](_0x3e4a96);logger['debug'](_0x9964('0x42'),JSON['stringify'](_0x3e4a96,null,0x2));if(_0x3e4a96&&_0x55b7a0[_0x3e4a96[_0x9964('0x24')]]){_0x4e517c=_0x55b7a0[_0x3e4a96[_0x9964('0x24')]](_0x3e4a96);if(_0x4e517c){logger[_0x9964('0x3d')](_0x9964('0x48'),getLogFromObject(_0x4e517c));return _[_0x9964('0x4b')](_0x4e517c[_0x9964('0x4a')])?null:_0x4e517c['result'][_0x9964('0x4c')]();}else{logger[_0x9964('0x17')](_0x9964('0x48'),getLogFromObject(_0x4e517c));return null;}}else{logger[_0x9964('0x17')](_0x9964('0x4d'));return null;}}catch(_0x506c24){logger[_0x9964('0x17')](_0x506c24[_0x9964('0xe')]);return null;}});}logger[_0x9964('0x11')](util['format'](_0x9964('0x50'),_0x3e5154[_0x9964('0x20')],_0x3e5154[_0x9964('0x1a')],_0x3e5154[_0x9964('0x1b')],_0x3e5154[_0x9964('0x1e')],_0x3e5154[_0x9964('0x1c')]));logger[_0x9964('0x11')](util[_0x9964('0x12')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x3e5154[_0x9964('0x45')],_0x3e5154['extension'],parseInt(_0x3e5154['priority'],0xa)+0x1));_0x3e5154[_0x9964('0x51')](_0x3e5154['context'],_0x3e5154[_0x9964('0x46')],parseInt(_0x3e5154[_0x9964('0x47')],0xa)+0x1);_0x3e5154[_0x9964('0x38')]();}}else{logger['error'](util[_0x9964('0x12')](_0x9964('0x52'),_0x3e5154[_0x9964('0x20')]));_0x3e5154[_0x9964('0x51')](_0x3e5154[_0x9964('0x45')],_0x3e5154[_0x9964('0x46')],parseInt(_0x3e5154[_0x9964('0x47')],0xa)+0x1);_0x3e5154[_0x9964('0x38')]();}}else{logger[_0x9964('0x17')](util['format'](_0x9964('0x53'),_0x3e5154['arg_1']));_0x3e5154[_0x9964('0x51')](_0x3e5154[_0x9964('0x45')],_0x3e5154[_0x9964('0x46')],parseInt(_0x3e5154['priority'],0xa)+0x1);_0x3e5154[_0x9964('0x38')]();}}function main(){var _0x1874f1;return utilLicense[_0x9964('0x54')]()[_0x9964('0x30')](function(_0xaf7e23){if(_0xaf7e23){if(_0xaf7e23['voice']){if(_0xaf7e23[_0x9964('0x55')]&&_0xaf7e23[_0x9964('0x55')]>0x0){logger[_0x9964('0x11')](util[_0x9964('0x12')](_0x9964('0x56'),_0xaf7e23['callysquare']));_0x1874f1=_0xaf7e23['callysquare'];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x9964('0x11')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x1874f1=-0x1;}}})['catch'](function(_0x5b8892){logger[_0x9964('0x17')]('[LICENSE]',_0x5b8892[_0x9964('0xe')]);})[_0x9964('0x4e')](function(){var _0x464ab1=require('./server')(config[_0x9964('0xa')]['port'],config['agi']['ip'],_0x1874f1);_0x464ab1['on'](_0x9964('0x17'),errorHandler);_0x464ab1['on'](_0x9964('0x57'),listeningHandler);_0x464ab1['on'](_0x9964('0x58'),connectionHandler);_0x464ab1['on']('close',closeHandler);});}main();