Built motion from commit (unavailable).|2.5.29
[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 _0x938d=['finally','toString','[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','close','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','xml2json','lodash','util','moment','../../config/environment','../../config/license/util','./rpc','./mailRpc','./vertices','agi','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','[%s]\x20%s','[ERROR]\x20%s','arg_1','calleridname','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','mxCell','isArray','length','source','target','addEdge','value','then','catch','createSquareReport','indexOf','agi_','substring','inspect','debug','variables','timeout','hangup','production','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','omit','[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','code','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'];(function(_0x3f1524,_0x5f2192){var _0x3afb12=function(_0x427075){while(--_0x427075){_0x3f1524['push'](_0x3f1524['shift']());}};_0x3afb12(++_0x5f2192);}(_0x938d,0x122));var _0xd938=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x938d[_0x3dd15e];return _0x231fd0;};'use strict';var parser=require(_0xd938('0x0'));var _=require(_0xd938('0x1'));var syncho=require('syncho');var util=require(_0xd938('0x2'));var moment=require(_0xd938('0x3'));var config=require(_0xd938('0x4'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0xd938('0x5'));var rpc=require(_0xd938('0x6'));var mailRpc=require(_0xd938('0x7'));var Graph=require('./graph');var Vertices=require(_0xd938('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xd938('0x9')]=_[_0xd938('0xa')](config[_0xd938('0x9')],{'ip':_0xd938('0xb'),'port':0x11dd});function connectionHandler(_0x419e0b){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x419e0b);agiHandler(_0x419e0b);}catch(_0x10a6b7){logger[_0xd938('0xc')](_0x10a6b7[_0xd938('0xd')]);}});});}function listeningHandler(){console[_0xd938('0xe')](_0xd938('0xf'),config[_0xd938('0x9')]['port']);logger[_0xd938('0x10')](util[_0xd938('0x11')](_0xd938('0x12'),config[_0xd938('0x9')]['ip'],config[_0xd938('0x9')][_0xd938('0x13')]));}function errorHandler(_0x40218d){if(_0x40218d&&_0x40218d[_0xd938('0x14')]&&_0x40218d[_0xd938('0x15')]){logger[_0xd938('0xc')](util[_0xd938('0x11')](_0xd938('0x16'),_0x40218d[_0xd938('0x14')],_0x40218d['message']));}else{logger['error'](util['format'](_0xd938('0x17'),_0x40218d[_0xd938('0xd')]));}}function closeHandler(){logger[_0xd938('0x10')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xd938('0x18')],this[_0xd938('0x19')],this['callerid'],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x352648){logger[_0xd938('0xc')](_0x352648[_0xd938('0xd')]);}}function timeoutHandler(){logger['info'](util[_0xd938('0x11')](_0xd938('0x1a'),this[_0xd938('0x18')],this[_0xd938('0x19')],this[_0xd938('0x1b')],this['dnid'],this[_0xd938('0x1c')]));}function hangupHandler(){logger['info'](util['format'](_0xd938('0x1d'),this['arg_1'],this[_0xd938('0x19')],this[_0xd938('0x1b')],this[_0xd938('0x1e')],this[_0xd938('0x1c')]));this[_0xd938('0x1f')]=!![];}function getRoot(_0x589229){return parser[_0xd938('0x20')](_0x589229,{'object':!![]})[_0xd938('0x21')][_0xd938('0x22')];}function addVertex(_0x3afd46,_0x2a1b2f,_0x28f56a){_0x2a1b2f[_0xd938('0x23')]=_0x28f56a;if(_0x2a1b2f[_0xd938('0x24')](_0xd938('0x25'))){_0x2a1b2f[_0xd938('0x26')]=parseInt(_0x2a1b2f[_0xd938('0x25')],0xa);}_0x3afd46['addVertex'](_['omit'](_0x2a1b2f,_0xd938('0x27')));}function initGraph(_0x316835,_0x3d98b9){var _0x5f2a67=new Graph();for(var _0x10044c in _0x316835){if(_0x316835['hasOwnProperty'](_0x10044c)){if(_[_0xd938('0x28')](_0x316835[_0x10044c])){for(var _0x5e931d=0x0;_0x5e931d<_0x316835[_0x10044c][_0xd938('0x29')];_0x5e931d+=0x1){addVertex(_0x5f2a67,_0x316835[_0x10044c][_0x5e931d],_0x10044c);}}else{addVertex(_0x5f2a67,_0x316835[_0x10044c],_0x10044c);}}}for(var _0x4972b5=0x0;_0x4972b5<_0x3d98b9[_0xd938('0x29')];_0x4972b5+=0x1){if(_0x3d98b9[_0x4972b5][_0xd938('0x2a')]&&_0x3d98b9[_0x4972b5][_0xd938('0x2b')]){_0x5f2a67[_0xd938('0x2c')](_0x3d98b9[_0x4972b5]['source'],_0x3d98b9[_0x4972b5][_0xd938('0x2b')],_0x3d98b9[_0x4972b5][_0xd938('0x2d')]);}}return _0x5f2a67;}function getSquareProject(_0x207549,_0x1ec5e5){rpc['getSquareProject'](_0x207549)[_0xd938('0x2e')](function(_0x350e6e){_0x1ec5e5(null,_0x350e6e);})[_0xd938('0x2f')](function(_0x4bf006){_0x1ec5e5(null,_0x4bf006);});}function createSquareReport(_0x3ff1ce,_0x2d8fc0){rpc[_0xd938('0x30')](_0x3ff1ce)[_0xd938('0x2e')](function(_0x3ea8af){if(_0x2d8fc0){_0x2d8fc0(null,_0x3ea8af);}})[_0xd938('0x2f')](function(_0x805c54){if(_0x2d8fc0){_0x2d8fc0(null,_0x805c54);}});}function setChannelVariables(_0x327aaa){for(var _0x58c21d in _0x327aaa){if(_0x327aaa[_0xd938('0x24')](_0x58c21d)){if(_0x58c21d[_0xd938('0x31')](_0xd938('0x32'))===0x0){_0x327aaa[_0x58c21d[_0xd938('0x33')](0x4)]=_0x327aaa[_0x58c21d];delete _0x327aaa[_0x58c21d];}}}}function getLogFromObject(_0x5e2cbf){return util[_0xd938('0x34')](_0x5e2cbf,{'showHidden':![],'depth':null});}function agiHandler(_0x101765){var _0x45ad58,_0xb3a114,_0x503190,_0x29a978,_0x326e04;logger[_0xd938('0x35')](_0xd938('0x36'),JSON['stringify'](_0x101765,null,0x2));logger[_0xd938('0x10')](util[_0xd938('0x11')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x101765[_0xd938('0x18')],_0x101765['calleridname'],_0x101765['callerid'],_0x101765[_0xd938('0x1e')],_0x101765[_0xd938('0x1c')]));_0x101765['on'](_0xd938('0xc'),errorHandler);_0x101765['on']('close',closeHandler);_0x101765['on'](_0xd938('0x37'),timeoutHandler);_0x101765[_0xd938('0x1f')]=![];_0x101765['on'](_0xd938('0x38'),hangupHandler);var _0x20708e=getSquareProject['sync'](null,_0x101765['arg_1']);if(_0x20708e){if(_0x20708e[_0xd938('0x39')]){_0x45ad58=getRoot(_0x20708e[_0xd938('0x39')]);if(_0x45ad58&&_0x45ad58['start']){logger['debug']('root',JSON[_0xd938('0x3a')](_0x45ad58,null,0x2));_0x101765[_0xd938('0x3b')]=moment()[_0xd938('0x11')](_0xd938('0x3c'));_0xb3a114=initGraph(_[_0xd938('0x3d')](_0x45ad58,_0xd938('0x27')),_0x45ad58['mxCell']);_0x503190=new Vertices(_0x101765,rpc,mailRpc);logger[_0xd938('0x10')](util[_0xd938('0x11')](_0xd938('0x3e'),_0x101765['arg_1'],_0x101765['calleridname'],_0x101765[_0xd938('0x1b')],_0x101765['dnid'],_0x101765[_0xd938('0x1c')]));_0xb3a114[_0xd938('0x3f')](_0x45ad58[_0xd938('0x40')]['id'],function(_0x449f1a){try{_0x449f1a=_0x503190[_0xd938('0x41')](_0x449f1a);logger[_0xd938('0x35')](_0xd938('0x42'),JSON['stringify'](_0x449f1a,null,0x2));if(_0x449f1a[_0xd938('0x23')]===_0xd938('0x43')){logger[_0xd938('0x10')](_0xd938('0x44'));_0x101765[_0xd938('0x45')]=_0x449f1a[_0xd938('0x45')]||_0x101765[_0xd938('0x45')];_0x101765['extension']=_0x449f1a[_0xd938('0x46')];_0x101765[_0xd938('0x47')]=_0x449f1a['priority']?_0x449f1a[_0xd938('0x47')]-0x1:0x1;return null;}else if(_0x449f1a&&_0x503190[_0x449f1a[_0xd938('0x23')]]){_0x326e04=_0x503190[_0x449f1a['agicommand']](_0x449f1a);logger[_0xd938('0x10')](_0xd938('0x48'),JSON[_0xd938('0x3a')](_0x326e04,null,0x2));if(_0x326e04&&_0x326e04[_0xd938('0x49')]===AGI_CODE_SUCCESS&&_0x326e04['result']!==AGI_RESULT_ERROR&&!_0x101765['evtHangup']){logger[_0xd938('0x35')](_0xd938('0x48'),getLogFromObject(_0x326e04));return _[_0xd938('0x4a')](_0x326e04[_0xd938('0x4b')])?null:_0x326e04[_0xd938('0x4b')]['toString']();}else{logger[_0xd938('0xc')](_0xd938('0x48'),getLogFromObject(_0x326e04));return null;}}else{logger['error'](_0xd938('0x4c'));return null;}}catch(_0x5d18d5){logger[_0xd938('0xc')](_0x5d18d5['stack']);return null;}});if(_0x45ad58['finally']){logger[_0xd938('0x10')](util['format'](_0xd938('0x4d'),_0x101765[_0xd938('0x18')],_0x101765['calleridname'],_0x101765[_0xd938('0x1b')],_0x101765[_0xd938('0x1e')],_0x101765['uniqueid']));_0xb3a114[_0xd938('0x3f')](_0x45ad58[_0xd938('0x4e')]['id'],function(_0x4d3687){try{_0x4d3687=_0x503190[_0xd938('0x41')](_0x4d3687);logger[_0xd938('0x35')](_0xd938('0x42'),JSON[_0xd938('0x3a')](_0x4d3687,null,0x2));if(_0x4d3687&&_0x503190[_0x4d3687[_0xd938('0x23')]]){_0x326e04=_0x503190[_0x4d3687[_0xd938('0x23')]](_0x4d3687);if(_0x326e04){logger[_0xd938('0x35')]('response',getLogFromObject(_0x326e04));return _[_0xd938('0x4a')](_0x326e04[_0xd938('0x4b')])?null:_0x326e04[_0xd938('0x4b')][_0xd938('0x4f')]();}else{logger[_0xd938('0xc')](_0xd938('0x48'),getLogFromObject(_0x326e04));return null;}}else{logger['error'](_0xd938('0x4c'));return null;}}catch(_0x2fedee){logger[_0xd938('0xc')](_0x2fedee[_0xd938('0xd')]);return null;}});}logger[_0xd938('0x10')](util[_0xd938('0x11')](_0xd938('0x50'),_0x101765[_0xd938('0x18')],_0x101765[_0xd938('0x19')],_0x101765[_0xd938('0x1b')],_0x101765[_0xd938('0x1e')],_0x101765[_0xd938('0x1c')]));logger['info'](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x101765[_0xd938('0x45')],_0x101765[_0xd938('0x46')],parseInt(_0x101765[_0xd938('0x47')],0xa)+0x1));_0x101765[_0xd938('0x51')](_0x101765[_0xd938('0x45')],_0x101765[_0xd938('0x46')],parseInt(_0x101765[_0xd938('0x47')],0xa)+0x1);_0x101765['close']();}}else{logger['error'](util[_0xd938('0x11')](_0xd938('0x52'),_0x101765[_0xd938('0x18')]));_0x101765['continueAt'](_0x101765[_0xd938('0x45')],_0x101765[_0xd938('0x46')],parseInt(_0x101765['priority'],0xa)+0x1);_0x101765['close']();}}else{logger[_0xd938('0xc')](util['format'](_0xd938('0x53'),_0x101765[_0xd938('0x18')]));_0x101765[_0xd938('0x51')](_0x101765[_0xd938('0x45')],_0x101765[_0xd938('0x46')],parseInt(_0x101765[_0xd938('0x47')],0xa)+0x1);_0x101765[_0xd938('0x54')]();}}function main(){var _0x491d8a;return utilLicense[_0xd938('0x55')]()[_0xd938('0x2e')](function(_0xc21c44){if(_0xc21c44){if(_0xc21c44['voice']){if(_0xc21c44[_0xd938('0x56')]&&_0xc21c44[_0xd938('0x56')]>0x0){logger[_0xd938('0x10')](util[_0xd938('0x11')](_0xd938('0x57'),_0xc21c44['callysquare']));_0x491d8a=_0xc21c44[_0xd938('0x56')];}else{logger[_0xd938('0x10')](_0xd938('0x58'));}}else{logger[_0xd938('0x10')](_0xd938('0x59'));_0x491d8a=-0x1;}}})['catch'](function(_0x417820){logger[_0xd938('0xc')](_0xd938('0x5a'),_0x417820[_0xd938('0xd')]);})[_0xd938('0x4e')](function(){var _0x3ef705=require(_0xd938('0x5b'))(config['agi'][_0xd938('0x13')],config[_0xd938('0x9')]['ip'],_0x491d8a);_0x3ef705['on'](_0xd938('0xc'),errorHandler);_0x3ef705['on']('listening',listeningHandler);_0x3ef705['on']('connection',connectionHandler);_0x3ef705['on'](_0xd938('0x54'),closeHandler);});}main();