Built motion from commit (unavailable).|2.5.23
[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 _0xaba6=['omit','mxCell','isArray','length','source','addEdge','target','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','inspect','variables','close','timeout','hangup','sync','start','stringify','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','context','extension','priority','code','result','debug','response','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','isUndefined','[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\x20published','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','listening','connection','xml2json','lodash','../../config/logger','agi','./rpc','./mailRpc','defaults','127.0.0.1','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex'];(function(_0x48cf7c,_0x12d775){var _0x14874a=function(_0x2cecfe){while(--_0x2cecfe){_0x48cf7c['push'](_0x48cf7c['shift']());}};_0x14874a(++_0x12d775);}(_0xaba6,0xe2));var _0x6aba=function(_0x57f398,_0x50beb8){_0x57f398=_0x57f398-0x0;var _0x4cc9a9=_0xaba6[_0x57f398];return _0x4cc9a9;};'use strict';var parser=require(_0x6aba('0x0'));var _=require(_0x6aba('0x1'));var syncho=require('syncho');var util=require('util');var moment=require('moment');var config=require('../../config/environment');var logger=require(_0x6aba('0x2'))(_0x6aba('0x3'));var utilLicense=require('../../config/license/util');var rpc=require(_0x6aba('0x4'));var mailRpc=require(_0x6aba('0x5'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x6aba('0x6')](config['agi'],{'ip':_0x6aba('0x7'),'port':0x11dd});function connectionHandler(_0x1a4fbc){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x1a4fbc);agiHandler(_0x1a4fbc);}catch(_0x460fe2){logger[_0x6aba('0x8')](_0x460fe2['stack']);}});});}function listeningHandler(){console[_0x6aba('0x9')](_0x6aba('0xa'),config[_0x6aba('0x3')][_0x6aba('0xb')]);logger[_0x6aba('0xc')](util[_0x6aba('0xd')](_0x6aba('0xe'),config['agi']['ip'],config[_0x6aba('0x3')][_0x6aba('0xb')]));}function errorHandler(_0x43867b){if(_0x43867b&&_0x43867b[_0x6aba('0xf')]&&_0x43867b['message']){logger[_0x6aba('0x8')](util[_0x6aba('0xd')]('[%s]\x20%s',_0x43867b[_0x6aba('0xf')],_0x43867b[_0x6aba('0x10')]));}else{logger[_0x6aba('0x8')](util['format'](_0x6aba('0x11'),_0x43867b[_0x6aba('0x12')]));}}function closeHandler(){logger[_0x6aba('0xc')](util['format'](_0x6aba('0x13'),this[_0x6aba('0x14')],this[_0x6aba('0x15')],this[_0x6aba('0x16')],this[_0x6aba('0x17')],this[_0x6aba('0x18')]));try{createSquareReport(this);}catch(_0x3009a9){logger['error'](_0x3009a9[_0x6aba('0x12')]);}}function timeoutHandler(){logger[_0x6aba('0xc')](util[_0x6aba('0xd')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x6aba('0x14')],this['calleridname'],this['callerid'],this[_0x6aba('0x17')],this['uniqueid']));}function hangupHandler(){logger[_0x6aba('0xc')](util[_0x6aba('0xd')](_0x6aba('0x19'),this[_0x6aba('0x14')],this[_0x6aba('0x15')],this[_0x6aba('0x16')],this[_0x6aba('0x17')],this['uniqueid']));this[_0x6aba('0x1a')]=!![];}function getRoot(_0x41464f){return parser[_0x6aba('0x1b')](_0x41464f,{'object':!![]})[_0x6aba('0x1c')][_0x6aba('0x1d')];}function addVertex(_0x43eef9,_0x44f723,_0x67ba6e){_0x44f723[_0x6aba('0x1e')]=_0x67ba6e;if(_0x44f723[_0x6aba('0x1f')](_0x6aba('0x20'))){_0x44f723[_0x6aba('0x21')]=parseInt(_0x44f723[_0x6aba('0x20')],0xa);}_0x43eef9[_0x6aba('0x22')](_[_0x6aba('0x23')](_0x44f723,_0x6aba('0x24')));}function initGraph(_0x74ac4a,_0x2f7cdd){var _0x2cbbf7=new Graph();for(var _0x5dc72b in _0x74ac4a){if(_0x74ac4a['hasOwnProperty'](_0x5dc72b)){if(_[_0x6aba('0x25')](_0x74ac4a[_0x5dc72b])){for(var _0x5b0845=0x0;_0x5b0845<_0x74ac4a[_0x5dc72b][_0x6aba('0x26')];_0x5b0845+=0x1){addVertex(_0x2cbbf7,_0x74ac4a[_0x5dc72b][_0x5b0845],_0x5dc72b);}}else{addVertex(_0x2cbbf7,_0x74ac4a[_0x5dc72b],_0x5dc72b);}}}for(var _0x108ff1=0x0;_0x108ff1<_0x2f7cdd[_0x6aba('0x26')];_0x108ff1+=0x1){if(_0x2f7cdd[_0x108ff1][_0x6aba('0x27')]&&_0x2f7cdd[_0x108ff1]['target']){_0x2cbbf7[_0x6aba('0x28')](_0x2f7cdd[_0x108ff1][_0x6aba('0x27')],_0x2f7cdd[_0x108ff1][_0x6aba('0x29')],_0x2f7cdd[_0x108ff1][_0x6aba('0x2a')]);}}return _0x2cbbf7;}function getSquareProject(_0x20b06d,_0x576799){rpc[_0x6aba('0x2b')](_0x20b06d)['then'](function(_0x6e5f02){_0x576799(null,_0x6e5f02);})[_0x6aba('0x2c')](function(_0x54e780){_0x576799(null,_0x54e780);});}function createSquareReport(_0x4d601a,_0x202a81){rpc[_0x6aba('0x2d')](_0x4d601a)[_0x6aba('0x2e')](function(_0x1ca375){if(_0x202a81){_0x202a81(null,_0x1ca375);}})[_0x6aba('0x2c')](function(_0x14d25e){if(_0x202a81){_0x202a81(null,_0x14d25e);}});}function setChannelVariables(_0x39c449){for(var _0x5cdf62 in _0x39c449){if(_0x39c449[_0x6aba('0x1f')](_0x5cdf62)){if(_0x5cdf62[_0x6aba('0x2f')](_0x6aba('0x30'))===0x0){_0x39c449[_0x5cdf62['substring'](0x4)]=_0x39c449[_0x5cdf62];delete _0x39c449[_0x5cdf62];}}}}function getLogFromObject(_0x1bfb80){return util[_0x6aba('0x31')](_0x1bfb80,{'showHidden':![],'depth':null});}function agiHandler(_0x31458f){var _0x53336b,_0x1b7881,_0x2462ed,_0x5a2594,_0x14a119;logger['debug'](_0x6aba('0x32'),JSON['stringify'](_0x31458f,null,0x2));logger[_0x6aba('0xc')](util[_0x6aba('0xd')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x31458f['arg_1'],_0x31458f[_0x6aba('0x15')],_0x31458f['callerid'],_0x31458f[_0x6aba('0x17')],_0x31458f[_0x6aba('0x18')]));_0x31458f['on']('error',errorHandler);_0x31458f['on'](_0x6aba('0x33'),closeHandler);_0x31458f['on'](_0x6aba('0x34'),timeoutHandler);_0x31458f[_0x6aba('0x1a')]=![];_0x31458f['on'](_0x6aba('0x35'),hangupHandler);var _0x8ca947=getSquareProject[_0x6aba('0x36')](null,_0x31458f[_0x6aba('0x14')]);if(_0x8ca947){if(_0x8ca947['production']){_0x53336b=getRoot(_0x8ca947['production']);if(_0x53336b&&_0x53336b[_0x6aba('0x37')]){logger['debug'](_0x6aba('0x1d'),JSON[_0x6aba('0x38')](_0x53336b,null,0x2));_0x31458f[_0x6aba('0x39')]=moment()['format'](_0x6aba('0x3a'));_0x1b7881=initGraph(_[_0x6aba('0x23')](_0x53336b,_0x6aba('0x24')),_0x53336b[_0x6aba('0x24')]);_0x2462ed=new Vertices(_0x31458f,rpc,mailRpc);logger[_0x6aba('0xc')](util[_0x6aba('0xd')](_0x6aba('0x3b'),_0x31458f[_0x6aba('0x14')],_0x31458f[_0x6aba('0x15')],_0x31458f['callerid'],_0x31458f[_0x6aba('0x17')],_0x31458f[_0x6aba('0x18')]));_0x1b7881[_0x6aba('0x3c')](_0x53336b[_0x6aba('0x37')]['id'],function(_0x4c485b){try{_0x4c485b=_0x2462ed[_0x6aba('0x3d')](_0x4c485b);logger['debug'](_0x6aba('0x3e'),JSON['stringify'](_0x4c485b,null,0x2));if(_0x4c485b['agicommand']==='gotoc'){logger[_0x6aba('0xc')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x31458f[_0x6aba('0x3f')]=_0x4c485b[_0x6aba('0x3f')]||_0x31458f[_0x6aba('0x3f')];_0x31458f[_0x6aba('0x40')]=_0x4c485b[_0x6aba('0x40')];_0x31458f[_0x6aba('0x41')]=_0x4c485b[_0x6aba('0x41')]?_0x4c485b['priority']-0x1:0x1;return null;}else if(_0x4c485b&&_0x2462ed[_0x4c485b[_0x6aba('0x1e')]]){_0x14a119=_0x2462ed[_0x4c485b[_0x6aba('0x1e')]](_0x4c485b);logger[_0x6aba('0xc')]('response',JSON['stringify'](_0x14a119,null,0x2));if(_0x14a119&&_0x14a119[_0x6aba('0x42')]===AGI_CODE_SUCCESS&&_0x14a119[_0x6aba('0x43')]!==AGI_RESULT_ERROR&&!_0x31458f[_0x6aba('0x1a')]){logger[_0x6aba('0x44')](_0x6aba('0x45'),getLogFromObject(_0x14a119));return _['isUndefined'](_0x14a119[_0x6aba('0x43')])?null:_0x14a119[_0x6aba('0x43')][_0x6aba('0x46')]();}else{logger[_0x6aba('0x8')](_0x6aba('0x45'),getLogFromObject(_0x14a119));return null;}}else{logger[_0x6aba('0x8')](_0x6aba('0x47'));return null;}}catch(_0x56eca0){logger[_0x6aba('0x8')](_0x56eca0[_0x6aba('0x12')]);return null;}});if(_0x53336b[_0x6aba('0x48')]){logger[_0x6aba('0xc')](util[_0x6aba('0xd')](_0x6aba('0x49'),_0x31458f['arg_1'],_0x31458f[_0x6aba('0x15')],_0x31458f['callerid'],_0x31458f['dnid'],_0x31458f[_0x6aba('0x18')]));_0x1b7881[_0x6aba('0x3c')](_0x53336b[_0x6aba('0x48')]['id'],function(_0x474c48){try{_0x474c48=_0x2462ed[_0x6aba('0x3d')](_0x474c48);logger[_0x6aba('0x44')](_0x6aba('0x3e'),JSON[_0x6aba('0x38')](_0x474c48,null,0x2));if(_0x474c48&&_0x2462ed[_0x474c48[_0x6aba('0x1e')]]){_0x14a119=_0x2462ed[_0x474c48[_0x6aba('0x1e')]](_0x474c48);if(_0x14a119){logger['debug'](_0x6aba('0x45'),getLogFromObject(_0x14a119));return _[_0x6aba('0x4a')](_0x14a119[_0x6aba('0x43')])?null:_0x14a119[_0x6aba('0x43')][_0x6aba('0x46')]();}else{logger[_0x6aba('0x8')](_0x6aba('0x45'),getLogFromObject(_0x14a119));return null;}}else{logger[_0x6aba('0x8')](_0x6aba('0x47'));return null;}}catch(_0x2b0963){logger[_0x6aba('0x8')](_0x2b0963[_0x6aba('0x12')]);return null;}});}logger[_0x6aba('0xc')](util['format'](_0x6aba('0x4b'),_0x31458f[_0x6aba('0x14')],_0x31458f[_0x6aba('0x15')],_0x31458f['callerid'],_0x31458f[_0x6aba('0x17')],_0x31458f['uniqueid']));logger['info'](util[_0x6aba('0xd')](_0x6aba('0x4c'),_0x31458f[_0x6aba('0x3f')],_0x31458f['extension'],parseInt(_0x31458f[_0x6aba('0x41')],0xa)+0x1));_0x31458f[_0x6aba('0x4d')](_0x31458f[_0x6aba('0x3f')],_0x31458f[_0x6aba('0x40')],parseInt(_0x31458f[_0x6aba('0x41')],0xa)+0x1);_0x31458f[_0x6aba('0x33')]();}}else{logger['error'](util[_0x6aba('0xd')](_0x6aba('0x4e'),_0x31458f['arg_1']));_0x31458f[_0x6aba('0x4d')](_0x31458f[_0x6aba('0x3f')],_0x31458f[_0x6aba('0x40')],parseInt(_0x31458f[_0x6aba('0x41')],0xa)+0x1);_0x31458f[_0x6aba('0x33')]();}}else{logger[_0x6aba('0x8')](util['format']('Project\x20%s\x20not\x20found',_0x31458f[_0x6aba('0x14')]));_0x31458f[_0x6aba('0x4d')](_0x31458f['context'],_0x31458f[_0x6aba('0x40')],parseInt(_0x31458f[_0x6aba('0x41')],0xa)+0x1);_0x31458f['close']();}}function main(){var _0x178baa;return utilLicense['getLicense']()[_0x6aba('0x2e')](function(_0x342b05){if(_0x342b05){if(_0x342b05[_0x6aba('0x4f')]){if(_0x342b05['callysquare']&&_0x342b05[_0x6aba('0x50')]>0x0){logger[_0x6aba('0xc')](util[_0x6aba('0xd')](_0x6aba('0x51'),_0x342b05[_0x6aba('0x50')]));_0x178baa=_0x342b05['callysquare'];}else{logger['info'](_0x6aba('0x52'));}}else{logger[_0x6aba('0xc')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x178baa=-0x1;}}})[_0x6aba('0x2c')](function(_0x145903){logger[_0x6aba('0x8')](_0x6aba('0x53'),_0x145903[_0x6aba('0x12')]);})[_0x6aba('0x48')](function(){var _0x52c93d=require(_0x6aba('0x54'))(config[_0x6aba('0x3')][_0x6aba('0xb')],config[_0x6aba('0x3')]['ip'],_0x178baa);_0x52c93d['on'](_0x6aba('0x8'),errorHandler);_0x52c93d['on'](_0x6aba('0x55'),listeningHandler);_0x52c93d['on'](_0x6aba('0x56'),connectionHandler);_0x52c93d['on'](_0x6aba('0x33'),closeHandler);});}main();