Built motion from commit (unavailable).|2.6.0
[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 _0x3baf=['info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','arg_1','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','mxGraphModel','root','retry','maxRetry','addVertex','omit','hasOwnProperty','isArray','target','addEdge','value','then','createSquareReport','catch','agi_','substring','inspect','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','sync','production','start','debug','joinAt','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','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','[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','voice','callysquare','[LICENSE]','./server','listening','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port'];(function(_0x500611,_0x179481){var _0x379d32=function(_0x10fe08){while(--_0x10fe08){_0x500611['push'](_0x500611['shift']());}};_0x379d32(++_0x179481);}(_0x3baf,0xf7));var _0xf3ba=function(_0x1bb191,_0x552afb){_0x1bb191=_0x1bb191-0x0;var _0x31b09f=_0x3baf[_0x1bb191];return _0x31b09f;};'use strict';var parser=require(_0xf3ba('0x0'));var _=require(_0xf3ba('0x1'));var syncho=require(_0xf3ba('0x2'));var util=require(_0xf3ba('0x3'));var moment=require(_0xf3ba('0x4'));var config=require(_0xf3ba('0x5'));var logger=require(_0xf3ba('0x6'))(_0xf3ba('0x7'));var utilLicense=require(_0xf3ba('0x8'));var rpc=require(_0xf3ba('0x9'));var mailRpc=require(_0xf3ba('0xa'));var Graph=require(_0xf3ba('0xb'));var Vertices=require(_0xf3ba('0xc'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xf3ba('0x7')]=_[_0xf3ba('0xd')](config['agi'],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x5ab058){process[_0xf3ba('0xe')](function(){syncho(function(){try{setChannelVariables(_0x5ab058);agiHandler(_0x5ab058);}catch(_0x5affaf){logger[_0xf3ba('0xf')](_0x5affaf[_0xf3ba('0x10')]);}});});}function listeningHandler(){console[_0xf3ba('0x11')](_0xf3ba('0x12'),config[_0xf3ba('0x7')][_0xf3ba('0x13')]);logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')](_0xf3ba('0x16'),config[_0xf3ba('0x7')]['ip'],config[_0xf3ba('0x7')][_0xf3ba('0x13')]));}function errorHandler(_0x46c2cf){if(_0x46c2cf&&_0x46c2cf[_0xf3ba('0x17')]&&_0x46c2cf[_0xf3ba('0x18')]){logger[_0xf3ba('0xf')](util[_0xf3ba('0x15')](_0xf3ba('0x19'),_0x46c2cf['name'],_0x46c2cf[_0xf3ba('0x18')]));}else{logger['error'](util[_0xf3ba('0x15')](_0xf3ba('0x1a'),_0x46c2cf[_0xf3ba('0x10')]));}}function closeHandler(){logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xf3ba('0x1b')],this[_0xf3ba('0x1c')],this[_0xf3ba('0x1d')],this['dnid'],this[_0xf3ba('0x1e')]));try{createSquareReport(this);}catch(_0x11fbd2){logger[_0xf3ba('0xf')](_0x11fbd2[_0xf3ba('0x10')]);}}function timeoutHandler(){logger['info'](util[_0xf3ba('0x15')](_0xf3ba('0x1f'),this['arg_1'],this['calleridname'],this[_0xf3ba('0x1d')],this[_0xf3ba('0x20')],this[_0xf3ba('0x1e')]));}function hangupHandler(){logger['info'](util[_0xf3ba('0x15')](_0xf3ba('0x21'),this[_0xf3ba('0x1b')],this[_0xf3ba('0x1c')],this[_0xf3ba('0x1d')],this[_0xf3ba('0x20')],this[_0xf3ba('0x1e')]));this['evtHangup']=!![];}function getRoot(_0x4e94a7){return parser['toJson'](_0x4e94a7,{'object':!![]})[_0xf3ba('0x22')][_0xf3ba('0x23')];}function addVertex(_0x6f538f,_0x3b6404,_0x2cc01a){_0x3b6404['agicommand']=_0x2cc01a;if(_0x3b6404['hasOwnProperty'](_0xf3ba('0x24'))){_0x3b6404[_0xf3ba('0x25')]=parseInt(_0x3b6404['retry'],0xa);}_0x6f538f[_0xf3ba('0x26')](_[_0xf3ba('0x27')](_0x3b6404,'mxCell'));}function initGraph(_0x4932b9,_0x396089){var _0x7effa1=new Graph();for(var _0x5f1709 in _0x4932b9){if(_0x4932b9[_0xf3ba('0x28')](_0x5f1709)){if(_[_0xf3ba('0x29')](_0x4932b9[_0x5f1709])){for(var _0x15ac44=0x0;_0x15ac44<_0x4932b9[_0x5f1709]['length'];_0x15ac44+=0x1){addVertex(_0x7effa1,_0x4932b9[_0x5f1709][_0x15ac44],_0x5f1709);}}else{addVertex(_0x7effa1,_0x4932b9[_0x5f1709],_0x5f1709);}}}for(var _0x29ed57=0x0;_0x29ed57<_0x396089['length'];_0x29ed57+=0x1){if(_0x396089[_0x29ed57]['source']&&_0x396089[_0x29ed57][_0xf3ba('0x2a')]){_0x7effa1[_0xf3ba('0x2b')](_0x396089[_0x29ed57]['source'],_0x396089[_0x29ed57][_0xf3ba('0x2a')],_0x396089[_0x29ed57][_0xf3ba('0x2c')]);}}return _0x7effa1;}function getSquareProject(_0x5081aa,_0x57da3b){rpc['getSquareProject'](_0x5081aa)[_0xf3ba('0x2d')](function(_0x6423f){_0x57da3b(null,_0x6423f);})['catch'](function(_0x16a106){_0x57da3b(null,_0x16a106);});}function createSquareReport(_0x5b2f0d,_0x48d81c){rpc[_0xf3ba('0x2e')](_0x5b2f0d)[_0xf3ba('0x2d')](function(_0x26b6e9){if(_0x48d81c){_0x48d81c(null,_0x26b6e9);}})[_0xf3ba('0x2f')](function(_0x1df823){if(_0x48d81c){_0x48d81c(null,_0x1df823);}});}function setChannelVariables(_0xf1b77a){for(var _0x508d52 in _0xf1b77a){if(_0xf1b77a[_0xf3ba('0x28')](_0x508d52)){if(_0x508d52['indexOf'](_0xf3ba('0x30'))===0x0){_0xf1b77a[_0x508d52[_0xf3ba('0x31')](0x4)]=_0xf1b77a[_0x508d52];delete _0xf1b77a[_0x508d52];}}}}function getLogFromObject(_0x5b8d31){return util[_0xf3ba('0x32')](_0x5b8d31,{'showHidden':![],'depth':null});}function agiHandler(_0x36b6a1){var _0x23ccad,_0xab4960,_0x4ba794,_0x213112,_0x553573;logger['debug']('variables',JSON[_0xf3ba('0x33')](_0x36b6a1,null,0x2));logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')](_0xf3ba('0x34'),_0x36b6a1[_0xf3ba('0x1b')],_0x36b6a1['calleridname'],_0x36b6a1[_0xf3ba('0x1d')],_0x36b6a1['dnid'],_0x36b6a1[_0xf3ba('0x1e')]));_0x36b6a1['on']('error',errorHandler);_0x36b6a1['on'](_0xf3ba('0x35'),closeHandler);_0x36b6a1['on'](_0xf3ba('0x36'),timeoutHandler);_0x36b6a1[_0xf3ba('0x37')]=![];_0x36b6a1['on'](_0xf3ba('0x38'),hangupHandler);var _0x55d9be=getSquareProject[_0xf3ba('0x39')](null,_0x36b6a1[_0xf3ba('0x1b')]);if(_0x55d9be){if(_0x55d9be['production']){_0x23ccad=getRoot(_0x55d9be[_0xf3ba('0x3a')]);if(_0x23ccad&&_0x23ccad[_0xf3ba('0x3b')]){logger[_0xf3ba('0x3c')](_0xf3ba('0x23'),JSON[_0xf3ba('0x33')](_0x23ccad,null,0x2));_0x36b6a1[_0xf3ba('0x3d')]=moment()[_0xf3ba('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0xab4960=initGraph(_[_0xf3ba('0x27')](_0x23ccad,'mxCell'),_0x23ccad[_0xf3ba('0x3e')]);_0x4ba794=new Vertices(_0x36b6a1,rpc,mailRpc);logger['info'](util[_0xf3ba('0x15')](_0xf3ba('0x3f'),_0x36b6a1[_0xf3ba('0x1b')],_0x36b6a1[_0xf3ba('0x1c')],_0x36b6a1[_0xf3ba('0x1d')],_0x36b6a1['dnid'],_0x36b6a1['uniqueid']));_0xab4960[_0xf3ba('0x40')](_0x23ccad[_0xf3ba('0x3b')]['id'],function(_0x417911){try{_0x417911=_0x4ba794[_0xf3ba('0x41')](_0x417911);logger[_0xf3ba('0x3c')](_0xf3ba('0x42'),JSON['stringify'](_0x417911,null,0x2));if(_0x417911[_0xf3ba('0x43')]==='gotoc'){logger[_0xf3ba('0x14')](_0xf3ba('0x44'));_0x36b6a1[_0xf3ba('0x45')]=_0x417911[_0xf3ba('0x45')]||_0x36b6a1[_0xf3ba('0x45')];_0x36b6a1[_0xf3ba('0x46')]=_0x417911[_0xf3ba('0x46')];_0x36b6a1[_0xf3ba('0x47')]=_0x417911['priority']?_0x417911[_0xf3ba('0x47')]-0x1:0x1;return null;}else if(_0x417911&&_0x4ba794[_0x417911[_0xf3ba('0x43')]]){_0x553573=_0x4ba794[_0x417911[_0xf3ba('0x43')]](_0x417911);logger[_0xf3ba('0x14')](_0xf3ba('0x48'),JSON[_0xf3ba('0x33')](_0x553573,null,0x2));if(_0x553573&&_0x553573[_0xf3ba('0x49')]===AGI_CODE_SUCCESS&&_0x553573['result']!==AGI_RESULT_ERROR&&!_0x36b6a1[_0xf3ba('0x37')]){logger[_0xf3ba('0x3c')]('response',getLogFromObject(_0x553573));return _[_0xf3ba('0x4a')](_0x553573[_0xf3ba('0x4b')])?null:_0x553573[_0xf3ba('0x4b')][_0xf3ba('0x4c')]();}else{logger[_0xf3ba('0xf')](_0xf3ba('0x48'),getLogFromObject(_0x553573));return null;}}else{logger[_0xf3ba('0xf')](_0xf3ba('0x4d'));return null;}}catch(_0x2a6255){logger[_0xf3ba('0xf')](_0x2a6255[_0xf3ba('0x10')]);return null;}});if(_0x23ccad[_0xf3ba('0x4e')]){logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')](_0xf3ba('0x4f'),_0x36b6a1[_0xf3ba('0x1b')],_0x36b6a1[_0xf3ba('0x1c')],_0x36b6a1[_0xf3ba('0x1d')],_0x36b6a1['dnid'],_0x36b6a1[_0xf3ba('0x1e')]));_0xab4960[_0xf3ba('0x40')](_0x23ccad['finally']['id'],function(_0x3517e7){try{_0x3517e7=_0x4ba794[_0xf3ba('0x41')](_0x3517e7);logger[_0xf3ba('0x3c')](_0xf3ba('0x42'),JSON['stringify'](_0x3517e7,null,0x2));if(_0x3517e7&&_0x4ba794[_0x3517e7['agicommand']]){_0x553573=_0x4ba794[_0x3517e7[_0xf3ba('0x43')]](_0x3517e7);if(_0x553573){logger[_0xf3ba('0x3c')](_0xf3ba('0x48'),getLogFromObject(_0x553573));return _[_0xf3ba('0x4a')](_0x553573['result'])?null:_0x553573[_0xf3ba('0x4b')][_0xf3ba('0x4c')]();}else{logger[_0xf3ba('0xf')]('response',getLogFromObject(_0x553573));return null;}}else{logger[_0xf3ba('0xf')](_0xf3ba('0x4d'));return null;}}catch(_0x3dd531){logger[_0xf3ba('0xf')](_0x3dd531[_0xf3ba('0x10')]);return null;}});}logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')](_0xf3ba('0x50'),_0x36b6a1[_0xf3ba('0x1b')],_0x36b6a1[_0xf3ba('0x1c')],_0x36b6a1['callerid'],_0x36b6a1[_0xf3ba('0x20')],_0x36b6a1[_0xf3ba('0x1e')]));logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x36b6a1[_0xf3ba('0x45')],_0x36b6a1['extension'],parseInt(_0x36b6a1['priority'],0xa)+0x1));_0x36b6a1[_0xf3ba('0x51')](_0x36b6a1[_0xf3ba('0x45')],_0x36b6a1[_0xf3ba('0x46')],parseInt(_0x36b6a1[_0xf3ba('0x47')],0xa)+0x1);_0x36b6a1[_0xf3ba('0x35')]();}}else{logger[_0xf3ba('0xf')](util[_0xf3ba('0x15')](_0xf3ba('0x52'),_0x36b6a1['arg_1']));_0x36b6a1[_0xf3ba('0x51')](_0x36b6a1[_0xf3ba('0x45')],_0x36b6a1[_0xf3ba('0x46')],parseInt(_0x36b6a1[_0xf3ba('0x47')],0xa)+0x1);_0x36b6a1['close']();}}else{logger['error'](util[_0xf3ba('0x15')](_0xf3ba('0x53'),_0x36b6a1[_0xf3ba('0x1b')]));_0x36b6a1[_0xf3ba('0x51')](_0x36b6a1[_0xf3ba('0x45')],_0x36b6a1['extension'],parseInt(_0x36b6a1[_0xf3ba('0x47')],0xa)+0x1);_0x36b6a1['close']();}}function main(){var _0x174828;return utilLicense['getLicense']()[_0xf3ba('0x2d')](function(_0x578000){if(_0x578000){if(_0x578000[_0xf3ba('0x54')]){if(_0x578000[_0xf3ba('0x55')]&&_0x578000[_0xf3ba('0x55')]>0x0){logger[_0xf3ba('0x14')](util[_0xf3ba('0x15')]('[LICENSE]\x20CHANNELS:\x20%s',_0x578000[_0xf3ba('0x55')]));_0x174828=_0x578000[_0xf3ba('0x55')];}else{logger[_0xf3ba('0x14')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xf3ba('0x14')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x174828=-0x1;}}})[_0xf3ba('0x2f')](function(_0x14b7b1){logger[_0xf3ba('0xf')](_0xf3ba('0x56'),_0x14b7b1[_0xf3ba('0x10')]);})[_0xf3ba('0x4e')](function(){var _0x1b7299=require(_0xf3ba('0x57'))(config[_0xf3ba('0x7')][_0xf3ba('0x13')],config[_0xf3ba('0x7')]['ip'],_0x174828);_0x1b7299['on']('error',errorHandler);_0x1b7299['on'](_0xf3ba('0x58'),listeningHandler);_0x1b7299['on']('connection',connectionHandler);_0x1b7299['on'](_0xf3ba('0x35'),closeHandler);});}main();