Built motion from commit (unavailable).|2.3.9
[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 _0xb458=['Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','lodash','syncho','../../config/environment','../../config/logger','agi','../../config/license/util','./mailRpc','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','name','format','[%s]\x20%s','message','[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','[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','mxGraphModel','root','agicommand','hasOwnProperty','retry','addVertex','isArray','length','source','target','addEdge','value','then','catch','createSquareReport','agi_','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','evtHangup','hangup','production','start','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','traverseBFS','clear','vertex','context','extension','priority','response','result','isUndefined','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','close'];(function(_0x4c935d,_0x165f71){var _0x3df32f=function(_0xaa7561){while(--_0xaa7561){_0x4c935d['push'](_0x4c935d['shift']());}};_0x3df32f(++_0x165f71);}(_0xb458,0x103));var _0x8b45=function(_0x8ba624,_0x42e30e){_0x8ba624=_0x8ba624-0x0;var _0x43940f=_0xb458[_0x8ba624];return _0x43940f;};'use strict';var parser=require(_0x8b45('0x0'));var _=require(_0x8b45('0x1'));var syncho=require(_0x8b45('0x2'));var util=require('util');var moment=require('moment');var config=require(_0x8b45('0x3'));var logger=require(_0x8b45('0x4'))(_0x8b45('0x5'));var utilLicense=require(_0x8b45('0x6'));var rpc=require('./rpc');var mailRpc=require(_0x8b45('0x7'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x8b45('0x5')]=_[_0x8b45('0x8')](config[_0x8b45('0x5')],{'ip':_0x8b45('0x9'),'port':0x11dd});function connectionHandler(_0x32342f){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x32342f);agiHandler(_0x32342f);}catch(_0xa54725){logger[_0x8b45('0xa')](_0xa54725[_0x8b45('0xb')]);}});});}function listeningHandler(){console[_0x8b45('0xc')](_0x8b45('0xd'),config['agi'][_0x8b45('0xe')]);logger[_0x8b45('0xf')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config['agi'][_0x8b45('0xe')]));}function errorHandler(_0x285728){if(_0x285728&&_0x285728[_0x8b45('0x10')]&&_0x285728['message']){logger[_0x8b45('0xa')](util[_0x8b45('0x11')](_0x8b45('0x12'),_0x285728[_0x8b45('0x10')],_0x285728[_0x8b45('0x13')]));}else{logger[_0x8b45('0xa')](util['format']('[ERROR]\x20%s',_0x285728[_0x8b45('0xb')]));}}function closeHandler(){logger[_0x8b45('0xf')](util[_0x8b45('0x11')](_0x8b45('0x14'),this[_0x8b45('0x15')],this[_0x8b45('0x16')],this[_0x8b45('0x17')],this[_0x8b45('0x18')],this[_0x8b45('0x19')]));try{createSquareReport(this);}catch(_0x391d1e){logger[_0x8b45('0xa')](_0x391d1e[_0x8b45('0xb')]);}}function timeoutHandler(){logger[_0x8b45('0xf')](util[_0x8b45('0x11')](_0x8b45('0x1a'),this[_0x8b45('0x15')],this[_0x8b45('0x16')],this[_0x8b45('0x17')],this['dnid'],this[_0x8b45('0x19')]));}function hangupHandler(){logger[_0x8b45('0xf')](util[_0x8b45('0x11')](_0x8b45('0x1b'),this[_0x8b45('0x15')],this[_0x8b45('0x16')],this[_0x8b45('0x17')],this[_0x8b45('0x18')],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x41154a){return parser['toJson'](_0x41154a,{'object':!![]})[_0x8b45('0x1c')][_0x8b45('0x1d')];}function addVertex(_0x30f405,_0x45e2db,_0x165570){_0x45e2db[_0x8b45('0x1e')]=_0x165570;if(_0x45e2db[_0x8b45('0x1f')]('retry')){_0x45e2db['maxRetry']=parseInt(_0x45e2db[_0x8b45('0x20')],0xa);}_0x30f405[_0x8b45('0x21')](_['omit'](_0x45e2db,'mxCell'));}function initGraph(_0x129c35,_0x32f6f0){var _0x2ca2d9=new Graph();for(var _0x2f37bc in _0x129c35){if(_0x129c35['hasOwnProperty'](_0x2f37bc)){if(_[_0x8b45('0x22')](_0x129c35[_0x2f37bc])){for(var _0x24be07=0x0;_0x24be07<_0x129c35[_0x2f37bc][_0x8b45('0x23')];_0x24be07+=0x1){addVertex(_0x2ca2d9,_0x129c35[_0x2f37bc][_0x24be07],_0x2f37bc);}}else{addVertex(_0x2ca2d9,_0x129c35[_0x2f37bc],_0x2f37bc);}}}for(var _0x9de2ad=0x0;_0x9de2ad<_0x32f6f0[_0x8b45('0x23')];_0x9de2ad+=0x1){if(_0x32f6f0[_0x9de2ad][_0x8b45('0x24')]&&_0x32f6f0[_0x9de2ad][_0x8b45('0x25')]){_0x2ca2d9[_0x8b45('0x26')](_0x32f6f0[_0x9de2ad][_0x8b45('0x24')],_0x32f6f0[_0x9de2ad][_0x8b45('0x25')],_0x32f6f0[_0x9de2ad][_0x8b45('0x27')]);}}return _0x2ca2d9;}function getSquareProject(_0x1ba2d4,_0x5b6151){rpc['getSquareProject'](_0x1ba2d4)[_0x8b45('0x28')](function(_0x36db96){_0x5b6151(null,_0x36db96);})[_0x8b45('0x29')](function(_0x15107a){_0x5b6151(null,_0x15107a);});}function createSquareReport(_0x2eb4c2,_0x638f26){rpc[_0x8b45('0x2a')](_0x2eb4c2)[_0x8b45('0x28')](function(_0x5d8938){if(_0x638f26){_0x638f26(null,_0x5d8938);}})[_0x8b45('0x29')](function(_0x3a5889){if(_0x638f26){_0x638f26(null,_0x3a5889);}});}function setChannelVariables(_0x50302){for(var _0xc2ae94 in _0x50302){if(_0x50302[_0x8b45('0x1f')](_0xc2ae94)){if(_0xc2ae94['indexOf'](_0x8b45('0x2b'))===0x0){_0x50302[_0xc2ae94['substring'](0x4)]=_0x50302[_0xc2ae94];delete _0x50302[_0xc2ae94];}}}}function getLogFromObject(_0x5a07de){return util[_0x8b45('0x2c')](_0x5a07de,{'showHidden':![],'depth':null});}function agiHandler(_0x94e3b6){var _0xd3ba91,_0x8d6790,_0x1e72d2,_0x8fd345,_0x522628;logger[_0x8b45('0x2d')](_0x8b45('0x2e'),JSON[_0x8b45('0x2f')](_0x94e3b6,null,0x2));logger[_0x8b45('0xf')](util['format'](_0x8b45('0x30'),_0x94e3b6[_0x8b45('0x15')],_0x94e3b6[_0x8b45('0x16')],_0x94e3b6['callerid'],_0x94e3b6[_0x8b45('0x18')],_0x94e3b6[_0x8b45('0x19')]));_0x94e3b6['on'](_0x8b45('0xa'),errorHandler);_0x94e3b6['on']('close',closeHandler);_0x94e3b6['on'](_0x8b45('0x31'),timeoutHandler);_0x94e3b6[_0x8b45('0x32')]=![];_0x94e3b6['on'](_0x8b45('0x33'),hangupHandler);var _0x4016b7=getSquareProject['sync'](null,_0x94e3b6[_0x8b45('0x15')]);if(_0x4016b7){if(_0x4016b7[_0x8b45('0x34')]){_0xd3ba91=getRoot(_0x4016b7[_0x8b45('0x34')]);if(_0xd3ba91&&_0xd3ba91[_0x8b45('0x35')]){logger[_0x8b45('0x2d')](_0x8b45('0x1d'),JSON['stringify'](_0xd3ba91,null,0x2));_0x94e3b6['joinAt']=moment()[_0x8b45('0x11')](_0x8b45('0x36'));_0x8d6790=initGraph(_[_0x8b45('0x37')](_0xd3ba91,_0x8b45('0x38')),_0xd3ba91[_0x8b45('0x38')]);_0x1e72d2=new Vertices(_0x94e3b6,rpc,mailRpc);logger['info'](util[_0x8b45('0x11')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x94e3b6[_0x8b45('0x15')],_0x94e3b6[_0x8b45('0x16')],_0x94e3b6[_0x8b45('0x17')],_0x94e3b6[_0x8b45('0x18')],_0x94e3b6[_0x8b45('0x19')]));_0x8d6790[_0x8b45('0x39')](_0xd3ba91[_0x8b45('0x35')]['id'],function(_0x1e9d50){try{_0x1e9d50=_0x1e72d2[_0x8b45('0x3a')](_0x1e9d50);logger[_0x8b45('0x2d')](_0x8b45('0x3b'),JSON['stringify'](_0x1e9d50,null,0x2));if(_0x1e9d50[_0x8b45('0x1e')]==='gotoc'){logger[_0x8b45('0xf')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x94e3b6[_0x8b45('0x3c')]=_0x1e9d50[_0x8b45('0x3c')]||_0x94e3b6[_0x8b45('0x3c')];_0x94e3b6[_0x8b45('0x3d')]=_0x1e9d50[_0x8b45('0x3d')];_0x94e3b6[_0x8b45('0x3e')]=_0x1e9d50['priority']?_0x1e9d50[_0x8b45('0x3e')]-0x1:0x1;return null;}else if(_0x1e9d50&&_0x1e72d2[_0x1e9d50['agicommand']]){_0x522628=_0x1e72d2[_0x1e9d50['agicommand']](_0x1e9d50);logger[_0x8b45('0xf')](_0x8b45('0x3f'),JSON[_0x8b45('0x2f')](_0x522628,null,0x2));if(_0x522628&&_0x522628['code']===AGI_CODE_SUCCESS&&_0x522628[_0x8b45('0x40')]!==AGI_RESULT_ERROR&&!_0x94e3b6['evtHangup']){logger[_0x8b45('0x2d')](_0x8b45('0x3f'),getLogFromObject(_0x522628));return _[_0x8b45('0x41')](_0x522628[_0x8b45('0x40')])?null:_0x522628[_0x8b45('0x40')][_0x8b45('0x42')]();}else{logger['error'](_0x8b45('0x3f'),getLogFromObject(_0x522628));return null;}}else{logger[_0x8b45('0xa')](_0x8b45('0x43'));return null;}}catch(_0xee45ac){logger[_0x8b45('0xa')](_0xee45ac[_0x8b45('0xb')]);return null;}});if(_0xd3ba91[_0x8b45('0x44')]){logger[_0x8b45('0xf')](util[_0x8b45('0x11')](_0x8b45('0x45'),_0x94e3b6[_0x8b45('0x15')],_0x94e3b6[_0x8b45('0x16')],_0x94e3b6[_0x8b45('0x17')],_0x94e3b6[_0x8b45('0x18')],_0x94e3b6[_0x8b45('0x19')]));_0x8d6790[_0x8b45('0x39')](_0xd3ba91['finally']['id'],function(_0x5cc127){try{_0x5cc127=_0x1e72d2['clear'](_0x5cc127);logger[_0x8b45('0x2d')](_0x8b45('0x3b'),JSON[_0x8b45('0x2f')](_0x5cc127,null,0x2));if(_0x5cc127&&_0x1e72d2[_0x5cc127[_0x8b45('0x1e')]]){_0x522628=_0x1e72d2[_0x5cc127[_0x8b45('0x1e')]](_0x5cc127);if(_0x522628){logger[_0x8b45('0x2d')](_0x8b45('0x3f'),getLogFromObject(_0x522628));return _[_0x8b45('0x41')](_0x522628['result'])?null:_0x522628[_0x8b45('0x40')]['toString']();}else{logger[_0x8b45('0xa')](_0x8b45('0x3f'),getLogFromObject(_0x522628));return null;}}else{logger[_0x8b45('0xa')](_0x8b45('0x43'));return null;}}catch(_0x51c87d){logger[_0x8b45('0xa')](_0x51c87d[_0x8b45('0xb')]);return null;}});}logger['info'](util[_0x8b45('0x11')](_0x8b45('0x46'),_0x94e3b6['arg_1'],_0x94e3b6[_0x8b45('0x16')],_0x94e3b6[_0x8b45('0x17')],_0x94e3b6[_0x8b45('0x18')],_0x94e3b6[_0x8b45('0x19')]));logger[_0x8b45('0xf')](util[_0x8b45('0x11')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x94e3b6['context'],_0x94e3b6[_0x8b45('0x3d')],parseInt(_0x94e3b6[_0x8b45('0x3e')],0xa)+0x1));_0x94e3b6[_0x8b45('0x47')](_0x94e3b6['context'],_0x94e3b6[_0x8b45('0x3d')],parseInt(_0x94e3b6[_0x8b45('0x3e')],0xa)+0x1);_0x94e3b6[_0x8b45('0x48')]();}}else{logger[_0x8b45('0xa')](util[_0x8b45('0x11')]('Project\x20%s\x20not\x20published',_0x94e3b6[_0x8b45('0x15')]));_0x94e3b6[_0x8b45('0x47')](_0x94e3b6['context'],_0x94e3b6[_0x8b45('0x3d')],parseInt(_0x94e3b6['priority'],0xa)+0x1);_0x94e3b6[_0x8b45('0x48')]();}}else{logger[_0x8b45('0xa')](util[_0x8b45('0x11')](_0x8b45('0x49'),_0x94e3b6['arg_1']));_0x94e3b6[_0x8b45('0x47')](_0x94e3b6[_0x8b45('0x3c')],_0x94e3b6[_0x8b45('0x3d')],parseInt(_0x94e3b6[_0x8b45('0x3e')],0xa)+0x1);_0x94e3b6[_0x8b45('0x48')]();}}function main(){var _0x20e536;return utilLicense[_0x8b45('0x4a')]()[_0x8b45('0x28')](function(_0x446fe5){if(_0x446fe5){if(_0x446fe5[_0x8b45('0x4b')]){if(_0x446fe5[_0x8b45('0x4c')]&&_0x446fe5[_0x8b45('0x4c')]>0x0){logger[_0x8b45('0xf')](util[_0x8b45('0x11')](_0x8b45('0x4d'),_0x446fe5['callysquare']));_0x20e536=_0x446fe5[_0x8b45('0x4c')];}else{logger[_0x8b45('0xf')](_0x8b45('0x4e'));}}else{logger['info'](_0x8b45('0x4f'));_0x20e536=-0x1;}}})[_0x8b45('0x29')](function(_0x3d7efe){logger[_0x8b45('0xa')]('[LICENSE]',_0x3d7efe[_0x8b45('0xb')]);})[_0x8b45('0x44')](function(){var _0x1d99bb=require(_0x8b45('0x50'))(config['agi'][_0x8b45('0xe')],config[_0x8b45('0x5')]['ip'],_0x20e536);_0x1d99bb['on'](_0x8b45('0xa'),errorHandler);_0x1d99bb['on'](_0x8b45('0x51'),listeningHandler);_0x1d99bb['on'](_0x8b45('0x52'),connectionHandler);_0x1d99bb['on']('close',closeHandler);});}main();