Built motion from commit (unavailable).|2.5.12
[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 _0xeec6=['./vertices','127.0.0.1','nextTick','error','stack','log','info','format','name','message','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','uniqueid','calleridname','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','target','source','value','getSquareProject','then','catch','indexOf','agi_','substring','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','sync','production','start','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','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','debug','isUndefined','result','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','toString','[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','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','finally','./server','port','listening','xml2json','lodash','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc'];(function(_0x444084,_0x64104d){var _0xdfb4c2=function(_0x349aa3){while(--_0x349aa3){_0x444084['push'](_0x444084['shift']());}};_0xdfb4c2(++_0x64104d);}(_0xeec6,0x1c2));var _0x6eec=function(_0x33f7e1,_0x48d209){_0x33f7e1=_0x33f7e1-0x0;var _0x23bab4=_0xeec6[_0x33f7e1];return _0x23bab4;};'use strict';var parser=require(_0x6eec('0x0'));var _=require(_0x6eec('0x1'));var syncho=require(_0x6eec('0x2'));var util=require(_0x6eec('0x3'));var moment=require('moment');var config=require(_0x6eec('0x4'));var logger=require(_0x6eec('0x5'))(_0x6eec('0x6'));var utilLicense=require(_0x6eec('0x7'));var rpc=require(_0x6eec('0x8'));var mailRpc=require(_0x6eec('0x9'));var Graph=require('./graph');var Vertices=require(_0x6eec('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x6eec('0x6')]=_['defaults'](config[_0x6eec('0x6')],{'ip':_0x6eec('0xb'),'port':0x11dd});function connectionHandler(_0x3443c2){process[_0x6eec('0xc')](function(){syncho(function(){try{setChannelVariables(_0x3443c2);agiHandler(_0x3443c2);}catch(_0x56e849){logger[_0x6eec('0xd')](_0x56e849[_0x6eec('0xe')]);}});});}function listeningHandler(){console[_0x6eec('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger[_0x6eec('0x10')](util[_0x6eec('0x11')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config[_0x6eec('0x6')]['port']));}function errorHandler(_0x3091d0){if(_0x3091d0&&_0x3091d0[_0x6eec('0x12')]&&_0x3091d0[_0x6eec('0x13')]){logger[_0x6eec('0xd')](util[_0x6eec('0x11')]('[%s]\x20%s',_0x3091d0[_0x6eec('0x12')],_0x3091d0[_0x6eec('0x13')]));}else{logger[_0x6eec('0xd')](util[_0x6eec('0x11')](_0x6eec('0x14'),_0x3091d0[_0x6eec('0xe')]));}}function closeHandler(){logger[_0x6eec('0x10')](util[_0x6eec('0x11')](_0x6eec('0x15'),this[_0x6eec('0x16')],this['calleridname'],this[_0x6eec('0x17')],this['dnid'],this[_0x6eec('0x18')]));try{createSquareReport(this);}catch(_0x45aa3f){logger['error'](_0x45aa3f[_0x6eec('0xe')]);}}function timeoutHandler(){logger[_0x6eec('0x10')](util[_0x6eec('0x11')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x6eec('0x16')],this[_0x6eec('0x19')],this[_0x6eec('0x17')],this[_0x6eec('0x1a')],this[_0x6eec('0x18')]));}function hangupHandler(){logger[_0x6eec('0x10')](util['format'](_0x6eec('0x1b'),this[_0x6eec('0x16')],this[_0x6eec('0x19')],this[_0x6eec('0x17')],this[_0x6eec('0x1a')],this[_0x6eec('0x18')]));this['evtHangup']=!![];}function getRoot(_0x6e40b3){return parser[_0x6eec('0x1c')](_0x6e40b3,{'object':!![]})[_0x6eec('0x1d')][_0x6eec('0x1e')];}function addVertex(_0x409b26,_0x13863c,_0x573249){_0x13863c[_0x6eec('0x1f')]=_0x573249;if(_0x13863c[_0x6eec('0x20')](_0x6eec('0x21'))){_0x13863c[_0x6eec('0x22')]=parseInt(_0x13863c[_0x6eec('0x21')],0xa);}_0x409b26[_0x6eec('0x23')](_[_0x6eec('0x24')](_0x13863c,_0x6eec('0x25')));}function initGraph(_0x316317,_0x58f95c){var _0x1d750c=new Graph();for(var _0x44b31c in _0x316317){if(_0x316317[_0x6eec('0x20')](_0x44b31c)){if(_[_0x6eec('0x26')](_0x316317[_0x44b31c])){for(var _0x4f507e=0x0;_0x4f507e<_0x316317[_0x44b31c][_0x6eec('0x27')];_0x4f507e+=0x1){addVertex(_0x1d750c,_0x316317[_0x44b31c][_0x4f507e],_0x44b31c);}}else{addVertex(_0x1d750c,_0x316317[_0x44b31c],_0x44b31c);}}}for(var _0x3b9b9f=0x0;_0x3b9b9f<_0x58f95c['length'];_0x3b9b9f+=0x1){if(_0x58f95c[_0x3b9b9f]['source']&&_0x58f95c[_0x3b9b9f][_0x6eec('0x28')]){_0x1d750c['addEdge'](_0x58f95c[_0x3b9b9f][_0x6eec('0x29')],_0x58f95c[_0x3b9b9f][_0x6eec('0x28')],_0x58f95c[_0x3b9b9f][_0x6eec('0x2a')]);}}return _0x1d750c;}function getSquareProject(_0x34bdea,_0x15e936){rpc[_0x6eec('0x2b')](_0x34bdea)[_0x6eec('0x2c')](function(_0x33e4a1){_0x15e936(null,_0x33e4a1);})[_0x6eec('0x2d')](function(_0x414f5b){_0x15e936(null,_0x414f5b);});}function createSquareReport(_0x48f66f,_0x383c6b){rpc['createSquareReport'](_0x48f66f)[_0x6eec('0x2c')](function(_0x125bfc){if(_0x383c6b){_0x383c6b(null,_0x125bfc);}})[_0x6eec('0x2d')](function(_0x487de8){if(_0x383c6b){_0x383c6b(null,_0x487de8);}});}function setChannelVariables(_0x57b40b){for(var _0x508735 in _0x57b40b){if(_0x57b40b[_0x6eec('0x20')](_0x508735)){if(_0x508735[_0x6eec('0x2e')](_0x6eec('0x2f'))===0x0){_0x57b40b[_0x508735[_0x6eec('0x30')](0x4)]=_0x57b40b[_0x508735];delete _0x57b40b[_0x508735];}}}}function getLogFromObject(_0x20c794){return util[_0x6eec('0x31')](_0x20c794,{'showHidden':![],'depth':null});}function agiHandler(_0x22e0cb){var _0x167c8d,_0x2bc106,_0x17c90c,_0x1a315f,_0x4382df;logger['debug'](_0x6eec('0x32'),JSON[_0x6eec('0x33')](_0x22e0cb,null,0x2));logger[_0x6eec('0x10')](util['format'](_0x6eec('0x34'),_0x22e0cb[_0x6eec('0x16')],_0x22e0cb[_0x6eec('0x19')],_0x22e0cb[_0x6eec('0x17')],_0x22e0cb[_0x6eec('0x1a')],_0x22e0cb[_0x6eec('0x18')]));_0x22e0cb['on']('error',errorHandler);_0x22e0cb['on'](_0x6eec('0x35'),closeHandler);_0x22e0cb['on'](_0x6eec('0x36'),timeoutHandler);_0x22e0cb[_0x6eec('0x37')]=![];_0x22e0cb['on']('hangup',hangupHandler);var _0x53acd9=getSquareProject[_0x6eec('0x38')](null,_0x22e0cb[_0x6eec('0x16')]);if(_0x53acd9){if(_0x53acd9[_0x6eec('0x39')]){_0x167c8d=getRoot(_0x53acd9[_0x6eec('0x39')]);if(_0x167c8d&&_0x167c8d[_0x6eec('0x3a')]){logger['debug'](_0x6eec('0x1e'),JSON[_0x6eec('0x33')](_0x167c8d,null,0x2));_0x22e0cb[_0x6eec('0x3b')]=moment()[_0x6eec('0x11')](_0x6eec('0x3c'));_0x2bc106=initGraph(_[_0x6eec('0x24')](_0x167c8d,_0x6eec('0x25')),_0x167c8d[_0x6eec('0x25')]);_0x17c90c=new Vertices(_0x22e0cb,rpc,mailRpc);logger['info'](util[_0x6eec('0x11')](_0x6eec('0x3d'),_0x22e0cb['arg_1'],_0x22e0cb['calleridname'],_0x22e0cb[_0x6eec('0x17')],_0x22e0cb[_0x6eec('0x1a')],_0x22e0cb[_0x6eec('0x18')]));_0x2bc106[_0x6eec('0x3e')](_0x167c8d['start']['id'],function(_0x5dfbac){try{_0x5dfbac=_0x17c90c[_0x6eec('0x3f')](_0x5dfbac);logger['debug']('vertex',JSON[_0x6eec('0x33')](_0x5dfbac,null,0x2));if(_0x5dfbac[_0x6eec('0x1f')]===_0x6eec('0x40')){logger[_0x6eec('0x10')](_0x6eec('0x41'));_0x22e0cb['context']=_0x5dfbac[_0x6eec('0x42')]||_0x22e0cb[_0x6eec('0x42')];_0x22e0cb['extension']=_0x5dfbac[_0x6eec('0x43')];_0x22e0cb[_0x6eec('0x44')]=_0x5dfbac['priority']?_0x5dfbac[_0x6eec('0x44')]-0x1:0x1;return null;}else if(_0x5dfbac&&_0x17c90c[_0x5dfbac[_0x6eec('0x1f')]]){_0x4382df=_0x17c90c[_0x5dfbac['agicommand']](_0x5dfbac);logger[_0x6eec('0x10')](_0x6eec('0x45'),JSON[_0x6eec('0x33')](_0x4382df,null,0x2));if(_0x4382df&&_0x4382df[_0x6eec('0x46')]===AGI_CODE_SUCCESS&&_0x4382df['result']!==AGI_RESULT_ERROR&&!_0x22e0cb[_0x6eec('0x37')]){logger[_0x6eec('0x47')](_0x6eec('0x45'),getLogFromObject(_0x4382df));return _[_0x6eec('0x48')](_0x4382df[_0x6eec('0x49')])?null:_0x4382df['result']['toString']();}else{logger[_0x6eec('0xd')](_0x6eec('0x45'),getLogFromObject(_0x4382df));return null;}}else{logger[_0x6eec('0xd')](_0x6eec('0x4a'));return null;}}catch(_0x44c7b8){logger['error'](_0x44c7b8[_0x6eec('0xe')]);return null;}});if(_0x167c8d['finally']){logger[_0x6eec('0x10')](util[_0x6eec('0x11')](_0x6eec('0x4b'),_0x22e0cb['arg_1'],_0x22e0cb[_0x6eec('0x19')],_0x22e0cb[_0x6eec('0x17')],_0x22e0cb[_0x6eec('0x1a')],_0x22e0cb[_0x6eec('0x18')]));_0x2bc106[_0x6eec('0x3e')](_0x167c8d['finally']['id'],function(_0x176392){try{_0x176392=_0x17c90c['clear'](_0x176392);logger['debug'](_0x6eec('0x4c'),JSON['stringify'](_0x176392,null,0x2));if(_0x176392&&_0x17c90c[_0x176392[_0x6eec('0x1f')]]){_0x4382df=_0x17c90c[_0x176392[_0x6eec('0x1f')]](_0x176392);if(_0x4382df){logger[_0x6eec('0x47')]('response',getLogFromObject(_0x4382df));return _['isUndefined'](_0x4382df[_0x6eec('0x49')])?null:_0x4382df[_0x6eec('0x49')][_0x6eec('0x4d')]();}else{logger[_0x6eec('0xd')](_0x6eec('0x45'),getLogFromObject(_0x4382df));return null;}}else{logger[_0x6eec('0xd')](_0x6eec('0x4a'));return null;}}catch(_0x442bca){logger[_0x6eec('0xd')](_0x442bca[_0x6eec('0xe')]);return null;}});}logger['info'](util['format'](_0x6eec('0x4e'),_0x22e0cb[_0x6eec('0x16')],_0x22e0cb[_0x6eec('0x19')],_0x22e0cb['callerid'],_0x22e0cb[_0x6eec('0x1a')],_0x22e0cb[_0x6eec('0x18')]));logger[_0x6eec('0x10')](util[_0x6eec('0x11')](_0x6eec('0x4f'),_0x22e0cb[_0x6eec('0x42')],_0x22e0cb[_0x6eec('0x43')],parseInt(_0x22e0cb[_0x6eec('0x44')],0xa)+0x1));_0x22e0cb['continueAt'](_0x22e0cb[_0x6eec('0x42')],_0x22e0cb[_0x6eec('0x43')],parseInt(_0x22e0cb[_0x6eec('0x44')],0xa)+0x1);_0x22e0cb[_0x6eec('0x35')]();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x22e0cb[_0x6eec('0x16')]));_0x22e0cb[_0x6eec('0x50')](_0x22e0cb[_0x6eec('0x42')],_0x22e0cb[_0x6eec('0x43')],parseInt(_0x22e0cb['priority'],0xa)+0x1);_0x22e0cb['close']();}}else{logger[_0x6eec('0xd')](util[_0x6eec('0x11')](_0x6eec('0x51'),_0x22e0cb['arg_1']));_0x22e0cb[_0x6eec('0x50')](_0x22e0cb[_0x6eec('0x42')],_0x22e0cb[_0x6eec('0x43')],parseInt(_0x22e0cb[_0x6eec('0x44')],0xa)+0x1);_0x22e0cb[_0x6eec('0x35')]();}}function main(){var _0x4624eb;return utilLicense[_0x6eec('0x52')]()[_0x6eec('0x2c')](function(_0x45fed3){if(_0x45fed3){if(_0x45fed3['voice']){if(_0x45fed3[_0x6eec('0x53')]&&_0x45fed3['callysquare']>0x0){logger[_0x6eec('0x10')](util[_0x6eec('0x11')](_0x6eec('0x54'),_0x45fed3[_0x6eec('0x53')]));_0x4624eb=_0x45fed3[_0x6eec('0x53')];}else{logger[_0x6eec('0x10')](_0x6eec('0x55'));}}else{logger['info'](_0x6eec('0x56'));_0x4624eb=-0x1;}}})['catch'](function(_0x172031){logger['error'](_0x6eec('0x57'),_0x172031[_0x6eec('0xe')]);})[_0x6eec('0x58')](function(){var _0x1ae9f4=require(_0x6eec('0x59'))(config[_0x6eec('0x6')][_0x6eec('0x5a')],config[_0x6eec('0x6')]['ip'],_0x4624eb);_0x1ae9f4['on'](_0x6eec('0xd'),errorHandler);_0x1ae9f4['on'](_0x6eec('0x5b'),listeningHandler);_0x1ae9f4['on']('connection',connectionHandler);_0x1ae9f4['on']('close',closeHandler);});}main();