Built motion from commit (unavailable).|2.5.4
[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 _0x9fda=['getSquareProject','then','catch','createSquareReport','indexOf','agi_','substring','inspect','debug','stringify','close','timeout','sync','SQUAREROOT','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','vertices','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','LOOP\x20through\x20graph','traverseBFS','clear','VERTEX','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','Project\x20%s\x20not\x20published','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','util','moment','../../config/environment','../../config/logger','../../config/license/util','./rpc','./graph','./vertices','agi','127.0.0.1','nextTick','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','format','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','uniqueid','calleridname','callerid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','root','agicommand','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','source','addEdge','target'];(function(_0x35da0e,_0x3b28ed){var _0x5dff00=function(_0x4c7d7e){while(--_0x4c7d7e){_0x35da0e['push'](_0x35da0e['shift']());}};_0x5dff00(++_0x3b28ed);}(_0x9fda,0x8c));var _0xa9fd=function(_0x214c18,_0x1b92a3){_0x214c18=_0x214c18-0x0;var _0x1bdaac=_0x9fda[_0x214c18];return _0x1bdaac;};'use strict';var parser=require(_0xa9fd('0x0'));var _=require('lodash');var syncho=require('syncho');var util=require(_0xa9fd('0x1'));var moment=require(_0xa9fd('0x2'));var config=require(_0xa9fd('0x3'));var logger=require(_0xa9fd('0x4'))('agi');var utilLicense=require(_0xa9fd('0x5'));var rpc=require(_0xa9fd('0x6'));var mailRpc=require('./mailRpc');var Graph=require(_0xa9fd('0x7'));var Vertices=require(_0xa9fd('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_['defaults'](config[_0xa9fd('0x9')],{'ip':_0xa9fd('0xa'),'port':0x11dd});function connectionHandler(_0x4072e3){process[_0xa9fd('0xb')](function(){syncho(function(){try{setChannelVariables(_0x4072e3);agiHandler(_0x4072e3);}catch(_0x2c019e){logger['error'](_0x2c019e[_0xa9fd('0xc')]);}});});}function listeningHandler(){console[_0xa9fd('0xd')](_0xa9fd('0xe'),config['agi'][_0xa9fd('0xf')]);logger['info'](util['format'](_0xa9fd('0x10'),config[_0xa9fd('0x9')]['ip'],config[_0xa9fd('0x9')]['port']));}function errorHandler(_0x26f631){if(_0x26f631&&_0x26f631[_0xa9fd('0x11')]&&_0x26f631[_0xa9fd('0x12')]){logger[_0xa9fd('0x13')](util['format'](_0xa9fd('0x14'),_0x26f631[_0xa9fd('0x11')],_0x26f631[_0xa9fd('0x12')]));}else{logger[_0xa9fd('0x13')](util[_0xa9fd('0x15')](_0xa9fd('0x16'),_0x26f631[_0xa9fd('0xc')]));}}function closeHandler(){logger[_0xa9fd('0x17')](util['format'](_0xa9fd('0x18'),this[_0xa9fd('0x19')],this['calleridname'],this['callerid'],this[_0xa9fd('0x1a')],this[_0xa9fd('0x1b')]));try{createSquareReport(this);}catch(_0x431f80){logger[_0xa9fd('0x13')](_0x431f80[_0xa9fd('0xc')]);}}function timeoutHandler(){logger[_0xa9fd('0x17')](util[_0xa9fd('0x15')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xa9fd('0x1c')],this[_0xa9fd('0x1d')],this[_0xa9fd('0x1a')],this[_0xa9fd('0x1b')]));}function hangupHandler(){logger[_0xa9fd('0x17')](util[_0xa9fd('0x15')](_0xa9fd('0x1e'),this['arg_1'],this[_0xa9fd('0x1c')],this['callerid'],this['dnid'],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x257cc0){return parser[_0xa9fd('0x1f')](_0x257cc0,{'object':!![]})[_0xa9fd('0x20')][_0xa9fd('0x21')];}function addVertex(_0x38af9a,_0x53ce13,_0x165b02){_0x53ce13[_0xa9fd('0x22')]=_0x165b02;if(_0x53ce13['hasOwnProperty'](_0xa9fd('0x23'))){_0x53ce13[_0xa9fd('0x24')]=parseInt(_0x53ce13[_0xa9fd('0x23')],0xa);}_0x38af9a[_0xa9fd('0x25')](_[_0xa9fd('0x26')](_0x53ce13,_0xa9fd('0x27')));}function initGraph(_0x44a525,_0x17d70f){var _0xddf48d=new Graph();for(var _0x249484 in _0x44a525){if(_0x44a525[_0xa9fd('0x28')](_0x249484)){if(_[_0xa9fd('0x29')](_0x44a525[_0x249484])){for(var _0x43098d=0x0;_0x43098d<_0x44a525[_0x249484][_0xa9fd('0x2a')];_0x43098d+=0x1){addVertex(_0xddf48d,_0x44a525[_0x249484][_0x43098d],_0x249484);}}else{addVertex(_0xddf48d,_0x44a525[_0x249484],_0x249484);}}}for(var _0xe12216=0x0;_0xe12216<_0x17d70f[_0xa9fd('0x2a')];_0xe12216+=0x1){if(_0x17d70f[_0xe12216][_0xa9fd('0x2b')]&&_0x17d70f[_0xe12216]['target']){_0xddf48d[_0xa9fd('0x2c')](_0x17d70f[_0xe12216][_0xa9fd('0x2b')],_0x17d70f[_0xe12216][_0xa9fd('0x2d')],_0x17d70f[_0xe12216]['value']);}}return _0xddf48d;}function getSquareProject(_0x23b96b,_0x1fb141){rpc[_0xa9fd('0x2e')](_0x23b96b)[_0xa9fd('0x2f')](function(_0x1ff8ec){_0x1fb141(null,_0x1ff8ec);})[_0xa9fd('0x30')](function(_0x34480a){_0x1fb141(null,_0x34480a);});}function createSquareReport(_0x5f1cda,_0x22a904){rpc[_0xa9fd('0x31')](_0x5f1cda)[_0xa9fd('0x2f')](function(_0x5604d8){if(_0x22a904){_0x22a904(null,_0x5604d8);}})[_0xa9fd('0x30')](function(_0x151ee8){if(_0x22a904){_0x22a904(null,_0x151ee8);}});}function setChannelVariables(_0x45d0fd){for(var _0x189b77 in _0x45d0fd){if(_0x45d0fd['hasOwnProperty'](_0x189b77)){if(_0x189b77[_0xa9fd('0x32')](_0xa9fd('0x33'))===0x0){_0x45d0fd[_0x189b77[_0xa9fd('0x34')](0x4)]=_0x45d0fd[_0x189b77];delete _0x45d0fd[_0x189b77];}}}}function getLogFromObject(_0x38199f){return util[_0xa9fd('0x35')](_0x38199f,{'showHidden':![],'depth':null});}function agiHandler(_0xa17848){var _0x54a271,_0x4809c8,_0xd687af,_0x4582d9,_0x2e4bf1;logger[_0xa9fd('0x36')]('variables',JSON[_0xa9fd('0x37')](_0xa17848,null,0x2));logger['info'](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0xa17848[_0xa9fd('0x19')],_0xa17848[_0xa9fd('0x1c')],_0xa17848['callerid'],_0xa17848[_0xa9fd('0x1a')],_0xa17848[_0xa9fd('0x1b')]));_0xa17848['on'](_0xa9fd('0x13'),errorHandler);_0xa17848['on'](_0xa9fd('0x38'),closeHandler);_0xa17848['on'](_0xa9fd('0x39'),timeoutHandler);_0xa17848['evtHangup']=![];_0xa17848['on']('hangup',hangupHandler);var _0x509b7d=getSquareProject[_0xa9fd('0x3a')](null,_0xa17848[_0xa9fd('0x19')]);if(_0x509b7d){if(_0x509b7d['production']){_0x54a271=getRoot(_0x509b7d['production']);console[_0xa9fd('0xd')](_0xa9fd('0x3b'),_0x54a271);if(_0x54a271&&_0x54a271[_0xa9fd('0x3c')]){logger[_0xa9fd('0x36')](_0xa9fd('0x21'),JSON[_0xa9fd('0x37')](_0x54a271,null,0x2));_0xa17848[_0xa9fd('0x3d')]=moment()[_0xa9fd('0x15')](_0xa9fd('0x3e'));_0x4809c8=initGraph(_[_0xa9fd('0x26')](_0x54a271,_0xa9fd('0x27')),_0x54a271[_0xa9fd('0x27')]);_0xd687af=new Vertices(_0xa17848,rpc,mailRpc);console['log'](_0xa9fd('0x3f'),_0xd687af);logger[_0xa9fd('0x17')](util['format'](_0xa9fd('0x40'),_0xa17848[_0xa9fd('0x19')],_0xa17848[_0xa9fd('0x1c')],_0xa17848[_0xa9fd('0x1d')],_0xa17848[_0xa9fd('0x1a')],_0xa17848['uniqueid']));console[_0xa9fd('0xd')](_0xa9fd('0x41'));_0x4809c8[_0xa9fd('0x42')](_0x54a271[_0xa9fd('0x3c')]['id'],function(_0x5c164a){try{_0x5c164a=_0xd687af[_0xa9fd('0x43')](_0x5c164a);logger[_0xa9fd('0x36')]('vertex',JSON[_0xa9fd('0x37')](_0x5c164a,null,0x2));console[_0xa9fd('0xd')](_0xa9fd('0x44'),_0x5c164a);if(_0x5c164a[_0xa9fd('0x22')]==='gotoc'){logger[_0xa9fd('0x17')](_0xa9fd('0x45'));_0xa17848[_0xa9fd('0x46')]=_0x5c164a[_0xa9fd('0x46')]||_0xa17848['context'];_0xa17848['extension']=_0x5c164a[_0xa9fd('0x47')];_0xa17848[_0xa9fd('0x48')]=_0x5c164a[_0xa9fd('0x48')]?_0x5c164a[_0xa9fd('0x48')]-0x1:0x1;return null;}else if(_0x5c164a&&_0xd687af[_0x5c164a[_0xa9fd('0x22')]]){_0x2e4bf1=_0xd687af[_0x5c164a[_0xa9fd('0x22')]](_0x5c164a);console[_0xa9fd('0xd')]('vresponse',_0x2e4bf1);logger[_0xa9fd('0x17')](_0xa9fd('0x49'),JSON[_0xa9fd('0x37')](_0x2e4bf1,null,0x2));if(_0x2e4bf1&&_0x2e4bf1[_0xa9fd('0x4a')]===AGI_CODE_SUCCESS&&_0x2e4bf1[_0xa9fd('0x4b')]!==AGI_RESULT_ERROR&&!_0xa17848['evtHangup']){logger['debug'](_0xa9fd('0x49'),getLogFromObject(_0x2e4bf1));return _[_0xa9fd('0x4c')](_0x2e4bf1[_0xa9fd('0x4b')])?null:_0x2e4bf1['result'][_0xa9fd('0x4d')]();}else{logger[_0xa9fd('0x13')]('response',getLogFromObject(_0x2e4bf1));return null;}}else{logger[_0xa9fd('0x13')](_0xa9fd('0x4e'));return null;}}catch(_0x220206){logger[_0xa9fd('0x13')](_0x220206['stack']);return null;}});if(_0x54a271[_0xa9fd('0x4f')]){logger[_0xa9fd('0x17')](util['format'](_0xa9fd('0x50'),_0xa17848[_0xa9fd('0x19')],_0xa17848[_0xa9fd('0x1c')],_0xa17848[_0xa9fd('0x1d')],_0xa17848[_0xa9fd('0x1a')],_0xa17848[_0xa9fd('0x1b')]));_0x4809c8[_0xa9fd('0x42')](_0x54a271[_0xa9fd('0x4f')]['id'],function(_0x5ce583){try{_0x5ce583=_0xd687af[_0xa9fd('0x43')](_0x5ce583);logger[_0xa9fd('0x36')](_0xa9fd('0x51'),JSON[_0xa9fd('0x37')](_0x5ce583,null,0x2));if(_0x5ce583&&_0xd687af[_0x5ce583[_0xa9fd('0x22')]]){_0x2e4bf1=_0xd687af[_0x5ce583[_0xa9fd('0x22')]](_0x5ce583);if(_0x2e4bf1){logger[_0xa9fd('0x36')]('response',getLogFromObject(_0x2e4bf1));return _[_0xa9fd('0x4c')](_0x2e4bf1[_0xa9fd('0x4b')])?null:_0x2e4bf1['result'][_0xa9fd('0x4d')]();}else{logger[_0xa9fd('0x13')]('response',getLogFromObject(_0x2e4bf1));return null;}}else{logger[_0xa9fd('0x13')](_0xa9fd('0x4e'));return null;}}catch(_0x35c0e7){logger[_0xa9fd('0x13')](_0x35c0e7[_0xa9fd('0xc')]);return null;}});}logger[_0xa9fd('0x17')](util[_0xa9fd('0x15')](_0xa9fd('0x52'),_0xa17848[_0xa9fd('0x19')],_0xa17848[_0xa9fd('0x1c')],_0xa17848[_0xa9fd('0x1d')],_0xa17848[_0xa9fd('0x1a')],_0xa17848[_0xa9fd('0x1b')]));logger['info'](util[_0xa9fd('0x15')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0xa17848[_0xa9fd('0x46')],_0xa17848[_0xa9fd('0x47')],parseInt(_0xa17848['priority'],0xa)+0x1));_0xa17848[_0xa9fd('0x53')](_0xa17848[_0xa9fd('0x46')],_0xa17848[_0xa9fd('0x47')],parseInt(_0xa17848[_0xa9fd('0x48')],0xa)+0x1);_0xa17848[_0xa9fd('0x38')]();}}else{logger['error'](util[_0xa9fd('0x15')](_0xa9fd('0x54'),_0xa17848[_0xa9fd('0x19')]));_0xa17848[_0xa9fd('0x53')](_0xa17848[_0xa9fd('0x46')],_0xa17848[_0xa9fd('0x47')],parseInt(_0xa17848['priority'],0xa)+0x1);_0xa17848[_0xa9fd('0x38')]();}}else{logger[_0xa9fd('0x13')](util[_0xa9fd('0x15')]('Project\x20%s\x20not\x20found',_0xa17848[_0xa9fd('0x19')]));_0xa17848[_0xa9fd('0x53')](_0xa17848[_0xa9fd('0x46')],_0xa17848[_0xa9fd('0x47')],parseInt(_0xa17848[_0xa9fd('0x48')],0xa)+0x1);_0xa17848[_0xa9fd('0x38')]();}}function main(){var _0x467231;return utilLicense[_0xa9fd('0x55')]()[_0xa9fd('0x2f')](function(_0x1a520e){if(_0x1a520e){if(_0x1a520e['voice']){if(_0x1a520e[_0xa9fd('0x56')]&&_0x1a520e['callysquare']>0x0){logger[_0xa9fd('0x17')](util[_0xa9fd('0x15')](_0xa9fd('0x57'),_0x1a520e['callysquare']));_0x467231=_0x1a520e[_0xa9fd('0x56')];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xa9fd('0x17')](_0xa9fd('0x58'));_0x467231=-0x1;}}})[_0xa9fd('0x30')](function(_0x9c8c94){logger[_0xa9fd('0x13')](_0xa9fd('0x59'),_0x9c8c94[_0xa9fd('0xc')]);})[_0xa9fd('0x4f')](function(){var _0x268c34=require(_0xa9fd('0x5a'))(config[_0xa9fd('0x9')][_0xa9fd('0xf')],config[_0xa9fd('0x9')]['ip'],_0x467231);_0x268c34['on'](_0xa9fd('0x13'),errorHandler);_0x268c34['on'](_0xa9fd('0x5b'),listeningHandler);_0x268c34['on'](_0xa9fd('0x5c'),connectionHandler);_0x268c34['on'](_0xa9fd('0x38'),closeHandler);});}main();