Built motion from commit 25580385.|2.6.2
[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 _0x2907=['addVertex','omit','hasOwnProperty','length','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','close','timeout','hangup','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','stringify','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','[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\x20published','Project\x20%s\x20not\x20found','getLicense','voice','[LICENSE]\x20CHANNELS:\x20%s','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','./server','listening','connection','xml2json','lodash','syncho','util','../../config/environment','agi','../../config/license/util','./rpc','./graph','nextTick','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','name','[%s]\x20%s','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','calleridname','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','mxGraphModel','root','agicommand','retry','maxRetry'];(function(_0x4b3d6e,_0x3c51c8){var _0x2d7765=function(_0x406417){while(--_0x406417){_0x4b3d6e['push'](_0x4b3d6e['shift']());}};_0x2d7765(++_0x3c51c8);}(_0x2907,0xf3));var _0x7290=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x2907[_0x484e36];return _0xafc85d;};'use strict';var parser=require(_0x7290('0x0'));var _=require(_0x7290('0x1'));var syncho=require(_0x7290('0x2'));var util=require(_0x7290('0x3'));var moment=require('moment');var config=require(_0x7290('0x4'));var logger=require('../../config/logger')(_0x7290('0x5'));var utilLicense=require(_0x7290('0x6'));var rpc=require(_0x7290('0x7'));var mailRpc=require('./mailRpc');var Graph=require(_0x7290('0x8'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x7290('0x5')]=_['defaults'](config['agi'],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x2eba22){process[_0x7290('0x9')](function(){syncho(function(){try{setChannelVariables(_0x2eba22);agiHandler(_0x2eba22);}catch(_0x570ecb){logger[_0x7290('0xa')](_0x570ecb['stack']);}});});}function listeningHandler(){console[_0x7290('0xb')](_0x7290('0xc'),config[_0x7290('0x5')][_0x7290('0xd')]);logger[_0x7290('0xe')](util[_0x7290('0xf')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x7290('0x5')]['ip'],config[_0x7290('0x5')][_0x7290('0xd')]));}function errorHandler(_0x17f9af){if(_0x17f9af&&_0x17f9af[_0x7290('0x10')]&&_0x17f9af['message']){logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x11'),_0x17f9af[_0x7290('0x10')],_0x17f9af[_0x7290('0x12')]));}else{logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x13'),_0x17f9af['stack']));}}function closeHandler(){logger['info'](util[_0x7290('0xf')](_0x7290('0x14'),this[_0x7290('0x15')],this[_0x7290('0x16')],this['callerid'],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x318af1){logger[_0x7290('0xa')](_0x318af1['stack']);}}function timeoutHandler(){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x17'),this[_0x7290('0x15')],this['calleridname'],this['callerid'],this[_0x7290('0x18')],this[_0x7290('0x19')]));}function hangupHandler(){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x1a'),this[_0x7290('0x15')],this[_0x7290('0x16')],this['callerid'],this[_0x7290('0x18')],this['uniqueid']));this[_0x7290('0x1b')]=!![];}function getRoot(_0x1b1fc9){return parser['toJson'](_0x1b1fc9,{'object':!![]})[_0x7290('0x1c')][_0x7290('0x1d')];}function addVertex(_0x3546be,_0x3fc3,_0x3aacdf){_0x3fc3[_0x7290('0x1e')]=_0x3aacdf;if(_0x3fc3['hasOwnProperty'](_0x7290('0x1f'))){_0x3fc3[_0x7290('0x20')]=parseInt(_0x3fc3[_0x7290('0x1f')],0xa);}_0x3546be[_0x7290('0x21')](_[_0x7290('0x22')](_0x3fc3,'mxCell'));}function initGraph(_0x188461,_0x11d751){var _0x16918e=new Graph();for(var _0x472779 in _0x188461){if(_0x188461[_0x7290('0x23')](_0x472779)){if(_['isArray'](_0x188461[_0x472779])){for(var _0x135c83=0x0;_0x135c83<_0x188461[_0x472779][_0x7290('0x24')];_0x135c83+=0x1){addVertex(_0x16918e,_0x188461[_0x472779][_0x135c83],_0x472779);}}else{addVertex(_0x16918e,_0x188461[_0x472779],_0x472779);}}}for(var _0x21e55d=0x0;_0x21e55d<_0x11d751['length'];_0x21e55d+=0x1){if(_0x11d751[_0x21e55d][_0x7290('0x25')]&&_0x11d751[_0x21e55d][_0x7290('0x26')]){_0x16918e[_0x7290('0x27')](_0x11d751[_0x21e55d][_0x7290('0x25')],_0x11d751[_0x21e55d][_0x7290('0x26')],_0x11d751[_0x21e55d][_0x7290('0x28')]);}}return _0x16918e;}function getSquareProject(_0x1f76b1,_0x416d02){rpc[_0x7290('0x29')](_0x1f76b1)['then'](function(_0x152ecc){_0x416d02(null,_0x152ecc);})[_0x7290('0x2a')](function(_0x60be08){_0x416d02(null,_0x60be08);});}function createSquareReport(_0x2ddeeb,_0x13207e){rpc[_0x7290('0x2b')](_0x2ddeeb)[_0x7290('0x2c')](function(_0x50748a){if(_0x13207e){_0x13207e(null,_0x50748a);}})['catch'](function(_0x39e4cb){if(_0x13207e){_0x13207e(null,_0x39e4cb);}});}function setChannelVariables(_0x25fc44){for(var _0xf60254 in _0x25fc44){if(_0x25fc44[_0x7290('0x23')](_0xf60254)){if(_0xf60254[_0x7290('0x2d')](_0x7290('0x2e'))===0x0){_0x25fc44[_0xf60254[_0x7290('0x2f')](0x4)]=_0x25fc44[_0xf60254];delete _0x25fc44[_0xf60254];}}}}function getLogFromObject(_0x408dd2){return util['inspect'](_0x408dd2,{'showHidden':![],'depth':null});}function agiHandler(_0x269a27){var _0x50c78d,_0x20e76b,_0x2159ae,_0x5b0476,_0x224c4a;logger[_0x7290('0x30')](_0x7290('0x31'),JSON['stringify'](_0x269a27,null,0x2));logger[_0x7290('0xe')](util['format'](_0x7290('0x32'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27[_0x7290('0x18')],_0x269a27[_0x7290('0x19')]));_0x269a27['on'](_0x7290('0xa'),errorHandler);_0x269a27['on'](_0x7290('0x34'),closeHandler);_0x269a27['on'](_0x7290('0x35'),timeoutHandler);_0x269a27[_0x7290('0x1b')]=![];_0x269a27['on'](_0x7290('0x36'),hangupHandler);var _0x108cfe=getSquareProject[_0x7290('0x37')](null,_0x269a27['arg_1']);if(_0x108cfe){if(_0x108cfe[_0x7290('0x38')]){_0x50c78d=getRoot(_0x108cfe['production']);if(_0x50c78d&&_0x50c78d[_0x7290('0x39')]){logger[_0x7290('0x30')](_0x7290('0x1d'),JSON['stringify'](_0x50c78d,null,0x2));_0x269a27[_0x7290('0x3a')]=moment()[_0x7290('0xf')](_0x7290('0x3b'));_0x20e76b=initGraph(_[_0x7290('0x22')](_0x50c78d,_0x7290('0x3c')),_0x50c78d[_0x7290('0x3c')]);_0x2159ae=new Vertices(_0x269a27,rpc,mailRpc);logger[_0x7290('0xe')](util['format'](_0x7290('0x3d'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27[_0x7290('0x18')],_0x269a27['uniqueid']));_0x20e76b[_0x7290('0x3e')](_0x50c78d[_0x7290('0x39')]['id'],function(_0x32a570){try{_0x32a570=_0x2159ae[_0x7290('0x3f')](_0x32a570);logger[_0x7290('0x30')]('vertex',JSON[_0x7290('0x40')](_0x32a570,null,0x2));if(_0x32a570[_0x7290('0x1e')]===_0x7290('0x41')){logger[_0x7290('0xe')](_0x7290('0x42'));_0x269a27['context']=_0x32a570[_0x7290('0x43')]||_0x269a27[_0x7290('0x43')];_0x269a27[_0x7290('0x44')]=_0x32a570[_0x7290('0x44')];_0x269a27[_0x7290('0x45')]=_0x32a570[_0x7290('0x45')]?_0x32a570[_0x7290('0x45')]-0x1:0x1;return null;}else if(_0x32a570&&_0x2159ae[_0x32a570['agicommand']]){_0x224c4a=_0x2159ae[_0x32a570['agicommand']](_0x32a570);logger[_0x7290('0xe')](_0x7290('0x46'),JSON['stringify'](_0x224c4a,null,0x2));if(_0x224c4a&&_0x224c4a[_0x7290('0x47')]===AGI_CODE_SUCCESS&&_0x224c4a[_0x7290('0x48')]!==AGI_RESULT_ERROR&&!_0x269a27[_0x7290('0x1b')]){logger[_0x7290('0x30')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return _['isUndefined'](_0x224c4a['result'])?null:_0x224c4a[_0x7290('0x48')][_0x7290('0x49')]();}else{logger[_0x7290('0xa')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return null;}}else{logger['error'](_0x7290('0x4a'));return null;}}catch(_0x129f8b){logger[_0x7290('0xa')](_0x129f8b[_0x7290('0x4b')]);return null;}});if(_0x50c78d[_0x7290('0x4c')]){logger['info'](util[_0x7290('0xf')](_0x7290('0x4d'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27['callerid'],_0x269a27['dnid'],_0x269a27[_0x7290('0x19')]));_0x20e76b[_0x7290('0x3e')](_0x50c78d[_0x7290('0x4c')]['id'],function(_0x902eab){try{_0x902eab=_0x2159ae['clear'](_0x902eab);logger[_0x7290('0x30')](_0x7290('0x4e'),JSON['stringify'](_0x902eab,null,0x2));if(_0x902eab&&_0x2159ae[_0x902eab[_0x7290('0x1e')]]){_0x224c4a=_0x2159ae[_0x902eab[_0x7290('0x1e')]](_0x902eab);if(_0x224c4a){logger[_0x7290('0x30')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return _['isUndefined'](_0x224c4a[_0x7290('0x48')])?null:_0x224c4a[_0x7290('0x48')]['toString']();}else{logger[_0x7290('0xa')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return null;}}else{logger['error'](_0x7290('0x4a'));return null;}}catch(_0x1f2a88){logger[_0x7290('0xa')](_0x1f2a88[_0x7290('0x4b')]);return null;}});}logger['info'](util[_0x7290('0xf')](_0x7290('0x4f'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27['dnid'],_0x269a27['uniqueid']));logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x50'),_0x269a27['context'],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1);_0x269a27['close']();}}else{logger['error'](util[_0x7290('0xf')](_0x7290('0x52'),_0x269a27['arg_1']));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1);_0x269a27[_0x7290('0x34')]();}}else{logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x53'),_0x269a27[_0x7290('0x15')]));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27['priority'],0xa)+0x1);_0x269a27[_0x7290('0x34')]();}}function main(){var _0x305374;return utilLicense[_0x7290('0x54')]()[_0x7290('0x2c')](function(_0x170658){if(_0x170658){if(_0x170658[_0x7290('0x55')]){if(_0x170658['callysquare']&&_0x170658['callysquare']>0x0){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x56'),_0x170658[_0x7290('0x57')]));_0x305374=_0x170658[_0x7290('0x57')];}else{logger[_0x7290('0xe')](_0x7290('0x58'));}}else{logger[_0x7290('0xe')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x305374=-0x1;}}})[_0x7290('0x2a')](function(_0x30d0ab){logger[_0x7290('0xa')]('[LICENSE]',_0x30d0ab[_0x7290('0x4b')]);})[_0x7290('0x4c')](function(){var _0xf862fe=require(_0x7290('0x59'))(config[_0x7290('0x5')][_0x7290('0xd')],config[_0x7290('0x5')]['ip'],_0x305374);_0xf862fe['on'](_0x7290('0xa'),errorHandler);_0xf862fe['on'](_0x7290('0x5a'),listeningHandler);_0xf862fe['on'](_0x7290('0x5b'),connectionHandler);_0xf862fe['on'](_0x7290('0x34'),closeHandler);});}main();