Built motion from commit (unavailable).|2.4.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 _0xcd59=['indexOf','agi_','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','production','start','joinAt','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','response','code','result','isUndefined','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toString','[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','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','evtHangup','toJson','mxGraphModel','agicommand','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xcd59,0x14b));var _0x9cd5=function(_0x5bc4e2,_0x427ff9){_0x5bc4e2=_0x5bc4e2-0x0;var _0x4c93f9=_0xcd59[_0x5bc4e2];return _0x4c93f9;};'use strict';var parser=require(_0x9cd5('0x0'));var _=require(_0x9cd5('0x1'));var syncho=require(_0x9cd5('0x2'));var util=require(_0x9cd5('0x3'));var moment=require(_0x9cd5('0x4'));var config=require(_0x9cd5('0x5'));var logger=require('../../config/logger')(_0x9cd5('0x6'));var utilLicense=require(_0x9cd5('0x7'));var rpc=require(_0x9cd5('0x8'));var mailRpc=require(_0x9cd5('0x9'));var Graph=require(_0x9cd5('0xa'));var Vertices=require(_0x9cd5('0xb'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x9cd5('0x6')]=_[_0x9cd5('0xc')](config[_0x9cd5('0x6')],{'ip':_0x9cd5('0xd'),'port':0x11dd});function connectionHandler(_0x545407){process[_0x9cd5('0xe')](function(){syncho(function(){try{setChannelVariables(_0x545407);agiHandler(_0x545407);}catch(_0x15e76c){logger[_0x9cd5('0xf')](_0x15e76c[_0x9cd5('0x10')]);}});});}function listeningHandler(){console[_0x9cd5('0x11')](_0x9cd5('0x12'),config[_0x9cd5('0x6')][_0x9cd5('0x13')]);logger['info'](util[_0x9cd5('0x14')](_0x9cd5('0x15'),config[_0x9cd5('0x6')]['ip'],config[_0x9cd5('0x6')]['port']));}function errorHandler(_0x58d6de){if(_0x58d6de&&_0x58d6de[_0x9cd5('0x16')]&&_0x58d6de[_0x9cd5('0x17')]){logger[_0x9cd5('0xf')](util[_0x9cd5('0x14')](_0x9cd5('0x18'),_0x58d6de[_0x9cd5('0x16')],_0x58d6de['message']));}else{logger[_0x9cd5('0xf')](util[_0x9cd5('0x14')](_0x9cd5('0x19'),_0x58d6de['stack']));}}function closeHandler(){logger['info'](util['format'](_0x9cd5('0x1a'),this[_0x9cd5('0x1b')],this['calleridname'],this[_0x9cd5('0x1c')],this[_0x9cd5('0x1d')],this[_0x9cd5('0x1e')]));try{createSquareReport(this);}catch(_0x57b986){logger[_0x9cd5('0xf')](_0x57b986[_0x9cd5('0x10')]);}}function timeoutHandler(){logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')](_0x9cd5('0x20'),this[_0x9cd5('0x1b')],this['calleridname'],this[_0x9cd5('0x1c')],this[_0x9cd5('0x1d')],this[_0x9cd5('0x1e')]));}function hangupHandler(){logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x9cd5('0x1b')],this[_0x9cd5('0x21')],this[_0x9cd5('0x1c')],this[_0x9cd5('0x1d')],this[_0x9cd5('0x1e')]));this[_0x9cd5('0x22')]=!![];}function getRoot(_0x1cf603){return parser[_0x9cd5('0x23')](_0x1cf603,{'object':!![]})[_0x9cd5('0x24')]['root'];}function addVertex(_0x297f0e,_0xba8ee9,_0x1a88e3){_0xba8ee9[_0x9cd5('0x25')]=_0x1a88e3;if(_0xba8ee9['hasOwnProperty'](_0x9cd5('0x26'))){_0xba8ee9[_0x9cd5('0x27')]=parseInt(_0xba8ee9[_0x9cd5('0x26')],0xa);}_0x297f0e[_0x9cd5('0x28')](_[_0x9cd5('0x29')](_0xba8ee9,_0x9cd5('0x2a')));}function initGraph(_0x359cca,_0x4a245f){var _0x1dcb6f=new Graph();for(var _0x64a1c4 in _0x359cca){if(_0x359cca[_0x9cd5('0x2b')](_0x64a1c4)){if(_['isArray'](_0x359cca[_0x64a1c4])){for(var _0x5c33e9=0x0;_0x5c33e9<_0x359cca[_0x64a1c4][_0x9cd5('0x2c')];_0x5c33e9+=0x1){addVertex(_0x1dcb6f,_0x359cca[_0x64a1c4][_0x5c33e9],_0x64a1c4);}}else{addVertex(_0x1dcb6f,_0x359cca[_0x64a1c4],_0x64a1c4);}}}for(var _0x502257=0x0;_0x502257<_0x4a245f['length'];_0x502257+=0x1){if(_0x4a245f[_0x502257][_0x9cd5('0x2d')]&&_0x4a245f[_0x502257][_0x9cd5('0x2e')]){_0x1dcb6f[_0x9cd5('0x2f')](_0x4a245f[_0x502257]['source'],_0x4a245f[_0x502257][_0x9cd5('0x2e')],_0x4a245f[_0x502257][_0x9cd5('0x30')]);}}return _0x1dcb6f;}function getSquareProject(_0x27e1fd,_0x2689c7){rpc[_0x9cd5('0x31')](_0x27e1fd)[_0x9cd5('0x32')](function(_0x1dbddc){_0x2689c7(null,_0x1dbddc);})[_0x9cd5('0x33')](function(_0x36b0ad){_0x2689c7(null,_0x36b0ad);});}function createSquareReport(_0x1c81fd,_0x3dc2c0){rpc[_0x9cd5('0x34')](_0x1c81fd)[_0x9cd5('0x32')](function(_0x21354a){if(_0x3dc2c0){_0x3dc2c0(null,_0x21354a);}})['catch'](function(_0x135dec){if(_0x3dc2c0){_0x3dc2c0(null,_0x135dec);}});}function setChannelVariables(_0x2a6a34){for(var _0x4bff30 in _0x2a6a34){if(_0x2a6a34['hasOwnProperty'](_0x4bff30)){if(_0x4bff30[_0x9cd5('0x35')](_0x9cd5('0x36'))===0x0){_0x2a6a34[_0x4bff30['substring'](0x4)]=_0x2a6a34[_0x4bff30];delete _0x2a6a34[_0x4bff30];}}}}function getLogFromObject(_0x2599fc){return util['inspect'](_0x2599fc,{'showHidden':![],'depth':null});}function agiHandler(_0x590ec3){var _0x7622d8,_0x462d9c,_0x3a071d,_0x392441,_0x53826d;logger[_0x9cd5('0x37')](_0x9cd5('0x38'),JSON[_0x9cd5('0x39')](_0x590ec3,null,0x2));logger['info'](util[_0x9cd5('0x14')](_0x9cd5('0x3a'),_0x590ec3[_0x9cd5('0x1b')],_0x590ec3[_0x9cd5('0x21')],_0x590ec3[_0x9cd5('0x1c')],_0x590ec3[_0x9cd5('0x1d')],_0x590ec3[_0x9cd5('0x1e')]));_0x590ec3['on'](_0x9cd5('0xf'),errorHandler);_0x590ec3['on'](_0x9cd5('0x3b'),closeHandler);_0x590ec3['on'](_0x9cd5('0x3c'),timeoutHandler);_0x590ec3[_0x9cd5('0x22')]=![];_0x590ec3['on']('hangup',hangupHandler);var _0x32e253=getSquareProject['sync'](null,_0x590ec3['arg_1']);if(_0x32e253){if(_0x32e253[_0x9cd5('0x3d')]){_0x7622d8=getRoot(_0x32e253[_0x9cd5('0x3d')]);if(_0x7622d8&&_0x7622d8[_0x9cd5('0x3e')]){logger[_0x9cd5('0x37')]('root',JSON[_0x9cd5('0x39')](_0x7622d8,null,0x2));_0x590ec3[_0x9cd5('0x3f')]=moment()[_0x9cd5('0x14')](_0x9cd5('0x40'));_0x462d9c=initGraph(_['omit'](_0x7622d8,_0x9cd5('0x2a')),_0x7622d8[_0x9cd5('0x2a')]);_0x3a071d=new Vertices(_0x590ec3,rpc,mailRpc);logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')](_0x9cd5('0x41'),_0x590ec3[_0x9cd5('0x1b')],_0x590ec3['calleridname'],_0x590ec3[_0x9cd5('0x1c')],_0x590ec3[_0x9cd5('0x1d')],_0x590ec3[_0x9cd5('0x1e')]));_0x462d9c[_0x9cd5('0x42')](_0x7622d8[_0x9cd5('0x3e')]['id'],function(_0x4182bd){try{_0x4182bd=_0x3a071d[_0x9cd5('0x43')](_0x4182bd);logger[_0x9cd5('0x37')](_0x9cd5('0x44'),JSON[_0x9cd5('0x39')](_0x4182bd,null,0x2));if(_0x4182bd[_0x9cd5('0x25')]===_0x9cd5('0x45')){logger[_0x9cd5('0x1f')](_0x9cd5('0x46'));_0x590ec3[_0x9cd5('0x47')]=_0x4182bd[_0x9cd5('0x47')]||_0x590ec3[_0x9cd5('0x47')];_0x590ec3[_0x9cd5('0x48')]=_0x4182bd['extension'];_0x590ec3[_0x9cd5('0x49')]=_0x4182bd['priority']?_0x4182bd[_0x9cd5('0x49')]-0x1:0x1;return null;}else if(_0x4182bd&&_0x3a071d[_0x4182bd[_0x9cd5('0x25')]]){_0x53826d=_0x3a071d[_0x4182bd[_0x9cd5('0x25')]](_0x4182bd);logger[_0x9cd5('0x1f')](_0x9cd5('0x4a'),JSON['stringify'](_0x53826d,null,0x2));if(_0x53826d&&_0x53826d[_0x9cd5('0x4b')]===AGI_CODE_SUCCESS&&_0x53826d[_0x9cd5('0x4c')]!==AGI_RESULT_ERROR&&!_0x590ec3[_0x9cd5('0x22')]){logger['debug'](_0x9cd5('0x4a'),getLogFromObject(_0x53826d));return _[_0x9cd5('0x4d')](_0x53826d[_0x9cd5('0x4c')])?null:_0x53826d[_0x9cd5('0x4c')]['toString']();}else{logger[_0x9cd5('0xf')](_0x9cd5('0x4a'),getLogFromObject(_0x53826d));return null;}}else{logger[_0x9cd5('0xf')](_0x9cd5('0x4e'));return null;}}catch(_0x1c4079){logger[_0x9cd5('0xf')](_0x1c4079[_0x9cd5('0x10')]);return null;}});if(_0x7622d8[_0x9cd5('0x4f')]){logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')](_0x9cd5('0x50'),_0x590ec3[_0x9cd5('0x1b')],_0x590ec3[_0x9cd5('0x21')],_0x590ec3[_0x9cd5('0x1c')],_0x590ec3[_0x9cd5('0x1d')],_0x590ec3[_0x9cd5('0x1e')]));_0x462d9c[_0x9cd5('0x42')](_0x7622d8[_0x9cd5('0x4f')]['id'],function(_0x4ea20d){try{_0x4ea20d=_0x3a071d[_0x9cd5('0x43')](_0x4ea20d);logger[_0x9cd5('0x37')](_0x9cd5('0x44'),JSON[_0x9cd5('0x39')](_0x4ea20d,null,0x2));if(_0x4ea20d&&_0x3a071d[_0x4ea20d['agicommand']]){_0x53826d=_0x3a071d[_0x4ea20d[_0x9cd5('0x25')]](_0x4ea20d);if(_0x53826d){logger[_0x9cd5('0x37')]('response',getLogFromObject(_0x53826d));return _[_0x9cd5('0x4d')](_0x53826d[_0x9cd5('0x4c')])?null:_0x53826d[_0x9cd5('0x4c')][_0x9cd5('0x51')]();}else{logger[_0x9cd5('0xf')](_0x9cd5('0x4a'),getLogFromObject(_0x53826d));return null;}}else{logger[_0x9cd5('0xf')](_0x9cd5('0x4e'));return null;}}catch(_0x5b6c7d){logger['error'](_0x5b6c7d[_0x9cd5('0x10')]);return null;}});}logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')](_0x9cd5('0x52'),_0x590ec3['arg_1'],_0x590ec3[_0x9cd5('0x21')],_0x590ec3['callerid'],_0x590ec3['dnid'],_0x590ec3[_0x9cd5('0x1e')]));logger[_0x9cd5('0x1f')](util[_0x9cd5('0x14')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x590ec3[_0x9cd5('0x47')],_0x590ec3[_0x9cd5('0x48')],parseInt(_0x590ec3[_0x9cd5('0x49')],0xa)+0x1));_0x590ec3[_0x9cd5('0x53')](_0x590ec3[_0x9cd5('0x47')],_0x590ec3[_0x9cd5('0x48')],parseInt(_0x590ec3['priority'],0xa)+0x1);_0x590ec3['close']();}}else{logger[_0x9cd5('0xf')](util[_0x9cd5('0x14')](_0x9cd5('0x54'),_0x590ec3[_0x9cd5('0x1b')]));_0x590ec3[_0x9cd5('0x53')](_0x590ec3['context'],_0x590ec3['extension'],parseInt(_0x590ec3['priority'],0xa)+0x1);_0x590ec3['close']();}}else{logger[_0x9cd5('0xf')](util[_0x9cd5('0x14')](_0x9cd5('0x55'),_0x590ec3[_0x9cd5('0x1b')]));_0x590ec3[_0x9cd5('0x53')](_0x590ec3[_0x9cd5('0x47')],_0x590ec3[_0x9cd5('0x48')],parseInt(_0x590ec3[_0x9cd5('0x49')],0xa)+0x1);_0x590ec3[_0x9cd5('0x3b')]();}}function main(){var _0x426016;return utilLicense[_0x9cd5('0x56')]()[_0x9cd5('0x32')](function(_0x39b81b){if(_0x39b81b){if(_0x39b81b[_0x9cd5('0x57')]){if(_0x39b81b['callysquare']&&_0x39b81b[_0x9cd5('0x58')]>0x0){logger[_0x9cd5('0x1f')](util['format'](_0x9cd5('0x59'),_0x39b81b[_0x9cd5('0x58')]));_0x426016=_0x39b81b[_0x9cd5('0x58')];}else{logger[_0x9cd5('0x1f')](_0x9cd5('0x5a'));}}else{logger[_0x9cd5('0x1f')](_0x9cd5('0x5b'));_0x426016=-0x1;}}})['catch'](function(_0x538ffa){logger[_0x9cd5('0xf')](_0x9cd5('0x5c'),_0x538ffa[_0x9cd5('0x10')]);})[_0x9cd5('0x4f')](function(){var _0x17b678=require(_0x9cd5('0x5d'))(config[_0x9cd5('0x6')][_0x9cd5('0x13')],config[_0x9cd5('0x6')]['ip'],_0x426016);_0x17b678['on'](_0x9cd5('0xf'),errorHandler);_0x17b678['on'](_0x9cd5('0x5e'),listeningHandler);_0x17b678['on'](_0x9cd5('0x5f'),connectionHandler);_0x17b678['on'](_0x9cd5('0x3b'),closeHandler);});}main();