Built motion from commit 67e5df37.|2.0.68
[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 _0xe50c=['[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','production','start','debug','[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','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','exception','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','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','0.0.0.0','connection','lodash','syncho','util','../../config/environment','../../config/license/util','./mailRpc','./graph','./vertices','nextTick','syncho\x20error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x200.0.0.0:4573','name','message','error','format','[ERROR]\x20%s','stringify','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source','target','getSquareProject','catch','createSquareReport','then','updateSquareReport','agi_','inspect','variables'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe50c,0xce));var _0xce50=function(_0x2c4a8a,_0x29c2d1){_0x2c4a8a=_0x2c4a8a-0x0;var _0x321e5c=_0xe50c[_0x2c4a8a];return _0x321e5c;};'use strict';var parser=require('xml2json');var _=require(_0xce50('0x0'));var syncho=require(_0xce50('0x1'));var util=require(_0xce50('0x2'));var config=require(_0xce50('0x3'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0xce50('0x4'));var rpc=require('./rpc');var mailRpc=require(_0xce50('0x5'));var Graph=require(_0xce50('0x6'));var Vertices=require(_0xce50('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function connectionHandler(_0x48eda3){process[_0xce50('0x8')](function(){syncho(function(){try{setChannelVariables(_0x48eda3);agiHandler(_0x48eda3);}catch(_0x213ec4){logger['error'](_0xce50('0x9'),JSON['stringify'](_0x213ec4,null,0x2));}});});}function listeningHandler(_0x115819){console[_0xce50('0xa')](_0xce50('0xb'),0x11dd);logger[_0xce50('0xc')](_0xce50('0xd'));}function errorHandler(_0x5acea8){if(_0x5acea8&&_0x5acea8[_0xce50('0xe')]&&_0x5acea8[_0xce50('0xf')]){logger[_0xce50('0x10')](util[_0xce50('0x11')]('[%s]\x20%s',_0x5acea8['name'],_0x5acea8['message']));}else{logger[_0xce50('0x10')](util[_0xce50('0x11')](_0xce50('0x12'),JSON[_0xce50('0x13')](_0x5acea8,null,0x2)));}}function closeHandler(){logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x14'),this['arg_1'],this[_0xce50('0x15')],this['callerid'],this[_0xce50('0x16')],this[_0xce50('0x17')]));try{updateSquareReport(this);}catch(_0x5b8aef){logger[_0xce50('0x10')](_0x5b8aef['message']);}}function timeoutHandler(){logger[_0xce50('0xc')](util['format'](_0xce50('0x18'),this[_0xce50('0x19')],this[_0xce50('0x15')],this[_0xce50('0x1a')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x1b'),this[_0xce50('0x19')],this[_0xce50('0x15')],this[_0xce50('0x1a')],this[_0xce50('0x16')],this[_0xce50('0x17')]));this[_0xce50('0x1c')]=!![];}function getRoot(_0x627385){return parser[_0xce50('0x1d')](_0x627385,{'object':!![]})[_0xce50('0x1e')][_0xce50('0x1f')];}function addVertex(_0xf1fdab,_0x2795eb,_0x4a776c){_0x2795eb['agicommand']=_0x4a776c;if(_0x2795eb[_0xce50('0x20')](_0xce50('0x21'))){_0x2795eb[_0xce50('0x22')]=parseInt(_0x2795eb[_0xce50('0x21')],0xa);}_0xf1fdab[_0xce50('0x23')](_[_0xce50('0x24')](_0x2795eb,_0xce50('0x25')));}function initGraph(_0x28c320,_0x48c6e7){var _0x41de4a=new Graph();for(var _0x174c9c in _0x28c320){if(_0x28c320[_0xce50('0x20')](_0x174c9c)){if(_['isArray'](_0x28c320[_0x174c9c])){for(var _0x40fa1e=0x0;_0x40fa1e<_0x28c320[_0x174c9c][_0xce50('0x26')];_0x40fa1e+=0x1){addVertex(_0x41de4a,_0x28c320[_0x174c9c][_0x40fa1e],_0x174c9c);}}else{addVertex(_0x41de4a,_0x28c320[_0x174c9c],_0x174c9c);}}}for(var _0x238e7d=0x0;_0x238e7d<_0x48c6e7['length'];_0x238e7d+=0x1){if(_0x48c6e7[_0x238e7d][_0xce50('0x27')]&&_0x48c6e7[_0x238e7d]['target']){_0x41de4a['addEdge'](_0x48c6e7[_0x238e7d]['source'],_0x48c6e7[_0x238e7d][_0xce50('0x28')],_0x48c6e7[_0x238e7d]['value']);}}return _0x41de4a;}function getSquareProject(_0x13978a,_0x3fe32f){rpc[_0xce50('0x29')](_0x13978a)['then'](function(_0x404405){_0x3fe32f(null,_0x404405);})[_0xce50('0x2a')](function(_0xa72809){_0x3fe32f(null,_0xa72809);});}function createSquareReport(_0x5d89ce,_0x2118e7){rpc[_0xce50('0x2b')](_0x5d89ce)[_0xce50('0x2c')](function(_0xb2098b){_0x2118e7(null,_0xb2098b);})['catch'](function(_0x5a9542){_0x2118e7(null,_0x5a9542);});}function updateSquareReport(_0x10d3b5,_0x2a92ec){rpc[_0xce50('0x2d')](_0x10d3b5['uniqueid'],_0x10d3b5['arg_1'])['then'](function(_0x5d809f){if(_0x2a92ec){_0x2a92ec(null,_0x5d809f);}})[_0xce50('0x2a')](function(_0x5ce7c9){if(_0x2a92ec){_0x2a92ec(null,_0x5ce7c9);}});}function setChannelVariables(_0x1d8d64){for(var _0x1f208a in _0x1d8d64){if(_0x1d8d64[_0xce50('0x20')](_0x1f208a)){if(_0x1f208a['indexOf'](_0xce50('0x2e'))===0x0){_0x1d8d64[_0x1f208a['substring'](0x4)]=_0x1d8d64[_0x1f208a];delete _0x1d8d64[_0x1f208a];}}}}function getLogFromObject(_0x139d0b){return util[_0xce50('0x2f')](_0x139d0b,{'showHidden':![],'depth':null});}function agiHandler(_0x4dea64){var _0x3835b1,_0x1ada07,_0x401d24,_0x21a1bb,_0x1d0007;logger['debug'](_0xce50('0x30'),JSON[_0xce50('0x13')](_0x4dea64,null,0x2));logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x31'),_0x4dea64['arg_1'],_0x4dea64[_0xce50('0x15')],_0x4dea64[_0xce50('0x1a')],_0x4dea64[_0xce50('0x16')],_0x4dea64['uniqueid']));_0x4dea64['on'](_0xce50('0x10'),errorHandler);_0x4dea64['on'](_0xce50('0x32'),closeHandler);_0x4dea64['on'](_0xce50('0x33'),timeoutHandler);_0x4dea64['evtHangup']=![];_0x4dea64['on'](_0xce50('0x34'),hangupHandler);var _0x5d4684=getSquareProject['sync'](null,_0x4dea64[_0xce50('0x19')]);if(_0x5d4684){if(_0x5d4684[_0xce50('0x35')]){_0x3835b1=getRoot(_0x5d4684[_0xce50('0x35')]);if(_0x3835b1&&_0x3835b1[_0xce50('0x36')]){logger[_0xce50('0x37')](_0xce50('0x1f'),JSON['stringify'](_0x3835b1,null,0x2));createSquareReport['sync'](null,_0x4dea64);_0x1ada07=initGraph(_[_0xce50('0x24')](_0x3835b1,_0xce50('0x25')),_0x3835b1[_0xce50('0x25')]);_0x401d24=new Vertices(_0x4dea64,rpc,mailRpc);logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x38'),_0x4dea64[_0xce50('0x19')],_0x4dea64[_0xce50('0x15')],_0x4dea64[_0xce50('0x1a')],_0x4dea64[_0xce50('0x16')],_0x4dea64[_0xce50('0x17')]));_0x1ada07[_0xce50('0x39')](_0x3835b1[_0xce50('0x36')]['id'],function(_0x57b9e2){try{_0x57b9e2=_0x401d24[_0xce50('0x3a')](_0x57b9e2);logger['debug'](_0xce50('0x3b'),JSON[_0xce50('0x13')](_0x57b9e2,null,0x2));if(_0x57b9e2[_0xce50('0x3c')]===_0xce50('0x3d')){logger[_0xce50('0xc')](_0xce50('0x3e'));_0x4dea64[_0xce50('0x3f')]=_0x57b9e2[_0xce50('0x3f')]||_0x4dea64[_0xce50('0x3f')];_0x4dea64[_0xce50('0x40')]=_0x57b9e2['extension'];_0x4dea64['priority']=_0x57b9e2['priority']?_0x57b9e2[_0xce50('0x41')]-0x1:0x1;return null;}else if(_0x57b9e2&&_0x401d24[_0x57b9e2[_0xce50('0x3c')]]){_0x1d0007=_0x401d24[_0x57b9e2[_0xce50('0x3c')]](_0x57b9e2);logger[_0xce50('0xc')](_0xce50('0x42'),JSON[_0xce50('0x13')](_0x1d0007,null,0x2));if(_0x1d0007&&_0x1d0007[_0xce50('0x43')]===AGI_CODE_SUCCESS&&_0x1d0007[_0xce50('0x44')]!==AGI_RESULT_ERROR&&!_0x4dea64[_0xce50('0x1c')]){logger[_0xce50('0x37')]('response',getLogFromObject(_0x1d0007));return _[_0xce50('0x45')](_0x1d0007[_0xce50('0x44')])?null:_0x1d0007[_0xce50('0x44')][_0xce50('0x46')]();}else{logger[_0xce50('0x10')](_0xce50('0x42'),getLogFromObject(_0x1d0007));return null;}}else{logger[_0xce50('0x10')](_0xce50('0x47'));return null;}}catch(_0x4cb837){logger[_0xce50('0x10')](_0xce50('0x48'),getLogFromObject(_0x4cb837));return null;}});if(_0x3835b1[_0xce50('0x49')]){logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x4a'),_0x4dea64[_0xce50('0x19')],_0x4dea64[_0xce50('0x15')],_0x4dea64['callerid'],_0x4dea64[_0xce50('0x16')],_0x4dea64['uniqueid']));_0x1ada07[_0xce50('0x39')](_0x3835b1[_0xce50('0x49')]['id'],function(_0x49bcc8){try{_0x49bcc8=_0x401d24['clear'](_0x49bcc8);logger[_0xce50('0x37')](_0xce50('0x3b'),JSON[_0xce50('0x13')](_0x49bcc8,null,0x2));if(_0x49bcc8&&_0x401d24[_0x49bcc8[_0xce50('0x3c')]]){_0x1d0007=_0x401d24[_0x49bcc8[_0xce50('0x3c')]](_0x49bcc8);if(_0x1d0007){logger[_0xce50('0x37')]('response',getLogFromObject(_0x1d0007));return _['isUndefined'](_0x1d0007[_0xce50('0x44')])?null:_0x1d0007[_0xce50('0x44')][_0xce50('0x46')]();}else{logger[_0xce50('0x10')](_0xce50('0x42'),getLogFromObject(_0x1d0007));return null;}}else{logger['error'](_0xce50('0x47'));return null;}}catch(_0x513b91){logger[_0xce50('0x10')](_0xce50('0x48'),getLogFromObject(_0x513b91));return null;}});}logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x4b'),_0x4dea64[_0xce50('0x19')],_0x4dea64[_0xce50('0x15')],_0x4dea64[_0xce50('0x1a')],_0x4dea64[_0xce50('0x16')],_0x4dea64[_0xce50('0x17')]));logger[_0xce50('0xc')](util[_0xce50('0x11')](_0xce50('0x4c'),_0x4dea64[_0xce50('0x3f')],_0x4dea64[_0xce50('0x40')],parseInt(_0x4dea64[_0xce50('0x41')],0xa)+0x1));_0x4dea64[_0xce50('0x4d')](_0x4dea64[_0xce50('0x3f')],_0x4dea64[_0xce50('0x40')],parseInt(_0x4dea64['priority'],0xa)+0x1);_0x4dea64[_0xce50('0x32')]();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x4dea64[_0xce50('0x19')]));_0x4dea64[_0xce50('0x4d')](_0x4dea64[_0xce50('0x3f')],_0x4dea64[_0xce50('0x40')],parseInt(_0x4dea64['priority'],0xa)+0x1);_0x4dea64['close']();}}else{logger[_0xce50('0x10')](util['format'](_0xce50('0x4e'),_0x4dea64[_0xce50('0x19')]));_0x4dea64['continueAt'](_0x4dea64[_0xce50('0x3f')],_0x4dea64['extension'],parseInt(_0x4dea64['priority'],0xa)+0x1);_0x4dea64[_0xce50('0x32')]();}}function main(){var _0x4205e1;return utilLicense['getLicense']()['then'](function(_0x5e1001){if(_0x5e1001&&_0x5e1001['callysquare']&&_0x5e1001[_0xce50('0x4f')]>0x0){logger[_0xce50('0xc')](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0x5e1001['callysquare']));_0x4205e1=_0x5e1001[_0xce50('0x4f')];}else{logger[_0xce50('0xc')](_0xce50('0x50'));}})['catch'](function(_0x58dd4d){logger[_0xce50('0x10')](_0xce50('0x51'),JSON['stringify'](_0x58dd4d,null,0x2));})[_0xce50('0x49')](function(){var _0x5dcce3=require(_0xce50('0x52'))(0x11dd,_0xce50('0x53'),_0x4205e1);_0x5dcce3['on'](_0xce50('0x10'),errorHandler);_0x5dcce3['on']('listening',listeningHandler);_0x5dcce3['on'](_0xce50('0x54'),connectionHandler);_0x5dcce3['on'](_0xce50('0x32'),closeHandler);});}main();