Built motion from commit 67e5df37.|2.0.66
[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 _0x1857=['addVertex','omit','mxCell','length','source','target','addEdge','value','then','catch','createSquareReport','updateSquareReport','indexOf','substring','inspect','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','hangup','sync','production','start','debug','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','vertex','gotoc','context','extension','priority','code','result','response','finally','clear','isUndefined','toString','agicommand\x20not\x20found','exception','[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','close','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','0.0.0.0','listening','connection','xml2json','lodash','syncho','../../config/environment','agi','../../config/license/util','./rpc','./graph','./vertices','error','syncho\x20error','stringify','log','info','[LISTENING]\x20Cally\x20Square\x20listening\x200.0.0.0:4573','name','message','format','[ERROR]\x20%s','arg_1','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry'];(function(_0x3b6a3f,_0x1537d5){var _0x3f7379=function(_0x2167f6){while(--_0x2167f6){_0x3b6a3f['push'](_0x3b6a3f['shift']());}};_0x3f7379(++_0x1537d5);}(_0x1857,0xe6));var _0x7185=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1857[_0x321bb2];return _0x9c12ed;};'use strict';var parser=require(_0x7185('0x0'));var _=require(_0x7185('0x1'));var syncho=require(_0x7185('0x2'));var util=require('util');var config=require(_0x7185('0x3'));var logger=require('../../config/logger')(_0x7185('0x4'));var utilLicense=require(_0x7185('0x5'));var rpc=require(_0x7185('0x6'));var mailRpc=require('./mailRpc');var Graph=require(_0x7185('0x7'));var Vertices=require(_0x7185('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function connectionHandler(_0x3da596){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3da596);agiHandler(_0x3da596);}catch(_0x4950cb){logger[_0x7185('0x9')](_0x7185('0xa'),JSON[_0x7185('0xb')](_0x4950cb,null,0x2));}});});}function listeningHandler(_0x55cbd6){console[_0x7185('0xc')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',0x11dd);logger[_0x7185('0xd')](_0x7185('0xe'));}function errorHandler(_0x2713e8){if(_0x2713e8&&_0x2713e8[_0x7185('0xf')]&&_0x2713e8[_0x7185('0x10')]){logger[_0x7185('0x9')](util[_0x7185('0x11')]('[%s]\x20%s',_0x2713e8[_0x7185('0xf')],_0x2713e8[_0x7185('0x10')]));}else{logger[_0x7185('0x9')](util['format'](_0x7185('0x12'),JSON[_0x7185('0xb')](_0x2713e8,null,0x2)));}}function closeHandler(){logger['info'](util[_0x7185('0x11')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x7185('0x13')],this['calleridname'],this[_0x7185('0x14')],this[_0x7185('0x15')],this['uniqueid']));try{updateSquareReport(this);}catch(_0x20ab73){logger[_0x7185('0x9')](_0x20ab73[_0x7185('0x10')]);}}function timeoutHandler(){logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x16'),this[_0x7185('0x13')],this[_0x7185('0x17')],this[_0x7185('0x14')],this[_0x7185('0x15')],this[_0x7185('0x18')]));}function hangupHandler(){logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x19'),this['arg_1'],this[_0x7185('0x17')],this[_0x7185('0x14')],this[_0x7185('0x15')],this[_0x7185('0x18')]));this[_0x7185('0x1a')]=!![];}function getRoot(_0x256564){return parser[_0x7185('0x1b')](_0x256564,{'object':!![]})[_0x7185('0x1c')][_0x7185('0x1d')];}function addVertex(_0xc18ef2,_0xf5ccef,_0x303c35){_0xf5ccef[_0x7185('0x1e')]=_0x303c35;if(_0xf5ccef[_0x7185('0x1f')](_0x7185('0x20'))){_0xf5ccef[_0x7185('0x21')]=parseInt(_0xf5ccef[_0x7185('0x20')],0xa);}_0xc18ef2[_0x7185('0x22')](_[_0x7185('0x23')](_0xf5ccef,_0x7185('0x24')));}function initGraph(_0xeccfa1,_0x2dfaca){var _0x1187ac=new Graph();for(var _0x4c716f in _0xeccfa1){if(_0xeccfa1['hasOwnProperty'](_0x4c716f)){if(_['isArray'](_0xeccfa1[_0x4c716f])){for(var _0x4c626a=0x0;_0x4c626a<_0xeccfa1[_0x4c716f][_0x7185('0x25')];_0x4c626a+=0x1){addVertex(_0x1187ac,_0xeccfa1[_0x4c716f][_0x4c626a],_0x4c716f);}}else{addVertex(_0x1187ac,_0xeccfa1[_0x4c716f],_0x4c716f);}}}for(var _0x473de7=0x0;_0x473de7<_0x2dfaca['length'];_0x473de7+=0x1){if(_0x2dfaca[_0x473de7][_0x7185('0x26')]&&_0x2dfaca[_0x473de7][_0x7185('0x27')]){_0x1187ac[_0x7185('0x28')](_0x2dfaca[_0x473de7][_0x7185('0x26')],_0x2dfaca[_0x473de7][_0x7185('0x27')],_0x2dfaca[_0x473de7][_0x7185('0x29')]);}}return _0x1187ac;}function getSquareProject(_0x2ddef1,_0x47cc3f){rpc['getSquareProject'](_0x2ddef1)[_0x7185('0x2a')](function(_0x4b5448){_0x47cc3f(null,_0x4b5448);})[_0x7185('0x2b')](function(_0x1ab895){_0x47cc3f(null,_0x1ab895);});}function createSquareReport(_0x1cbca2,_0x2eb344){rpc[_0x7185('0x2c')](_0x1cbca2)[_0x7185('0x2a')](function(_0x82335a){_0x2eb344(null,_0x82335a);})[_0x7185('0x2b')](function(_0xc846dc){_0x2eb344(null,_0xc846dc);});}function updateSquareReport(_0x2bcf7a,_0x453915){rpc[_0x7185('0x2d')](_0x2bcf7a['uniqueid'],_0x2bcf7a[_0x7185('0x13')])['then'](function(_0x1d38c0){if(_0x453915){_0x453915(null,_0x1d38c0);}})[_0x7185('0x2b')](function(_0x222f5f){if(_0x453915){_0x453915(null,_0x222f5f);}});}function setChannelVariables(_0x452fea){for(var _0x46aec3 in _0x452fea){if(_0x452fea[_0x7185('0x1f')](_0x46aec3)){if(_0x46aec3[_0x7185('0x2e')]('agi_')===0x0){_0x452fea[_0x46aec3[_0x7185('0x2f')](0x4)]=_0x452fea[_0x46aec3];delete _0x452fea[_0x46aec3];}}}}function getLogFromObject(_0x27858c){return util[_0x7185('0x30')](_0x27858c,{'showHidden':![],'depth':null});}function agiHandler(_0x599c44){var _0x58742f,_0x47472a,_0x15466b,_0x1d7a66,_0x3d334a;logger['debug'](_0x7185('0x31'),JSON[_0x7185('0xb')](_0x599c44,null,0x2));logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x32'),_0x599c44[_0x7185('0x13')],_0x599c44['calleridname'],_0x599c44[_0x7185('0x14')],_0x599c44[_0x7185('0x15')],_0x599c44[_0x7185('0x18')]));_0x599c44['on'](_0x7185('0x9'),errorHandler);_0x599c44['on']('close',closeHandler);_0x599c44['on'](_0x7185('0x33'),timeoutHandler);_0x599c44[_0x7185('0x1a')]=![];_0x599c44['on'](_0x7185('0x34'),hangupHandler);var _0x576bef=getSquareProject[_0x7185('0x35')](null,_0x599c44['arg_1']);if(_0x576bef){if(_0x576bef[_0x7185('0x36')]){_0x58742f=getRoot(_0x576bef['production']);if(_0x58742f&&_0x58742f[_0x7185('0x37')]){logger[_0x7185('0x38')](_0x7185('0x1d'),JSON[_0x7185('0xb')](_0x58742f,null,0x2));createSquareReport[_0x7185('0x35')](null,_0x599c44);_0x47472a=initGraph(_['omit'](_0x58742f,_0x7185('0x24')),_0x58742f[_0x7185('0x24')]);_0x15466b=new Vertices(_0x599c44,rpc,mailRpc);logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x39'),_0x599c44[_0x7185('0x13')],_0x599c44[_0x7185('0x17')],_0x599c44[_0x7185('0x14')],_0x599c44[_0x7185('0x15')],_0x599c44[_0x7185('0x18')]));_0x47472a[_0x7185('0x3a')](_0x58742f[_0x7185('0x37')]['id'],function(_0x351909){try{_0x351909=_0x15466b['clear'](_0x351909);logger[_0x7185('0x38')](_0x7185('0x3b'),JSON[_0x7185('0xb')](_0x351909,null,0x2));if(_0x351909[_0x7185('0x1e')]===_0x7185('0x3c')){logger[_0x7185('0xd')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x599c44[_0x7185('0x3d')]=_0x351909[_0x7185('0x3d')]||_0x599c44['context'];_0x599c44[_0x7185('0x3e')]=_0x351909[_0x7185('0x3e')];_0x599c44[_0x7185('0x3f')]=_0x351909[_0x7185('0x3f')]?_0x351909['priority']-0x1:0x1;return null;}else if(_0x351909&&_0x15466b[_0x351909['agicommand']]){_0x3d334a=_0x15466b[_0x351909[_0x7185('0x1e')]](_0x351909);logger[_0x7185('0xd')]('response',JSON[_0x7185('0xb')](_0x3d334a,null,0x2));if(_0x3d334a&&_0x3d334a[_0x7185('0x40')]===AGI_CODE_SUCCESS&&_0x3d334a[_0x7185('0x41')]!==AGI_RESULT_ERROR&&!_0x599c44[_0x7185('0x1a')]){logger[_0x7185('0x38')](_0x7185('0x42'),getLogFromObject(_0x3d334a));return _['isUndefined'](_0x3d334a[_0x7185('0x41')])?null:_0x3d334a[_0x7185('0x41')]['toString']();}else{logger[_0x7185('0x9')](_0x7185('0x42'),getLogFromObject(_0x3d334a));return null;}}else{logger[_0x7185('0x9')]('agicommand\x20not\x20found');return null;}}catch(_0x11dd64){logger[_0x7185('0x9')]('exception',getLogFromObject(_0x11dd64));return null;}});if(_0x58742f[_0x7185('0x43')]){logger[_0x7185('0xd')](util[_0x7185('0x11')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x599c44[_0x7185('0x13')],_0x599c44[_0x7185('0x17')],_0x599c44[_0x7185('0x14')],_0x599c44[_0x7185('0x15')],_0x599c44['uniqueid']));_0x47472a[_0x7185('0x3a')](_0x58742f[_0x7185('0x43')]['id'],function(_0x2a61ab){try{_0x2a61ab=_0x15466b[_0x7185('0x44')](_0x2a61ab);logger['debug'](_0x7185('0x3b'),JSON['stringify'](_0x2a61ab,null,0x2));if(_0x2a61ab&&_0x15466b[_0x2a61ab[_0x7185('0x1e')]]){_0x3d334a=_0x15466b[_0x2a61ab[_0x7185('0x1e')]](_0x2a61ab);if(_0x3d334a){logger[_0x7185('0x38')]('response',getLogFromObject(_0x3d334a));return _[_0x7185('0x45')](_0x3d334a['result'])?null:_0x3d334a[_0x7185('0x41')][_0x7185('0x46')]();}else{logger['error']('response',getLogFromObject(_0x3d334a));return null;}}else{logger['error'](_0x7185('0x47'));return null;}}catch(_0x5d18f4){logger[_0x7185('0x9')](_0x7185('0x48'),getLogFromObject(_0x5d18f4));return null;}});}logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x49'),_0x599c44[_0x7185('0x13')],_0x599c44['calleridname'],_0x599c44['callerid'],_0x599c44[_0x7185('0x15')],_0x599c44[_0x7185('0x18')]));logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x4a'),_0x599c44['context'],_0x599c44[_0x7185('0x3e')],parseInt(_0x599c44[_0x7185('0x3f')],0xa)+0x1));_0x599c44[_0x7185('0x4b')](_0x599c44[_0x7185('0x3d')],_0x599c44[_0x7185('0x3e')],parseInt(_0x599c44[_0x7185('0x3f')],0xa)+0x1);_0x599c44['close']();}}else{logger[_0x7185('0x9')](util[_0x7185('0x11')](_0x7185('0x4c'),_0x599c44['arg_1']));_0x599c44[_0x7185('0x4b')](_0x599c44[_0x7185('0x3d')],_0x599c44[_0x7185('0x3e')],parseInt(_0x599c44['priority'],0xa)+0x1);_0x599c44[_0x7185('0x4d')]();}}else{logger[_0x7185('0x9')](util[_0x7185('0x11')](_0x7185('0x4e'),_0x599c44[_0x7185('0x13')]));_0x599c44['continueAt'](_0x599c44[_0x7185('0x3d')],_0x599c44[_0x7185('0x3e')],parseInt(_0x599c44[_0x7185('0x3f')],0xa)+0x1);_0x599c44['close']();}}function main(){var _0x594665;return utilLicense[_0x7185('0x4f')]()['then'](function(_0x3986ab){if(_0x3986ab&&_0x3986ab[_0x7185('0x50')]&&_0x3986ab[_0x7185('0x50')]>0x0){logger[_0x7185('0xd')](util[_0x7185('0x11')](_0x7185('0x51'),_0x3986ab[_0x7185('0x50')]));_0x594665=_0x3986ab[_0x7185('0x50')];}else{logger['info'](_0x7185('0x52'));}})[_0x7185('0x2b')](function(_0x5a86f8){logger[_0x7185('0x9')](_0x7185('0x53'),JSON[_0x7185('0xb')](_0x5a86f8,null,0x2));})[_0x7185('0x43')](function(){var _0x24af12=require(_0x7185('0x54'))(0x11dd,_0x7185('0x55'),_0x594665);_0x24af12['on'](_0x7185('0x9'),errorHandler);_0x24af12['on'](_0x7185('0x56'),listeningHandler);_0x24af12['on'](_0x7185('0x57'),connectionHandler);_0x24af12['on'](_0x7185('0x4d'),closeHandler);});}main();