Built motion from commit (unavailable).|2.2.1
[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 _0x0fda=['Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]','./server','connection','xml2json','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./graph','defaults','127.0.0.1','error','stack','log','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','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','dnid','uniqueid','callerid','[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','maxRetry','retry','omit','mxCell','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','indexOf','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','close','timeout','hangup','sync','start','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','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','response','toString','finally','[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','Project\x20%s\x20not\x20published','continueAt'];(function(_0x1ba43c,_0x5bd2e8){var _0x2f60eb=function(_0x349dff){while(--_0x349dff){_0x1ba43c['push'](_0x1ba43c['shift']());}};_0x2f60eb(++_0x5bd2e8);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x34fe80,_0x3f3ec2){_0x34fe80=_0x34fe80-0x0;var _0x3538fd=_0x0fda[_0x34fe80];return _0x3538fd;};'use strict';var parser=require(_0xa0fd('0x0'));var _=require('lodash');var syncho=require(_0xa0fd('0x1'));var util=require(_0xa0fd('0x2'));var moment=require(_0xa0fd('0x3'));var config=require(_0xa0fd('0x4'));var logger=require(_0xa0fd('0x5'))(_0xa0fd('0x6'));var utilLicense=require(_0xa0fd('0x7'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xa0fd('0x8'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa0fd('0x9')](config[_0xa0fd('0x6')],{'ip':_0xa0fd('0xa'),'port':0x11dd});function connectionHandler(_0x248cca){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x248cca);agiHandler(_0x248cca);}catch(_0x29da4c){logger[_0xa0fd('0xb')](_0x29da4c[_0xa0fd('0xc')]);}});});}function listeningHandler(){console[_0xa0fd('0xd')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xa0fd('0x6')][_0xa0fd('0xe')]);logger[_0xa0fd('0xf')](util['format'](_0xa0fd('0x10'),config[_0xa0fd('0x6')]['ip'],config[_0xa0fd('0x6')][_0xa0fd('0xe')]));}function errorHandler(_0x455457){if(_0x455457&&_0x455457['name']&&_0x455457['message']){logger[_0xa0fd('0xb')](util[_0xa0fd('0x11')]('[%s]\x20%s',_0x455457[_0xa0fd('0x12')],_0x455457[_0xa0fd('0x13')]));}else{logger[_0xa0fd('0xb')](util[_0xa0fd('0x11')](_0xa0fd('0x14'),_0x455457[_0xa0fd('0xc')]));}}function closeHandler(){logger[_0xa0fd('0xf')](util['format'](_0xa0fd('0x15'),this[_0xa0fd('0x16')],this['calleridname'],this['callerid'],this[_0xa0fd('0x17')],this[_0xa0fd('0x18')]));try{createSquareReport(this);}catch(_0x5d2d7b){logger[_0xa0fd('0xb')](_0x5d2d7b[_0xa0fd('0xc')]);}}function timeoutHandler(){logger[_0xa0fd('0xf')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa0fd('0x16')],this['calleridname'],this[_0xa0fd('0x19')],this[_0xa0fd('0x17')],this[_0xa0fd('0x18')]));}function hangupHandler(){logger[_0xa0fd('0xf')](util[_0xa0fd('0x11')](_0xa0fd('0x1a'),this[_0xa0fd('0x16')],this['calleridname'],this[_0xa0fd('0x19')],this[_0xa0fd('0x17')],this[_0xa0fd('0x18')]));this[_0xa0fd('0x1b')]=!![];}function getRoot(_0x26e3a4){return parser[_0xa0fd('0x1c')](_0x26e3a4,{'object':!![]})[_0xa0fd('0x1d')][_0xa0fd('0x1e')];}function addVertex(_0xda6f53,_0x13fc62,_0x28dbda){_0x13fc62[_0xa0fd('0x1f')]=_0x28dbda;if(_0x13fc62[_0xa0fd('0x20')]('retry')){_0x13fc62[_0xa0fd('0x21')]=parseInt(_0x13fc62[_0xa0fd('0x22')],0xa);}_0xda6f53['addVertex'](_[_0xa0fd('0x23')](_0x13fc62,_0xa0fd('0x24')));}function initGraph(_0x4f9258,_0x5bb0ee){var _0x2e9b0d=new Graph();for(var _0x267899 in _0x4f9258){if(_0x4f9258['hasOwnProperty'](_0x267899)){if(_['isArray'](_0x4f9258[_0x267899])){for(var _0x5b50c0=0x0;_0x5b50c0<_0x4f9258[_0x267899]['length'];_0x5b50c0+=0x1){addVertex(_0x2e9b0d,_0x4f9258[_0x267899][_0x5b50c0],_0x267899);}}else{addVertex(_0x2e9b0d,_0x4f9258[_0x267899],_0x267899);}}}for(var _0x11d7f1=0x0;_0x11d7f1<_0x5bb0ee['length'];_0x11d7f1+=0x1){if(_0x5bb0ee[_0x11d7f1][_0xa0fd('0x25')]&&_0x5bb0ee[_0x11d7f1][_0xa0fd('0x26')]){_0x2e9b0d[_0xa0fd('0x27')](_0x5bb0ee[_0x11d7f1]['source'],_0x5bb0ee[_0x11d7f1][_0xa0fd('0x26')],_0x5bb0ee[_0x11d7f1][_0xa0fd('0x28')]);}}return _0x2e9b0d;}function getSquareProject(_0x4feb93,_0x1dd0c4){rpc[_0xa0fd('0x29')](_0x4feb93)['then'](function(_0x366921){_0x1dd0c4(null,_0x366921);})[_0xa0fd('0x2a')](function(_0x72c222){_0x1dd0c4(null,_0x72c222);});}function createSquareReport(_0x2993aa,_0x5b4581){rpc[_0xa0fd('0x2b')](_0x2993aa)[_0xa0fd('0x2c')](function(_0x5e1b8e){if(_0x5b4581){_0x5b4581(null,_0x5e1b8e);}})['catch'](function(_0x581071){if(_0x5b4581){_0x5b4581(null,_0x581071);}});}function setChannelVariables(_0x1fc249){for(var _0x481271 in _0x1fc249){if(_0x1fc249['hasOwnProperty'](_0x481271)){if(_0x481271[_0xa0fd('0x2d')]('agi_')===0x0){_0x1fc249[_0x481271[_0xa0fd('0x2e')](0x4)]=_0x1fc249[_0x481271];delete _0x1fc249[_0x481271];}}}}function getLogFromObject(_0x410246){return util[_0xa0fd('0x2f')](_0x410246,{'showHidden':![],'depth':null});}function agiHandler(_0x2081dc){var _0x1f6e72,_0x3de88b,_0x3d2e32,_0x3187ef,_0x4ce77f;logger[_0xa0fd('0x30')]('variables',JSON[_0xa0fd('0x31')](_0x2081dc,null,0x2));logger['info'](util['format'](_0xa0fd('0x32'),_0x2081dc['arg_1'],_0x2081dc[_0xa0fd('0x33')],_0x2081dc[_0xa0fd('0x19')],_0x2081dc[_0xa0fd('0x17')],_0x2081dc[_0xa0fd('0x18')]));_0x2081dc['on']('error',errorHandler);_0x2081dc['on'](_0xa0fd('0x34'),closeHandler);_0x2081dc['on'](_0xa0fd('0x35'),timeoutHandler);_0x2081dc[_0xa0fd('0x1b')]=![];_0x2081dc['on'](_0xa0fd('0x36'),hangupHandler);var _0x2e3cfa=getSquareProject[_0xa0fd('0x37')](null,_0x2081dc[_0xa0fd('0x16')]);if(_0x2e3cfa){if(_0x2e3cfa['production']){_0x1f6e72=getRoot(_0x2e3cfa['production']);if(_0x1f6e72&&_0x1f6e72[_0xa0fd('0x38')]){logger[_0xa0fd('0x30')](_0xa0fd('0x1e'),JSON[_0xa0fd('0x31')](_0x1f6e72,null,0x2));_0x2081dc['joinAt']=moment()[_0xa0fd('0x11')](_0xa0fd('0x39'));_0x3de88b=initGraph(_[_0xa0fd('0x23')](_0x1f6e72,_0xa0fd('0x24')),_0x1f6e72[_0xa0fd('0x24')]);_0x3d2e32=new Vertices(_0x2081dc,rpc,mailRpc);logger['info'](util[_0xa0fd('0x11')](_0xa0fd('0x3a'),_0x2081dc['arg_1'],_0x2081dc['calleridname'],_0x2081dc[_0xa0fd('0x19')],_0x2081dc[_0xa0fd('0x17')],_0x2081dc[_0xa0fd('0x18')]));_0x3de88b[_0xa0fd('0x3b')](_0x1f6e72[_0xa0fd('0x38')]['id'],function(_0xbeca16){try{_0xbeca16=_0x3d2e32[_0xa0fd('0x3c')](_0xbeca16);logger[_0xa0fd('0x30')](_0xa0fd('0x3d'),JSON[_0xa0fd('0x31')](_0xbeca16,null,0x2));if(_0xbeca16[_0xa0fd('0x1f')]===_0xa0fd('0x3e')){logger[_0xa0fd('0xf')](_0xa0fd('0x3f'));_0x2081dc[_0xa0fd('0x40')]=_0xbeca16['context']||_0x2081dc['context'];_0x2081dc['extension']=_0xbeca16[_0xa0fd('0x41')];_0x2081dc[_0xa0fd('0x42')]=_0xbeca16[_0xa0fd('0x42')]?_0xbeca16['priority']-0x1:0x1;return null;}else if(_0xbeca16&&_0x3d2e32[_0xbeca16[_0xa0fd('0x1f')]]){_0x4ce77f=_0x3d2e32[_0xbeca16[_0xa0fd('0x1f')]](_0xbeca16);logger[_0xa0fd('0xf')]('response',JSON[_0xa0fd('0x31')](_0x4ce77f,null,0x2));if(_0x4ce77f&&_0x4ce77f[_0xa0fd('0x43')]===AGI_CODE_SUCCESS&&_0x4ce77f[_0xa0fd('0x44')]!==AGI_RESULT_ERROR&&!_0x2081dc[_0xa0fd('0x1b')]){logger[_0xa0fd('0x30')](_0xa0fd('0x45'),getLogFromObject(_0x4ce77f));return _['isUndefined'](_0x4ce77f[_0xa0fd('0x44')])?null:_0x4ce77f[_0xa0fd('0x44')][_0xa0fd('0x46')]();}else{logger[_0xa0fd('0xb')](_0xa0fd('0x45'),getLogFromObject(_0x4ce77f));return null;}}else{logger[_0xa0fd('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x2ccdf7){logger[_0xa0fd('0xb')](_0x2ccdf7[_0xa0fd('0xc')]);return null;}});if(_0x1f6e72[_0xa0fd('0x47')]){logger[_0xa0fd('0xf')](util['format']('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2081dc[_0xa0fd('0x16')],_0x2081dc[_0xa0fd('0x33')],_0x2081dc[_0xa0fd('0x19')],_0x2081dc[_0xa0fd('0x17')],_0x2081dc[_0xa0fd('0x18')]));_0x3de88b['traverseBFS'](_0x1f6e72[_0xa0fd('0x47')]['id'],function(_0x3cd0d0){try{_0x3cd0d0=_0x3d2e32[_0xa0fd('0x3c')](_0x3cd0d0);logger[_0xa0fd('0x30')](_0xa0fd('0x3d'),JSON[_0xa0fd('0x31')](_0x3cd0d0,null,0x2));if(_0x3cd0d0&&_0x3d2e32[_0x3cd0d0['agicommand']]){_0x4ce77f=_0x3d2e32[_0x3cd0d0['agicommand']](_0x3cd0d0);if(_0x4ce77f){logger['debug'](_0xa0fd('0x45'),getLogFromObject(_0x4ce77f));return _['isUndefined'](_0x4ce77f['result'])?null:_0x4ce77f[_0xa0fd('0x44')]['toString']();}else{logger[_0xa0fd('0xb')](_0xa0fd('0x45'),getLogFromObject(_0x4ce77f));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x213e67){logger[_0xa0fd('0xb')](_0x213e67[_0xa0fd('0xc')]);return null;}});}logger[_0xa0fd('0xf')](util[_0xa0fd('0x11')](_0xa0fd('0x48'),_0x2081dc['arg_1'],_0x2081dc['calleridname'],_0x2081dc['callerid'],_0x2081dc['dnid'],_0x2081dc[_0xa0fd('0x18')]));logger[_0xa0fd('0xf')](util[_0xa0fd('0x11')](_0xa0fd('0x49'),_0x2081dc[_0xa0fd('0x40')],_0x2081dc['extension'],parseInt(_0x2081dc['priority'],0xa)+0x1));_0x2081dc['continueAt'](_0x2081dc['context'],_0x2081dc['extension'],parseInt(_0x2081dc[_0xa0fd('0x42')],0xa)+0x1);_0x2081dc[_0xa0fd('0x34')]();}}else{logger[_0xa0fd('0xb')](util[_0xa0fd('0x11')](_0xa0fd('0x4a'),_0x2081dc[_0xa0fd('0x16')]));_0x2081dc[_0xa0fd('0x4b')](_0x2081dc[_0xa0fd('0x40')],_0x2081dc[_0xa0fd('0x41')],parseInt(_0x2081dc[_0xa0fd('0x42')],0xa)+0x1);_0x2081dc['close']();}}else{logger['error'](util[_0xa0fd('0x11')](_0xa0fd('0x4c'),_0x2081dc[_0xa0fd('0x16')]));_0x2081dc[_0xa0fd('0x4b')](_0x2081dc['context'],_0x2081dc[_0xa0fd('0x41')],parseInt(_0x2081dc[_0xa0fd('0x42')],0xa)+0x1);_0x2081dc['close']();}}function main(){var _0x920e0f;return utilLicense['getLicense']()[_0xa0fd('0x2c')](function(_0x39578a){if(_0x39578a){if(_0x39578a['voice']){if(_0x39578a[_0xa0fd('0x4d')]&&_0x39578a[_0xa0fd('0x4d')]>0x0){logger[_0xa0fd('0xf')](util[_0xa0fd('0x11')](_0xa0fd('0x4e'),_0x39578a[_0xa0fd('0x4d')]));_0x920e0f=_0x39578a[_0xa0fd('0x4d')];}else{logger[_0xa0fd('0xf')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xa0fd('0xf')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x920e0f=-0x1;}}})[_0xa0fd('0x2a')](function(_0x4205ac){logger[_0xa0fd('0xb')](_0xa0fd('0x4f'),_0x4205ac[_0xa0fd('0xc')]);})['finally'](function(){var _0x31710d=require(_0xa0fd('0x50'))(config['agi'][_0xa0fd('0xe')],config[_0xa0fd('0x6')]['ip'],_0x920e0f);_0x31710d['on'](_0xa0fd('0xb'),errorHandler);_0x31710d['on']('listening',listeningHandler);_0x31710d['on'](_0xa0fd('0x51'),connectionHandler);_0x31710d['on']('close',closeHandler);});}main();