b147a26a69a1cbcfbf546896009a9cc219f3793f
[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 _0xa41a=['vertex','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','isUndefined','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','catch','./server','listening','xml2json','lodash','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./vertices','127.0.0.1','error','stack','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','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','retry','addVertex','isArray','length','source','target','addEdge','value','then','createSquareReport','indexOf','substring','inspect','debug','stringify','hangup','sync','production','start','root','joinAt','omit','mxCell','calleridname','traverseBFS','clear'];(function(_0x590a38,_0x2bc65c){var _0xf36626=function(_0x551cd1){while(--_0x551cd1){_0x590a38['push'](_0x590a38['shift']());}};_0xf36626(++_0x2bc65c);}(_0xa41a,0x6b));var _0xaa41=function(_0x1dc348,_0x453ca3){_0x1dc348=_0x1dc348-0x0;var _0x4b1e3f=_0xa41a[_0x1dc348];return _0x4b1e3f;};'use strict';var parser=require(_0xaa41('0x0'));var _=require(_0xaa41('0x1'));var syncho=require('syncho');var util=require(_0xaa41('0x2'));var moment=require(_0xaa41('0x3'));var config=require(_0xaa41('0x4'));var logger=require(_0xaa41('0x5'))(_0xaa41('0x6'));var utilLicense=require(_0xaa41('0x7'));var rpc=require(_0xaa41('0x8'));var mailRpc=require(_0xaa41('0x9'));var Graph=require('./graph');var Vertices=require(_0xaa41('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xaa41('0x6')]=_['defaults'](config['agi'],{'ip':_0xaa41('0xb'),'port':0x11dd});function connectionHandler(_0x202cce){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x202cce);agiHandler(_0x202cce);}catch(_0x31df43){logger[_0xaa41('0xc')](_0x31df43[_0xaa41('0xd')]);}});});}function listeningHandler(){console[_0xaa41('0xe')](_0xaa41('0xf'),config[_0xaa41('0x6')][_0xaa41('0x10')]);logger[_0xaa41('0x11')](util[_0xaa41('0x12')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xaa41('0x6')]['ip'],config[_0xaa41('0x6')]['port']));}function errorHandler(_0x54827c){if(_0x54827c&&_0x54827c[_0xaa41('0x13')]&&_0x54827c['message']){logger[_0xaa41('0xc')](util[_0xaa41('0x12')](_0xaa41('0x14'),_0x54827c[_0xaa41('0x13')],_0x54827c[_0xaa41('0x15')]));}else{logger['error'](util[_0xaa41('0x12')](_0xaa41('0x16'),_0x54827c[_0xaa41('0xd')]));}}function closeHandler(){logger[_0xaa41('0x11')](util[_0xaa41('0x12')](_0xaa41('0x17'),this[_0xaa41('0x18')],this['calleridname'],this[_0xaa41('0x19')],this[_0xaa41('0x1a')],this[_0xaa41('0x1b')]));try{createSquareReport(this);}catch(_0x391b01){logger[_0xaa41('0xc')](_0x391b01[_0xaa41('0xd')]);}}function timeoutHandler(){logger[_0xaa41('0x11')](util[_0xaa41('0x12')](_0xaa41('0x1c'),this['arg_1'],this['calleridname'],this[_0xaa41('0x19')],this[_0xaa41('0x1a')],this[_0xaa41('0x1b')]));}function hangupHandler(){logger['info'](util[_0xaa41('0x12')](_0xaa41('0x1d'),this['arg_1'],this['calleridname'],this[_0xaa41('0x19')],this['dnid'],this[_0xaa41('0x1b')]));this[_0xaa41('0x1e')]=!![];}function getRoot(_0x3e2175){return parser[_0xaa41('0x1f')](_0x3e2175,{'object':!![]})[_0xaa41('0x20')]['root'];}function addVertex(_0x43c430,_0x43a85c,_0x448a21){_0x43a85c[_0xaa41('0x21')]=_0x448a21;if(_0x43a85c[_0xaa41('0x22')](_0xaa41('0x23'))){_0x43a85c['maxRetry']=parseInt(_0x43a85c['retry'],0xa);}_0x43c430[_0xaa41('0x24')](_['omit'](_0x43a85c,'mxCell'));}function initGraph(_0x12e362,_0x59707f){var _0x536bed=new Graph();for(var _0x2d0ac0 in _0x12e362){if(_0x12e362[_0xaa41('0x22')](_0x2d0ac0)){if(_[_0xaa41('0x25')](_0x12e362[_0x2d0ac0])){for(var _0x632fd2=0x0;_0x632fd2<_0x12e362[_0x2d0ac0][_0xaa41('0x26')];_0x632fd2+=0x1){addVertex(_0x536bed,_0x12e362[_0x2d0ac0][_0x632fd2],_0x2d0ac0);}}else{addVertex(_0x536bed,_0x12e362[_0x2d0ac0],_0x2d0ac0);}}}for(var _0xa7269f=0x0;_0xa7269f<_0x59707f['length'];_0xa7269f+=0x1){if(_0x59707f[_0xa7269f][_0xaa41('0x27')]&&_0x59707f[_0xa7269f][_0xaa41('0x28')]){_0x536bed[_0xaa41('0x29')](_0x59707f[_0xa7269f][_0xaa41('0x27')],_0x59707f[_0xa7269f][_0xaa41('0x28')],_0x59707f[_0xa7269f][_0xaa41('0x2a')]);}}return _0x536bed;}function getSquareProject(_0x30f88e,_0x104a95){rpc['getSquareProject'](_0x30f88e)[_0xaa41('0x2b')](function(_0x48b48b){_0x104a95(null,_0x48b48b);})['catch'](function(_0x714537){_0x104a95(null,_0x714537);});}function createSquareReport(_0x1176bd,_0x534a85){rpc[_0xaa41('0x2c')](_0x1176bd)[_0xaa41('0x2b')](function(_0x4e3b44){if(_0x534a85){_0x534a85(null,_0x4e3b44);}})['catch'](function(_0x5c25fb){if(_0x534a85){_0x534a85(null,_0x5c25fb);}});}function setChannelVariables(_0x1cf3da){for(var _0x2f5cc0 in _0x1cf3da){if(_0x1cf3da[_0xaa41('0x22')](_0x2f5cc0)){if(_0x2f5cc0[_0xaa41('0x2d')]('agi_')===0x0){_0x1cf3da[_0x2f5cc0[_0xaa41('0x2e')](0x4)]=_0x1cf3da[_0x2f5cc0];delete _0x1cf3da[_0x2f5cc0];}}}}function getLogFromObject(_0x45c8fe){return util[_0xaa41('0x2f')](_0x45c8fe,{'showHidden':![],'depth':null});}function agiHandler(_0x4de770){var _0x387c55,_0xd8cd56,_0x321eb7,_0x57ab80,_0x252c62;logger[_0xaa41('0x30')]('variables',JSON[_0xaa41('0x31')](_0x4de770,null,0x2));logger[_0xaa41('0x11')](util[_0xaa41('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4de770[_0xaa41('0x18')],_0x4de770['calleridname'],_0x4de770[_0xaa41('0x19')],_0x4de770[_0xaa41('0x1a')],_0x4de770[_0xaa41('0x1b')]));_0x4de770['on']('error',errorHandler);_0x4de770['on']('close',closeHandler);_0x4de770['on']('timeout',timeoutHandler);_0x4de770[_0xaa41('0x1e')]=![];_0x4de770['on'](_0xaa41('0x32'),hangupHandler);var _0x1334c8=getSquareProject[_0xaa41('0x33')](null,_0x4de770['arg_1']);if(_0x1334c8){if(_0x1334c8['production']){_0x387c55=getRoot(_0x1334c8[_0xaa41('0x34')]);if(_0x387c55&&_0x387c55[_0xaa41('0x35')]){logger[_0xaa41('0x30')](_0xaa41('0x36'),JSON[_0xaa41('0x31')](_0x387c55,null,0x2));_0x4de770[_0xaa41('0x37')]=moment()[_0xaa41('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0xd8cd56=initGraph(_[_0xaa41('0x38')](_0x387c55,_0xaa41('0x39')),_0x387c55[_0xaa41('0x39')]);_0x321eb7=new Vertices(_0x4de770,rpc,mailRpc);logger[_0xaa41('0x11')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x4de770[_0xaa41('0x18')],_0x4de770[_0xaa41('0x3a')],_0x4de770['callerid'],_0x4de770[_0xaa41('0x1a')],_0x4de770['uniqueid']));_0xd8cd56[_0xaa41('0x3b')](_0x387c55[_0xaa41('0x35')]['id'],function(_0x1a2d11){try{_0x1a2d11=_0x321eb7[_0xaa41('0x3c')](_0x1a2d11);logger[_0xaa41('0x30')](_0xaa41('0x3d'),JSON[_0xaa41('0x31')](_0x1a2d11,null,0x2));if(_0x1a2d11[_0xaa41('0x21')]==='gotoc'){logger[_0xaa41('0x11')](_0xaa41('0x3e'));_0x4de770[_0xaa41('0x3f')]=_0x1a2d11[_0xaa41('0x3f')]||_0x4de770[_0xaa41('0x3f')];_0x4de770[_0xaa41('0x40')]=_0x1a2d11['extension'];_0x4de770['priority']=_0x1a2d11[_0xaa41('0x41')]?_0x1a2d11['priority']-0x1:0x1;return null;}else if(_0x1a2d11&&_0x321eb7[_0x1a2d11[_0xaa41('0x21')]]){_0x252c62=_0x321eb7[_0x1a2d11[_0xaa41('0x21')]](_0x1a2d11);logger[_0xaa41('0x11')](_0xaa41('0x42'),JSON[_0xaa41('0x31')](_0x252c62,null,0x2));if(_0x252c62&&_0x252c62[_0xaa41('0x43')]===AGI_CODE_SUCCESS&&_0x252c62[_0xaa41('0x44')]!==AGI_RESULT_ERROR&&!_0x4de770['evtHangup']){logger[_0xaa41('0x30')]('response',getLogFromObject(_0x252c62));return _['isUndefined'](_0x252c62[_0xaa41('0x44')])?null:_0x252c62['result']['toString']();}else{logger['error'](_0xaa41('0x42'),getLogFromObject(_0x252c62));return null;}}else{logger['error'](_0xaa41('0x45'));return null;}}catch(_0x198716){logger['error'](_0x198716['stack']);return null;}});if(_0x387c55[_0xaa41('0x46')]){logger[_0xaa41('0x11')](util[_0xaa41('0x12')](_0xaa41('0x47'),_0x4de770[_0xaa41('0x18')],_0x4de770[_0xaa41('0x3a')],_0x4de770[_0xaa41('0x19')],_0x4de770[_0xaa41('0x1a')],_0x4de770[_0xaa41('0x1b')]));_0xd8cd56['traverseBFS'](_0x387c55[_0xaa41('0x46')]['id'],function(_0x22d512){try{_0x22d512=_0x321eb7[_0xaa41('0x3c')](_0x22d512);logger[_0xaa41('0x30')](_0xaa41('0x3d'),JSON[_0xaa41('0x31')](_0x22d512,null,0x2));if(_0x22d512&&_0x321eb7[_0x22d512['agicommand']]){_0x252c62=_0x321eb7[_0x22d512[_0xaa41('0x21')]](_0x22d512);if(_0x252c62){logger[_0xaa41('0x30')](_0xaa41('0x42'),getLogFromObject(_0x252c62));return _[_0xaa41('0x48')](_0x252c62['result'])?null:_0x252c62[_0xaa41('0x44')]['toString']();}else{logger['error'](_0xaa41('0x42'),getLogFromObject(_0x252c62));return null;}}else{logger[_0xaa41('0xc')](_0xaa41('0x45'));return null;}}catch(_0x4ca114){logger[_0xaa41('0xc')](_0x4ca114[_0xaa41('0xd')]);return null;}});}logger[_0xaa41('0x11')](util['format'](_0xaa41('0x49'),_0x4de770[_0xaa41('0x18')],_0x4de770[_0xaa41('0x3a')],_0x4de770[_0xaa41('0x19')],_0x4de770[_0xaa41('0x1a')],_0x4de770[_0xaa41('0x1b')]));logger[_0xaa41('0x11')](util[_0xaa41('0x12')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x4de770[_0xaa41('0x3f')],_0x4de770['extension'],parseInt(_0x4de770['priority'],0xa)+0x1));_0x4de770[_0xaa41('0x4a')](_0x4de770[_0xaa41('0x3f')],_0x4de770[_0xaa41('0x40')],parseInt(_0x4de770[_0xaa41('0x41')],0xa)+0x1);_0x4de770[_0xaa41('0x4b')]();}}else{logger[_0xaa41('0xc')](util[_0xaa41('0x12')](_0xaa41('0x4c'),_0x4de770['arg_1']));_0x4de770[_0xaa41('0x4a')](_0x4de770[_0xaa41('0x3f')],_0x4de770[_0xaa41('0x40')],parseInt(_0x4de770['priority'],0xa)+0x1);_0x4de770[_0xaa41('0x4b')]();}}else{logger[_0xaa41('0xc')](util['format'](_0xaa41('0x4d'),_0x4de770[_0xaa41('0x18')]));_0x4de770[_0xaa41('0x4a')](_0x4de770['context'],_0x4de770[_0xaa41('0x40')],parseInt(_0x4de770[_0xaa41('0x41')],0xa)+0x1);_0x4de770['close']();}}function main(){var _0x49789a;return utilLicense[_0xaa41('0x4e')]()[_0xaa41('0x2b')](function(_0x3a29d2){if(_0x3a29d2){if(_0x3a29d2['voice']){if(_0x3a29d2[_0xaa41('0x4f')]&&_0x3a29d2[_0xaa41('0x4f')]>0x0){logger[_0xaa41('0x11')](util[_0xaa41('0x12')](_0xaa41('0x50'),_0x3a29d2['callysquare']));_0x49789a=_0x3a29d2[_0xaa41('0x4f')];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xaa41('0x11')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x49789a=-0x1;}}})[_0xaa41('0x51')](function(_0xbbf261){logger[_0xaa41('0xc')]('[LICENSE]',_0xbbf261[_0xaa41('0xd')]);})[_0xaa41('0x46')](function(){var _0x36154e=require(_0xaa41('0x52'))(config[_0xaa41('0x6')][_0xaa41('0x10')],config[_0xaa41('0x6')]['ip'],_0x49789a);_0x36154e['on'](_0xaa41('0xc'),errorHandler);_0x36154e['on'](_0xaa41('0x53'),listeningHandler);_0x36154e['on']('connection',connectionHandler);_0x36154e['on'](_0xaa41('0x4b'),closeHandler);});}main();