73a9e7420b28441007f5f30f42c3c2ce467a5b4d
[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 _0x10d6=['agicommand','hasOwnProperty','retry','addVertex','omit','mxCell','length','source','addEdge','target','value','getSquareProject','then','catch','createSquareReport','indexOf','agi_','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','root','joinAt','traverseBFS','clear','debug','vertex','gotoc','context','extension','priority','response','code','result','isUndefined','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toString','agicommand\x20not\x20found','[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','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','xml2json','lodash','syncho','util','moment','../../config/environment','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','log','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','[%s]\x20%s','format','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel'];(function(_0x3b464a,_0x3f371c){var _0x25a39c=function(_0x16e368){while(--_0x16e368){_0x3b464a['push'](_0x3b464a['shift']());}};_0x25a39c(++_0x3f371c);}(_0x10d6,0x14c));var _0x610d=function(_0x192164,_0x4d8085){_0x192164=_0x192164-0x0;var _0x374a39=_0x10d6[_0x192164];return _0x374a39;};'use strict';var parser=require(_0x610d('0x0'));var _=require(_0x610d('0x1'));var syncho=require(_0x610d('0x2'));var util=require(_0x610d('0x3'));var moment=require(_0x610d('0x4'));var config=require(_0x610d('0x5'));var logger=require('../../config/logger')(_0x610d('0x6'));var utilLicense=require(_0x610d('0x7'));var rpc=require(_0x610d('0x8'));var mailRpc=require(_0x610d('0x9'));var Graph=require(_0x610d('0xa'));var Vertices=require(_0x610d('0xb'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x610d('0x6')]=_[_0x610d('0xc')](config[_0x610d('0x6')],{'ip':_0x610d('0xd'),'port':0x11dd});function connectionHandler(_0x1b446f){process[_0x610d('0xe')](function(){syncho(function(){try{setChannelVariables(_0x1b446f);agiHandler(_0x1b446f);}catch(_0x3f8a06){logger[_0x610d('0xf')](_0x3f8a06['stack']);}});});}function listeningHandler(){console[_0x610d('0x10')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x610d('0x6')]['port']);logger[_0x610d('0x11')](util['format'](_0x610d('0x12'),config[_0x610d('0x6')]['ip'],config[_0x610d('0x6')][_0x610d('0x13')]));}function errorHandler(_0x5bb7f1){if(_0x5bb7f1&&_0x5bb7f1[_0x610d('0x14')]&&_0x5bb7f1[_0x610d('0x15')]){logger[_0x610d('0xf')](util['format'](_0x610d('0x16'),_0x5bb7f1[_0x610d('0x14')],_0x5bb7f1['message']));}else{logger['error'](util[_0x610d('0x17')](_0x610d('0x18'),_0x5bb7f1[_0x610d('0x19')]));}}function closeHandler(){logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x1a'),this[_0x610d('0x1b')],this[_0x610d('0x1c')],this[_0x610d('0x1d')],this[_0x610d('0x1e')],this[_0x610d('0x1f')]));try{createSquareReport(this);}catch(_0x5b6b9b){logger[_0x610d('0xf')](_0x5b6b9b[_0x610d('0x19')]);}}function timeoutHandler(){logger['info'](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x610d('0x1b')],this[_0x610d('0x1c')],this[_0x610d('0x1d')],this[_0x610d('0x1e')],this[_0x610d('0x1f')]));}function hangupHandler(){logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x20'),this[_0x610d('0x1b')],this[_0x610d('0x1c')],this[_0x610d('0x1d')],this['dnid'],this[_0x610d('0x1f')]));this[_0x610d('0x21')]=!![];}function getRoot(_0x4fb92d){return parser[_0x610d('0x22')](_0x4fb92d,{'object':!![]})[_0x610d('0x23')]['root'];}function addVertex(_0x119f20,_0x59864e,_0xb9512c){_0x59864e[_0x610d('0x24')]=_0xb9512c;if(_0x59864e[_0x610d('0x25')](_0x610d('0x26'))){_0x59864e['maxRetry']=parseInt(_0x59864e[_0x610d('0x26')],0xa);}_0x119f20[_0x610d('0x27')](_[_0x610d('0x28')](_0x59864e,_0x610d('0x29')));}function initGraph(_0x277cc7,_0x1640c3){var _0x2afbe1=new Graph();for(var _0x5e3190 in _0x277cc7){if(_0x277cc7['hasOwnProperty'](_0x5e3190)){if(_['isArray'](_0x277cc7[_0x5e3190])){for(var _0x326682=0x0;_0x326682<_0x277cc7[_0x5e3190][_0x610d('0x2a')];_0x326682+=0x1){addVertex(_0x2afbe1,_0x277cc7[_0x5e3190][_0x326682],_0x5e3190);}}else{addVertex(_0x2afbe1,_0x277cc7[_0x5e3190],_0x5e3190);}}}for(var _0x45ed28=0x0;_0x45ed28<_0x1640c3[_0x610d('0x2a')];_0x45ed28+=0x1){if(_0x1640c3[_0x45ed28][_0x610d('0x2b')]&&_0x1640c3[_0x45ed28]['target']){_0x2afbe1[_0x610d('0x2c')](_0x1640c3[_0x45ed28][_0x610d('0x2b')],_0x1640c3[_0x45ed28][_0x610d('0x2d')],_0x1640c3[_0x45ed28][_0x610d('0x2e')]);}}return _0x2afbe1;}function getSquareProject(_0x658cc3,_0x3f641d){rpc[_0x610d('0x2f')](_0x658cc3)[_0x610d('0x30')](function(_0x413d2e){_0x3f641d(null,_0x413d2e);})[_0x610d('0x31')](function(_0x42b859){_0x3f641d(null,_0x42b859);});}function createSquareReport(_0x5d9865,_0x31eb61){rpc[_0x610d('0x32')](_0x5d9865)['then'](function(_0x48f9e5){if(_0x31eb61){_0x31eb61(null,_0x48f9e5);}})[_0x610d('0x31')](function(_0x5350c0){if(_0x31eb61){_0x31eb61(null,_0x5350c0);}});}function setChannelVariables(_0x8806a9){for(var _0x5c7622 in _0x8806a9){if(_0x8806a9[_0x610d('0x25')](_0x5c7622)){if(_0x5c7622[_0x610d('0x33')](_0x610d('0x34'))===0x0){_0x8806a9[_0x5c7622['substring'](0x4)]=_0x8806a9[_0x5c7622];delete _0x8806a9[_0x5c7622];}}}}function getLogFromObject(_0xffdaf4){return util[_0x610d('0x35')](_0xffdaf4,{'showHidden':![],'depth':null});}function agiHandler(_0x11aedf){var _0x1a44a8,_0x1f4c0b,_0x415d72,_0x6b50d0,_0x61ab05;logger['debug'](_0x610d('0x36'),JSON[_0x610d('0x37')](_0x11aedf,null,0x2));logger['info'](util[_0x610d('0x17')](_0x610d('0x38'),_0x11aedf[_0x610d('0x1b')],_0x11aedf[_0x610d('0x1c')],_0x11aedf[_0x610d('0x1d')],_0x11aedf['dnid'],_0x11aedf[_0x610d('0x1f')]));_0x11aedf['on'](_0x610d('0xf'),errorHandler);_0x11aedf['on'](_0x610d('0x39'),closeHandler);_0x11aedf['on'](_0x610d('0x3a'),timeoutHandler);_0x11aedf['evtHangup']=![];_0x11aedf['on'](_0x610d('0x3b'),hangupHandler);var _0x12f071=getSquareProject[_0x610d('0x3c')](null,_0x11aedf['arg_1']);if(_0x12f071){if(_0x12f071['production']){_0x1a44a8=getRoot(_0x12f071[_0x610d('0x3d')]);if(_0x1a44a8&&_0x1a44a8['start']){logger['debug'](_0x610d('0x3e'),JSON[_0x610d('0x37')](_0x1a44a8,null,0x2));_0x11aedf[_0x610d('0x3f')]=moment()[_0x610d('0x17')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f4c0b=initGraph(_[_0x610d('0x28')](_0x1a44a8,_0x610d('0x29')),_0x1a44a8[_0x610d('0x29')]);_0x415d72=new Vertices(_0x11aedf,rpc,mailRpc);logger[_0x610d('0x11')](util[_0x610d('0x17')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x11aedf[_0x610d('0x1b')],_0x11aedf[_0x610d('0x1c')],_0x11aedf[_0x610d('0x1d')],_0x11aedf[_0x610d('0x1e')],_0x11aedf['uniqueid']));_0x1f4c0b[_0x610d('0x40')](_0x1a44a8['start']['id'],function(_0x5704f2){try{_0x5704f2=_0x415d72[_0x610d('0x41')](_0x5704f2);logger[_0x610d('0x42')](_0x610d('0x43'),JSON[_0x610d('0x37')](_0x5704f2,null,0x2));if(_0x5704f2['agicommand']===_0x610d('0x44')){logger['info']('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x11aedf[_0x610d('0x45')]=_0x5704f2[_0x610d('0x45')]||_0x11aedf[_0x610d('0x45')];_0x11aedf[_0x610d('0x46')]=_0x5704f2[_0x610d('0x46')];_0x11aedf[_0x610d('0x47')]=_0x5704f2[_0x610d('0x47')]?_0x5704f2[_0x610d('0x47')]-0x1:0x1;return null;}else if(_0x5704f2&&_0x415d72[_0x5704f2[_0x610d('0x24')]]){_0x61ab05=_0x415d72[_0x5704f2[_0x610d('0x24')]](_0x5704f2);logger['info'](_0x610d('0x48'),JSON[_0x610d('0x37')](_0x61ab05,null,0x2));if(_0x61ab05&&_0x61ab05[_0x610d('0x49')]===AGI_CODE_SUCCESS&&_0x61ab05[_0x610d('0x4a')]!==AGI_RESULT_ERROR&&!_0x11aedf[_0x610d('0x21')]){logger[_0x610d('0x42')]('response',getLogFromObject(_0x61ab05));return _[_0x610d('0x4b')](_0x61ab05[_0x610d('0x4a')])?null:_0x61ab05[_0x610d('0x4a')]['toString']();}else{logger['error'](_0x610d('0x48'),getLogFromObject(_0x61ab05));return null;}}else{logger[_0x610d('0xf')]('agicommand\x20not\x20found');return null;}}catch(_0x3518ed){logger['error'](_0x3518ed[_0x610d('0x19')]);return null;}});if(_0x1a44a8[_0x610d('0x4c')]){logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x4d'),_0x11aedf[_0x610d('0x1b')],_0x11aedf[_0x610d('0x1c')],_0x11aedf[_0x610d('0x1d')],_0x11aedf[_0x610d('0x1e')],_0x11aedf['uniqueid']));_0x1f4c0b[_0x610d('0x40')](_0x1a44a8[_0x610d('0x4c')]['id'],function(_0x2415d8){try{_0x2415d8=_0x415d72[_0x610d('0x41')](_0x2415d8);logger[_0x610d('0x42')](_0x610d('0x43'),JSON[_0x610d('0x37')](_0x2415d8,null,0x2));if(_0x2415d8&&_0x415d72[_0x2415d8[_0x610d('0x24')]]){_0x61ab05=_0x415d72[_0x2415d8[_0x610d('0x24')]](_0x2415d8);if(_0x61ab05){logger[_0x610d('0x42')](_0x610d('0x48'),getLogFromObject(_0x61ab05));return _[_0x610d('0x4b')](_0x61ab05[_0x610d('0x4a')])?null:_0x61ab05['result'][_0x610d('0x4e')]();}else{logger[_0x610d('0xf')](_0x610d('0x48'),getLogFromObject(_0x61ab05));return null;}}else{logger[_0x610d('0xf')](_0x610d('0x4f'));return null;}}catch(_0x348604){logger[_0x610d('0xf')](_0x348604['stack']);return null;}});}logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x50'),_0x11aedf[_0x610d('0x1b')],_0x11aedf[_0x610d('0x1c')],_0x11aedf[_0x610d('0x1d')],_0x11aedf[_0x610d('0x1e')],_0x11aedf[_0x610d('0x1f')]));logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x51'),_0x11aedf[_0x610d('0x45')],_0x11aedf[_0x610d('0x46')],parseInt(_0x11aedf[_0x610d('0x47')],0xa)+0x1));_0x11aedf[_0x610d('0x52')](_0x11aedf[_0x610d('0x45')],_0x11aedf['extension'],parseInt(_0x11aedf[_0x610d('0x47')],0xa)+0x1);_0x11aedf[_0x610d('0x39')]();}}else{logger[_0x610d('0xf')](util[_0x610d('0x17')](_0x610d('0x53'),_0x11aedf[_0x610d('0x1b')]));_0x11aedf[_0x610d('0x52')](_0x11aedf[_0x610d('0x45')],_0x11aedf[_0x610d('0x46')],parseInt(_0x11aedf[_0x610d('0x47')],0xa)+0x1);_0x11aedf['close']();}}else{logger[_0x610d('0xf')](util[_0x610d('0x17')]('Project\x20%s\x20not\x20found',_0x11aedf[_0x610d('0x1b')]));_0x11aedf[_0x610d('0x52')](_0x11aedf[_0x610d('0x45')],_0x11aedf[_0x610d('0x46')],parseInt(_0x11aedf[_0x610d('0x47')],0xa)+0x1);_0x11aedf['close']();}}function main(){var _0x1294d2;return utilLicense[_0x610d('0x54')]()[_0x610d('0x30')](function(_0x5c4628){if(_0x5c4628){if(_0x5c4628['voice']){if(_0x5c4628['callysquare']&&_0x5c4628[_0x610d('0x55')]>0x0){logger[_0x610d('0x11')](util[_0x610d('0x17')](_0x610d('0x56'),_0x5c4628['callysquare']));_0x1294d2=_0x5c4628['callysquare'];}else{logger['info'](_0x610d('0x57'));}}else{logger[_0x610d('0x11')](_0x610d('0x58'));_0x1294d2=-0x1;}}})[_0x610d('0x31')](function(_0x31cddf){logger[_0x610d('0xf')](_0x610d('0x59'),_0x31cddf[_0x610d('0x19')]);})[_0x610d('0x4c')](function(){var _0x39dec0=require(_0x610d('0x5a'))(config[_0x610d('0x6')][_0x610d('0x13')],config[_0x610d('0x6')]['ip'],_0x1294d2);_0x39dec0['on'](_0x610d('0xf'),errorHandler);_0x39dec0['on'](_0x610d('0x5b'),listeningHandler);_0x39dec0['on']('connection',connectionHandler);_0x39dec0['on'](_0x610d('0x39'),closeHandler);});}main();