Built motion from commit (unavailable).|2.5.31
[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 _0x06f4=['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','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','isUndefined','toString','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','agicommand\x20not\x20found','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','connection','xml2json','lodash','util','moment','agi','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','name','message','[%s]\x20%s','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','mxCell','isArray','length','source','target','addEdge','getSquareProject','then','catch','indexOf','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','close','timeout','sync','production','start'];(function(_0x407b0d,_0x9d0d45){var _0x308a2e=function(_0xe574b6){while(--_0xe574b6){_0x407b0d['push'](_0x407b0d['shift']());}};_0x308a2e(++_0x9d0d45);}(_0x06f4,0x136));var _0x406f=function(_0x297817,_0x2d0259){_0x297817=_0x297817-0x0;var _0x469b5f=_0x06f4[_0x297817];return _0x469b5f;};'use strict';var parser=require(_0x406f('0x0'));var _=require(_0x406f('0x1'));var syncho=require('syncho');var util=require(_0x406f('0x2'));var moment=require(_0x406f('0x3'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x406f('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0x406f('0x5'));var mailRpc=require(_0x406f('0x6'));var Graph=require(_0x406f('0x7'));var Vertices=require(_0x406f('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x406f('0x9')](config['agi'],{'ip':_0x406f('0xa'),'port':0x11dd});function connectionHandler(_0x1c39ce){process[_0x406f('0xb')](function(){syncho(function(){try{setChannelVariables(_0x1c39ce);agiHandler(_0x1c39ce);}catch(_0x54eb68){logger[_0x406f('0xc')](_0x54eb68['stack']);}});});}function listeningHandler(){console['log'](_0x406f('0xd'),config['agi'][_0x406f('0xe')]);logger['info'](util[_0x406f('0xf')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x406f('0x4')]['ip'],config[_0x406f('0x4')]['port']));}function errorHandler(_0x2f7208){if(_0x2f7208&&_0x2f7208[_0x406f('0x10')]&&_0x2f7208[_0x406f('0x11')]){logger[_0x406f('0xc')](util[_0x406f('0xf')](_0x406f('0x12'),_0x2f7208[_0x406f('0x10')],_0x2f7208[_0x406f('0x11')]));}else{logger[_0x406f('0xc')](util[_0x406f('0xf')](_0x406f('0x13'),_0x2f7208['stack']));}}function closeHandler(){logger[_0x406f('0x14')](util[_0x406f('0xf')](_0x406f('0x15'),this['arg_1'],this[_0x406f('0x16')],this[_0x406f('0x17')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x11c759){logger[_0x406f('0xc')](_0x11c759['stack']);}}function timeoutHandler(){logger[_0x406f('0x14')](util['format'](_0x406f('0x18'),this[_0x406f('0x19')],this[_0x406f('0x16')],this[_0x406f('0x17')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0x406f('0x14')](util['format'](_0x406f('0x1a'),this['arg_1'],this[_0x406f('0x16')],this[_0x406f('0x17')],this[_0x406f('0x1b')],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x518a88){return parser[_0x406f('0x1c')](_0x518a88,{'object':!![]})[_0x406f('0x1d')][_0x406f('0x1e')];}function addVertex(_0x5ebb26,_0x102cfd,_0x5961cc){_0x102cfd[_0x406f('0x1f')]=_0x5961cc;if(_0x102cfd[_0x406f('0x20')](_0x406f('0x21'))){_0x102cfd[_0x406f('0x22')]=parseInt(_0x102cfd[_0x406f('0x21')],0xa);}_0x5ebb26['addVertex'](_['omit'](_0x102cfd,_0x406f('0x23')));}function initGraph(_0x58501f,_0x467a3a){var _0xa240d8=new Graph();for(var _0x4ff1de in _0x58501f){if(_0x58501f['hasOwnProperty'](_0x4ff1de)){if(_[_0x406f('0x24')](_0x58501f[_0x4ff1de])){for(var _0x484f7c=0x0;_0x484f7c<_0x58501f[_0x4ff1de][_0x406f('0x25')];_0x484f7c+=0x1){addVertex(_0xa240d8,_0x58501f[_0x4ff1de][_0x484f7c],_0x4ff1de);}}else{addVertex(_0xa240d8,_0x58501f[_0x4ff1de],_0x4ff1de);}}}for(var _0x394430=0x0;_0x394430<_0x467a3a[_0x406f('0x25')];_0x394430+=0x1){if(_0x467a3a[_0x394430][_0x406f('0x26')]&&_0x467a3a[_0x394430][_0x406f('0x27')]){_0xa240d8[_0x406f('0x28')](_0x467a3a[_0x394430][_0x406f('0x26')],_0x467a3a[_0x394430][_0x406f('0x27')],_0x467a3a[_0x394430]['value']);}}return _0xa240d8;}function getSquareProject(_0x5ac8e5,_0x315869){rpc[_0x406f('0x29')](_0x5ac8e5)[_0x406f('0x2a')](function(_0xcb1092){_0x315869(null,_0xcb1092);})['catch'](function(_0x543248){_0x315869(null,_0x543248);});}function createSquareReport(_0x504ce9,_0x44f0ef){rpc['createSquareReport'](_0x504ce9)['then'](function(_0x4430c5){if(_0x44f0ef){_0x44f0ef(null,_0x4430c5);}})[_0x406f('0x2b')](function(_0x2e42fa){if(_0x44f0ef){_0x44f0ef(null,_0x2e42fa);}});}function setChannelVariables(_0x2b8a15){for(var _0x93b5ce in _0x2b8a15){if(_0x2b8a15[_0x406f('0x20')](_0x93b5ce)){if(_0x93b5ce[_0x406f('0x2c')](_0x406f('0x2d'))===0x0){_0x2b8a15[_0x93b5ce[_0x406f('0x2e')](0x4)]=_0x2b8a15[_0x93b5ce];delete _0x2b8a15[_0x93b5ce];}}}}function getLogFromObject(_0xe72baf){return util[_0x406f('0x2f')](_0xe72baf,{'showHidden':![],'depth':null});}function agiHandler(_0x449c79){var _0x23efaa,_0x48bf35,_0x3ad6e0,_0x2227c6,_0x13fb61;logger[_0x406f('0x30')](_0x406f('0x31'),JSON[_0x406f('0x32')](_0x449c79,null,0x2));logger[_0x406f('0x14')](util[_0x406f('0xf')](_0x406f('0x33'),_0x449c79[_0x406f('0x19')],_0x449c79['calleridname'],_0x449c79[_0x406f('0x17')],_0x449c79[_0x406f('0x1b')],_0x449c79[_0x406f('0x34')]));_0x449c79['on'](_0x406f('0xc'),errorHandler);_0x449c79['on'](_0x406f('0x35'),closeHandler);_0x449c79['on'](_0x406f('0x36'),timeoutHandler);_0x449c79['evtHangup']=![];_0x449c79['on']('hangup',hangupHandler);var _0x44c63a=getSquareProject[_0x406f('0x37')](null,_0x449c79['arg_1']);if(_0x44c63a){if(_0x44c63a[_0x406f('0x38')]){_0x23efaa=getRoot(_0x44c63a['production']);if(_0x23efaa&&_0x23efaa[_0x406f('0x39')]){logger[_0x406f('0x30')](_0x406f('0x1e'),JSON['stringify'](_0x23efaa,null,0x2));_0x449c79[_0x406f('0x3a')]=moment()[_0x406f('0xf')](_0x406f('0x3b'));_0x48bf35=initGraph(_[_0x406f('0x3c')](_0x23efaa,_0x406f('0x23')),_0x23efaa[_0x406f('0x23')]);_0x3ad6e0=new Vertices(_0x449c79,rpc,mailRpc);logger[_0x406f('0x14')](util[_0x406f('0xf')](_0x406f('0x3d'),_0x449c79[_0x406f('0x19')],_0x449c79[_0x406f('0x16')],_0x449c79[_0x406f('0x17')],_0x449c79[_0x406f('0x1b')],_0x449c79[_0x406f('0x34')]));_0x48bf35[_0x406f('0x3e')](_0x23efaa['start']['id'],function(_0x55c759){try{_0x55c759=_0x3ad6e0['clear'](_0x55c759);logger[_0x406f('0x30')](_0x406f('0x3f'),JSON[_0x406f('0x32')](_0x55c759,null,0x2));if(_0x55c759['agicommand']===_0x406f('0x40')){logger[_0x406f('0x14')](_0x406f('0x41'));_0x449c79[_0x406f('0x42')]=_0x55c759[_0x406f('0x42')]||_0x449c79[_0x406f('0x42')];_0x449c79['extension']=_0x55c759[_0x406f('0x43')];_0x449c79[_0x406f('0x44')]=_0x55c759['priority']?_0x55c759[_0x406f('0x44')]-0x1:0x1;return null;}else if(_0x55c759&&_0x3ad6e0[_0x55c759['agicommand']]){_0x13fb61=_0x3ad6e0[_0x55c759['agicommand']](_0x55c759);logger[_0x406f('0x14')](_0x406f('0x45'),JSON[_0x406f('0x32')](_0x13fb61,null,0x2));if(_0x13fb61&&_0x13fb61[_0x406f('0x46')]===AGI_CODE_SUCCESS&&_0x13fb61[_0x406f('0x47')]!==AGI_RESULT_ERROR&&!_0x449c79[_0x406f('0x48')]){logger['debug']('response',getLogFromObject(_0x13fb61));return _[_0x406f('0x49')](_0x13fb61[_0x406f('0x47')])?null:_0x13fb61[_0x406f('0x47')][_0x406f('0x4a')]();}else{logger[_0x406f('0xc')](_0x406f('0x45'),getLogFromObject(_0x13fb61));return null;}}else{logger[_0x406f('0xc')]('agicommand\x20not\x20found');return null;}}catch(_0x146056){logger[_0x406f('0xc')](_0x146056[_0x406f('0x4b')]);return null;}});if(_0x23efaa[_0x406f('0x4c')]){logger[_0x406f('0x14')](util[_0x406f('0xf')](_0x406f('0x4d'),_0x449c79[_0x406f('0x19')],_0x449c79[_0x406f('0x16')],_0x449c79[_0x406f('0x17')],_0x449c79[_0x406f('0x1b')],_0x449c79['uniqueid']));_0x48bf35[_0x406f('0x3e')](_0x23efaa[_0x406f('0x4c')]['id'],function(_0x47ddfa){try{_0x47ddfa=_0x3ad6e0['clear'](_0x47ddfa);logger[_0x406f('0x30')](_0x406f('0x3f'),JSON[_0x406f('0x32')](_0x47ddfa,null,0x2));if(_0x47ddfa&&_0x3ad6e0[_0x47ddfa[_0x406f('0x1f')]]){_0x13fb61=_0x3ad6e0[_0x47ddfa['agicommand']](_0x47ddfa);if(_0x13fb61){logger[_0x406f('0x30')]('response',getLogFromObject(_0x13fb61));return _[_0x406f('0x49')](_0x13fb61[_0x406f('0x47')])?null:_0x13fb61['result']['toString']();}else{logger[_0x406f('0xc')](_0x406f('0x45'),getLogFromObject(_0x13fb61));return null;}}else{logger[_0x406f('0xc')](_0x406f('0x4e'));return null;}}catch(_0x56339a){logger[_0x406f('0xc')](_0x56339a[_0x406f('0x4b')]);return null;}});}logger[_0x406f('0x14')](util[_0x406f('0xf')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x449c79['arg_1'],_0x449c79[_0x406f('0x16')],_0x449c79[_0x406f('0x17')],_0x449c79[_0x406f('0x1b')],_0x449c79[_0x406f('0x34')]));logger[_0x406f('0x14')](util['format'](_0x406f('0x4f'),_0x449c79[_0x406f('0x42')],_0x449c79['extension'],parseInt(_0x449c79['priority'],0xa)+0x1));_0x449c79[_0x406f('0x50')](_0x449c79[_0x406f('0x42')],_0x449c79[_0x406f('0x43')],parseInt(_0x449c79['priority'],0xa)+0x1);_0x449c79[_0x406f('0x35')]();}}else{logger[_0x406f('0xc')](util[_0x406f('0xf')](_0x406f('0x51'),_0x449c79[_0x406f('0x19')]));_0x449c79[_0x406f('0x50')](_0x449c79[_0x406f('0x42')],_0x449c79[_0x406f('0x43')],parseInt(_0x449c79[_0x406f('0x44')],0xa)+0x1);_0x449c79['close']();}}else{logger['error'](util[_0x406f('0xf')](_0x406f('0x52'),_0x449c79[_0x406f('0x19')]));_0x449c79[_0x406f('0x50')](_0x449c79[_0x406f('0x42')],_0x449c79[_0x406f('0x43')],parseInt(_0x449c79[_0x406f('0x44')],0xa)+0x1);_0x449c79[_0x406f('0x35')]();}}function main(){var _0x295e7a;return utilLicense[_0x406f('0x53')]()['then'](function(_0x5ef690){if(_0x5ef690){if(_0x5ef690[_0x406f('0x54')]){if(_0x5ef690[_0x406f('0x55')]&&_0x5ef690[_0x406f('0x55')]>0x0){logger[_0x406f('0x14')](util[_0x406f('0xf')](_0x406f('0x56'),_0x5ef690['callysquare']));_0x295e7a=_0x5ef690[_0x406f('0x55')];}else{logger[_0x406f('0x14')](_0x406f('0x57'));}}else{logger[_0x406f('0x14')](_0x406f('0x58'));_0x295e7a=-0x1;}}})[_0x406f('0x2b')](function(_0x14d61c){logger[_0x406f('0xc')](_0x406f('0x59'),_0x14d61c[_0x406f('0x4b')]);})['finally'](function(){var _0x494955=require(_0x406f('0x5a'))(config[_0x406f('0x4')]['port'],config[_0x406f('0x4')]['ip'],_0x295e7a);_0x494955['on']('error',errorHandler);_0x494955['on']('listening',listeningHandler);_0x494955['on'](_0x406f('0x5b'),connectionHandler);_0x494955['on'](_0x406f('0x35'),closeHandler);});}main();