Built motion from commit 19a84241.|2.5.34
[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 _0xdfe3=['format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%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','calleridname','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','omit','mxCell','isArray','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','inspect','debug','stringify','close','timeout','evtHangup','hangup','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','traverseBFS','clear','gotoc','context','extension','priority','response','code','result','isUndefined','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','agicommand\x20not\x20found','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','./server','port','listening','xml2json','lodash','util','../../config/environment','agi','../../config/license/util','./mailRpc','./graph','./vertices','stack','log','info'];(function(_0x54c9f8,_0x277c9e){var _0x27b96d=function(_0x245c31){while(--_0x245c31){_0x54c9f8['push'](_0x54c9f8['shift']());}};_0x27b96d(++_0x277c9e);}(_0xdfe3,0x148));var _0x3dfe=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0xdfe3[_0x9c2427];return _0x51984f;};'use strict';var parser=require(_0x3dfe('0x0'));var _=require(_0x3dfe('0x1'));var syncho=require('syncho');var util=require(_0x3dfe('0x2'));var moment=require('moment');var config=require(_0x3dfe('0x3'));var logger=require('../../config/logger')(_0x3dfe('0x4'));var utilLicense=require(_0x3dfe('0x5'));var rpc=require('./rpc');var mailRpc=require(_0x3dfe('0x6'));var Graph=require(_0x3dfe('0x7'));var Vertices=require(_0x3dfe('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x3dfe('0x4')]=_['defaults'](config[_0x3dfe('0x4')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x2279f2){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x2279f2);agiHandler(_0x2279f2);}catch(_0xf7703d){logger['error'](_0xf7703d[_0x3dfe('0x9')]);}});});}function listeningHandler(){console[_0x3dfe('0xa')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x3dfe('0x4')]['port']);logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')](_0x3dfe('0xd'),config[_0x3dfe('0x4')]['ip'],config[_0x3dfe('0x4')]['port']));}function errorHandler(_0xc7f627){if(_0xc7f627&&_0xc7f627[_0x3dfe('0xe')]&&_0xc7f627[_0x3dfe('0xf')]){logger[_0x3dfe('0x10')](util[_0x3dfe('0xc')](_0x3dfe('0x11'),_0xc7f627['name'],_0xc7f627[_0x3dfe('0xf')]));}else{logger[_0x3dfe('0x10')](util[_0x3dfe('0xc')](_0x3dfe('0x12'),_0xc7f627[_0x3dfe('0x9')]));}}function closeHandler(){logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')](_0x3dfe('0x13'),this[_0x3dfe('0x14')],this[_0x3dfe('0x15')],this['callerid'],this[_0x3dfe('0x16')],this[_0x3dfe('0x17')]));try{createSquareReport(this);}catch(_0x40ba60){logger[_0x3dfe('0x10')](_0x40ba60[_0x3dfe('0x9')]);}}function timeoutHandler(){logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')](_0x3dfe('0x18'),this[_0x3dfe('0x14')],this[_0x3dfe('0x15')],this['callerid'],this[_0x3dfe('0x16')],this[_0x3dfe('0x17')]));}function hangupHandler(){logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')](_0x3dfe('0x19'),this[_0x3dfe('0x14')],this['calleridname'],this[_0x3dfe('0x1a')],this['dnid'],this[_0x3dfe('0x17')]));this['evtHangup']=!![];}function getRoot(_0xef0d54){return parser[_0x3dfe('0x1b')](_0xef0d54,{'object':!![]})[_0x3dfe('0x1c')][_0x3dfe('0x1d')];}function addVertex(_0x12f085,_0x315c7f,_0x3f4828){_0x315c7f[_0x3dfe('0x1e')]=_0x3f4828;if(_0x315c7f[_0x3dfe('0x1f')](_0x3dfe('0x20'))){_0x315c7f['maxRetry']=parseInt(_0x315c7f[_0x3dfe('0x20')],0xa);}_0x12f085['addVertex'](_[_0x3dfe('0x21')](_0x315c7f,_0x3dfe('0x22')));}function initGraph(_0x292a82,_0x5838d0){var _0x48b59b=new Graph();for(var _0x1d14d8 in _0x292a82){if(_0x292a82[_0x3dfe('0x1f')](_0x1d14d8)){if(_[_0x3dfe('0x23')](_0x292a82[_0x1d14d8])){for(var _0x4641ef=0x0;_0x4641ef<_0x292a82[_0x1d14d8]['length'];_0x4641ef+=0x1){addVertex(_0x48b59b,_0x292a82[_0x1d14d8][_0x4641ef],_0x1d14d8);}}else{addVertex(_0x48b59b,_0x292a82[_0x1d14d8],_0x1d14d8);}}}for(var _0x4229b2=0x0;_0x4229b2<_0x5838d0['length'];_0x4229b2+=0x1){if(_0x5838d0[_0x4229b2][_0x3dfe('0x24')]&&_0x5838d0[_0x4229b2][_0x3dfe('0x25')]){_0x48b59b[_0x3dfe('0x26')](_0x5838d0[_0x4229b2]['source'],_0x5838d0[_0x4229b2][_0x3dfe('0x25')],_0x5838d0[_0x4229b2][_0x3dfe('0x27')]);}}return _0x48b59b;}function getSquareProject(_0x3c0300,_0xc2a3c2){rpc[_0x3dfe('0x28')](_0x3c0300)['then'](function(_0x44f5b5){_0xc2a3c2(null,_0x44f5b5);})[_0x3dfe('0x29')](function(_0x3309f1){_0xc2a3c2(null,_0x3309f1);});}function createSquareReport(_0x6acc6d,_0x4e0706){rpc[_0x3dfe('0x2a')](_0x6acc6d)[_0x3dfe('0x2b')](function(_0x427ed1){if(_0x4e0706){_0x4e0706(null,_0x427ed1);}})[_0x3dfe('0x29')](function(_0x358f01){if(_0x4e0706){_0x4e0706(null,_0x358f01);}});}function setChannelVariables(_0x3d0a93){for(var _0x56e696 in _0x3d0a93){if(_0x3d0a93[_0x3dfe('0x1f')](_0x56e696)){if(_0x56e696[_0x3dfe('0x2c')](_0x3dfe('0x2d'))===0x0){_0x3d0a93[_0x56e696[_0x3dfe('0x2e')](0x4)]=_0x3d0a93[_0x56e696];delete _0x3d0a93[_0x56e696];}}}}function getLogFromObject(_0x343c20){return util[_0x3dfe('0x2f')](_0x343c20,{'showHidden':![],'depth':null});}function agiHandler(_0x74ea3b){var _0x2107c5,_0x4909a7,_0x265d0d,_0x405230,_0x1de7b8;logger[_0x3dfe('0x30')]('variables',JSON[_0x3dfe('0x31')](_0x74ea3b,null,0x2));logger['info'](util[_0x3dfe('0xc')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x74ea3b[_0x3dfe('0x14')],_0x74ea3b['calleridname'],_0x74ea3b[_0x3dfe('0x1a')],_0x74ea3b[_0x3dfe('0x16')],_0x74ea3b['uniqueid']));_0x74ea3b['on'](_0x3dfe('0x10'),errorHandler);_0x74ea3b['on'](_0x3dfe('0x32'),closeHandler);_0x74ea3b['on'](_0x3dfe('0x33'),timeoutHandler);_0x74ea3b[_0x3dfe('0x34')]=![];_0x74ea3b['on'](_0x3dfe('0x35'),hangupHandler);var _0x25551d=getSquareProject['sync'](null,_0x74ea3b[_0x3dfe('0x14')]);if(_0x25551d){if(_0x25551d[_0x3dfe('0x36')]){_0x2107c5=getRoot(_0x25551d[_0x3dfe('0x36')]);if(_0x2107c5&&_0x2107c5[_0x3dfe('0x37')]){logger[_0x3dfe('0x30')]('root',JSON[_0x3dfe('0x31')](_0x2107c5,null,0x2));_0x74ea3b[_0x3dfe('0x38')]=moment()[_0x3dfe('0xc')](_0x3dfe('0x39'));_0x4909a7=initGraph(_[_0x3dfe('0x21')](_0x2107c5,_0x3dfe('0x22')),_0x2107c5[_0x3dfe('0x22')]);_0x265d0d=new Vertices(_0x74ea3b,rpc,mailRpc);logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x74ea3b[_0x3dfe('0x14')],_0x74ea3b[_0x3dfe('0x15')],_0x74ea3b[_0x3dfe('0x1a')],_0x74ea3b[_0x3dfe('0x16')],_0x74ea3b[_0x3dfe('0x17')]));_0x4909a7[_0x3dfe('0x3a')](_0x2107c5[_0x3dfe('0x37')]['id'],function(_0x5458bc){try{_0x5458bc=_0x265d0d[_0x3dfe('0x3b')](_0x5458bc);logger['debug']('vertex',JSON[_0x3dfe('0x31')](_0x5458bc,null,0x2));if(_0x5458bc[_0x3dfe('0x1e')]===_0x3dfe('0x3c')){logger[_0x3dfe('0xb')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x74ea3b[_0x3dfe('0x3d')]=_0x5458bc[_0x3dfe('0x3d')]||_0x74ea3b[_0x3dfe('0x3d')];_0x74ea3b[_0x3dfe('0x3e')]=_0x5458bc[_0x3dfe('0x3e')];_0x74ea3b[_0x3dfe('0x3f')]=_0x5458bc[_0x3dfe('0x3f')]?_0x5458bc[_0x3dfe('0x3f')]-0x1:0x1;return null;}else if(_0x5458bc&&_0x265d0d[_0x5458bc['agicommand']]){_0x1de7b8=_0x265d0d[_0x5458bc[_0x3dfe('0x1e')]](_0x5458bc);logger[_0x3dfe('0xb')](_0x3dfe('0x40'),JSON[_0x3dfe('0x31')](_0x1de7b8,null,0x2));if(_0x1de7b8&&_0x1de7b8[_0x3dfe('0x41')]===AGI_CODE_SUCCESS&&_0x1de7b8[_0x3dfe('0x42')]!==AGI_RESULT_ERROR&&!_0x74ea3b[_0x3dfe('0x34')]){logger[_0x3dfe('0x30')](_0x3dfe('0x40'),getLogFromObject(_0x1de7b8));return _[_0x3dfe('0x43')](_0x1de7b8[_0x3dfe('0x42')])?null:_0x1de7b8['result'][_0x3dfe('0x44')]();}else{logger[_0x3dfe('0x10')](_0x3dfe('0x40'),getLogFromObject(_0x1de7b8));return null;}}else{logger[_0x3dfe('0x10')]('agicommand\x20not\x20found');return null;}}catch(_0x3f1af4){logger[_0x3dfe('0x10')](_0x3f1af4[_0x3dfe('0x9')]);return null;}});if(_0x2107c5[_0x3dfe('0x45')]){logger['info'](util[_0x3dfe('0xc')](_0x3dfe('0x46'),_0x74ea3b[_0x3dfe('0x14')],_0x74ea3b[_0x3dfe('0x15')],_0x74ea3b[_0x3dfe('0x1a')],_0x74ea3b[_0x3dfe('0x16')],_0x74ea3b['uniqueid']));_0x4909a7[_0x3dfe('0x3a')](_0x2107c5[_0x3dfe('0x45')]['id'],function(_0x212566){try{_0x212566=_0x265d0d[_0x3dfe('0x3b')](_0x212566);logger[_0x3dfe('0x30')](_0x3dfe('0x47'),JSON[_0x3dfe('0x31')](_0x212566,null,0x2));if(_0x212566&&_0x265d0d[_0x212566[_0x3dfe('0x1e')]]){_0x1de7b8=_0x265d0d[_0x212566['agicommand']](_0x212566);if(_0x1de7b8){logger[_0x3dfe('0x30')](_0x3dfe('0x40'),getLogFromObject(_0x1de7b8));return _['isUndefined'](_0x1de7b8['result'])?null:_0x1de7b8[_0x3dfe('0x42')][_0x3dfe('0x44')]();}else{logger[_0x3dfe('0x10')](_0x3dfe('0x40'),getLogFromObject(_0x1de7b8));return null;}}else{logger[_0x3dfe('0x10')](_0x3dfe('0x48'));return null;}}catch(_0x503701){logger['error'](_0x503701[_0x3dfe('0x9')]);return null;}});}logger[_0x3dfe('0xb')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x74ea3b[_0x3dfe('0x14')],_0x74ea3b[_0x3dfe('0x15')],_0x74ea3b[_0x3dfe('0x1a')],_0x74ea3b[_0x3dfe('0x16')],_0x74ea3b[_0x3dfe('0x17')]));logger['info'](util[_0x3dfe('0xc')](_0x3dfe('0x49'),_0x74ea3b['context'],_0x74ea3b[_0x3dfe('0x3e')],parseInt(_0x74ea3b[_0x3dfe('0x3f')],0xa)+0x1));_0x74ea3b[_0x3dfe('0x4a')](_0x74ea3b[_0x3dfe('0x3d')],_0x74ea3b['extension'],parseInt(_0x74ea3b[_0x3dfe('0x3f')],0xa)+0x1);_0x74ea3b[_0x3dfe('0x32')]();}}else{logger['error'](util['format'](_0x3dfe('0x4b'),_0x74ea3b[_0x3dfe('0x14')]));_0x74ea3b[_0x3dfe('0x4a')](_0x74ea3b['context'],_0x74ea3b['extension'],parseInt(_0x74ea3b[_0x3dfe('0x3f')],0xa)+0x1);_0x74ea3b['close']();}}else{logger['error'](util['format'](_0x3dfe('0x4c'),_0x74ea3b[_0x3dfe('0x14')]));_0x74ea3b['continueAt'](_0x74ea3b[_0x3dfe('0x3d')],_0x74ea3b[_0x3dfe('0x3e')],parseInt(_0x74ea3b[_0x3dfe('0x3f')],0xa)+0x1);_0x74ea3b['close']();}}function main(){var _0x5c1f0b;return utilLicense[_0x3dfe('0x4d')]()[_0x3dfe('0x2b')](function(_0x1c29f9){if(_0x1c29f9){if(_0x1c29f9[_0x3dfe('0x4e')]){if(_0x1c29f9['callysquare']&&_0x1c29f9[_0x3dfe('0x4f')]>0x0){logger[_0x3dfe('0xb')](util[_0x3dfe('0xc')](_0x3dfe('0x50'),_0x1c29f9[_0x3dfe('0x4f')]));_0x5c1f0b=_0x1c29f9['callysquare'];}else{logger['info'](_0x3dfe('0x51'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x5c1f0b=-0x1;}}})[_0x3dfe('0x29')](function(_0x187924){logger[_0x3dfe('0x10')]('[LICENSE]',_0x187924[_0x3dfe('0x9')]);})['finally'](function(){var _0x41f42a=require(_0x3dfe('0x52'))(config[_0x3dfe('0x4')][_0x3dfe('0x53')],config[_0x3dfe('0x4')]['ip'],_0x5c1f0b);_0x41f42a['on'](_0x3dfe('0x10'),errorHandler);_0x41f42a['on'](_0x3dfe('0x54'),listeningHandler);_0x41f42a['on']('connection',connectionHandler);_0x41f42a['on'](_0x3dfe('0x32'),closeHandler);});}main();