Built motion from commit (unavailable).|2.5.4
[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 _0x61ac=['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','toJson','agicommand','retry','maxRetry','addVertex','mxCell','hasOwnProperty','isArray','length','target','addEdge','source','value','then','createSquareReport','indexOf','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','hangup','production','log','SQUAREROOT','start','root','joinAt','YYYY-MM-DD\x20HH:mm:ss','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','context','extension','priority','response','code','result','evtHangup','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','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','catch','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./rpc','./mailRpc','agi','127.0.0.1','nextTick','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','error','message','format','[ERROR]\x20%s','arg_1','calleridname'];(function(_0x2c760a,_0x358d50){var _0x2f45c3=function(_0x5ab973){while(--_0x5ab973){_0x2c760a['push'](_0x2c760a['shift']());}};_0x2f45c3(++_0x358d50);}(_0x61ac,0x155));var _0xc61a=function(_0x2cdcf9,_0x8a09d1){_0x2cdcf9=_0x2cdcf9-0x0;var _0x39412d=_0x61ac[_0x2cdcf9];return _0x39412d;};'use strict';var parser=require(_0xc61a('0x0'));var _=require(_0xc61a('0x1'));var syncho=require(_0xc61a('0x2'));var util=require(_0xc61a('0x3'));var moment=require('moment');var config=require(_0xc61a('0x4'));var logger=require(_0xc61a('0x5'))('agi');var utilLicense=require(_0xc61a('0x6'));var rpc=require(_0xc61a('0x7'));var mailRpc=require(_0xc61a('0x8'));var Graph=require('./graph');var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc61a('0x9')]=_['defaults'](config['agi'],{'ip':_0xc61a('0xa'),'port':0x11dd});function connectionHandler(_0x562f0c){process[_0xc61a('0xb')](function(){syncho(function(){try{setChannelVariables(_0x562f0c);agiHandler(_0x562f0c);}catch(_0x232e1d){logger['error'](_0x232e1d[_0xc61a('0xc')]);}});});}function listeningHandler(){console['log'](_0xc61a('0xd'),config[_0xc61a('0x9')]['port']);logger[_0xc61a('0xe')](util['format'](_0xc61a('0xf'),config[_0xc61a('0x9')]['ip'],config[_0xc61a('0x9')]['port']));}function errorHandler(_0x400c0b){if(_0x400c0b&&_0x400c0b[_0xc61a('0x10')]&&_0x400c0b['message']){logger[_0xc61a('0x11')](util['format']('[%s]\x20%s',_0x400c0b['name'],_0x400c0b[_0xc61a('0x12')]));}else{logger[_0xc61a('0x11')](util[_0xc61a('0x13')](_0xc61a('0x14'),_0x400c0b[_0xc61a('0xc')]));}}function closeHandler(){logger[_0xc61a('0xe')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xc61a('0x15')],this[_0xc61a('0x16')],this[_0xc61a('0x17')],this[_0xc61a('0x18')],this[_0xc61a('0x19')]));try{createSquareReport(this);}catch(_0x218493){logger[_0xc61a('0x11')](_0x218493['stack']);}}function timeoutHandler(){logger[_0xc61a('0xe')](util[_0xc61a('0x13')](_0xc61a('0x1a'),this[_0xc61a('0x15')],this[_0xc61a('0x16')],this[_0xc61a('0x17')],this[_0xc61a('0x18')],this[_0xc61a('0x19')]));}function hangupHandler(){logger[_0xc61a('0xe')](util[_0xc61a('0x13')](_0xc61a('0x1b'),this['arg_1'],this[_0xc61a('0x16')],this[_0xc61a('0x17')],this['dnid'],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x4540be){return parser[_0xc61a('0x1c')](_0x4540be,{'object':!![]})['mxGraphModel']['root'];}function addVertex(_0x4c9cf5,_0x3953d7,_0x3d43c7){_0x3953d7[_0xc61a('0x1d')]=_0x3d43c7;if(_0x3953d7['hasOwnProperty'](_0xc61a('0x1e'))){_0x3953d7[_0xc61a('0x1f')]=parseInt(_0x3953d7[_0xc61a('0x1e')],0xa);}_0x4c9cf5[_0xc61a('0x20')](_['omit'](_0x3953d7,_0xc61a('0x21')));}function initGraph(_0x1ca870,_0xa25c1c){var _0xe143c=new Graph();for(var _0x30bb03 in _0x1ca870){if(_0x1ca870[_0xc61a('0x22')](_0x30bb03)){if(_[_0xc61a('0x23')](_0x1ca870[_0x30bb03])){for(var _0x2ec71b=0x0;_0x2ec71b<_0x1ca870[_0x30bb03][_0xc61a('0x24')];_0x2ec71b+=0x1){addVertex(_0xe143c,_0x1ca870[_0x30bb03][_0x2ec71b],_0x30bb03);}}else{addVertex(_0xe143c,_0x1ca870[_0x30bb03],_0x30bb03);}}}for(var _0x58cc10=0x0;_0x58cc10<_0xa25c1c[_0xc61a('0x24')];_0x58cc10+=0x1){if(_0xa25c1c[_0x58cc10]['source']&&_0xa25c1c[_0x58cc10][_0xc61a('0x25')]){_0xe143c[_0xc61a('0x26')](_0xa25c1c[_0x58cc10][_0xc61a('0x27')],_0xa25c1c[_0x58cc10][_0xc61a('0x25')],_0xa25c1c[_0x58cc10][_0xc61a('0x28')]);}}return _0xe143c;}function getSquareProject(_0x28a501,_0x43763b){rpc['getSquareProject'](_0x28a501)[_0xc61a('0x29')](function(_0xada971){_0x43763b(null,_0xada971);})['catch'](function(_0x479c06){_0x43763b(null,_0x479c06);});}function createSquareReport(_0x1416bc,_0x25b498){rpc[_0xc61a('0x2a')](_0x1416bc)['then'](function(_0x3b50d8){if(_0x25b498){_0x25b498(null,_0x3b50d8);}})['catch'](function(_0x2cb032){if(_0x25b498){_0x25b498(null,_0x2cb032);}});}function setChannelVariables(_0x177e61){for(var _0x511268 in _0x177e61){if(_0x177e61[_0xc61a('0x22')](_0x511268)){if(_0x511268[_0xc61a('0x2b')]('agi_')===0x0){_0x177e61[_0x511268[_0xc61a('0x2c')](0x4)]=_0x177e61[_0x511268];delete _0x177e61[_0x511268];}}}}function getLogFromObject(_0x1f4864){return util[_0xc61a('0x2d')](_0x1f4864,{'showHidden':![],'depth':null});}function agiHandler(_0x208039){var _0x4a2263,_0x5c633f,_0x474178,_0x50acb2,_0x3e32b8;logger[_0xc61a('0x2e')]('variables',JSON[_0xc61a('0x2f')](_0x208039,null,0x2));logger[_0xc61a('0xe')](util['format'](_0xc61a('0x30'),_0x208039[_0xc61a('0x15')],_0x208039[_0xc61a('0x16')],_0x208039[_0xc61a('0x17')],_0x208039['dnid'],_0x208039['uniqueid']));_0x208039['on']('error',errorHandler);_0x208039['on']('close',closeHandler);_0x208039['on']('timeout',timeoutHandler);_0x208039['evtHangup']=![];_0x208039['on'](_0xc61a('0x31'),hangupHandler);var _0x14c823=getSquareProject['sync'](null,_0x208039[_0xc61a('0x15')]);if(_0x14c823){if(_0x14c823[_0xc61a('0x32')]){_0x4a2263=getRoot(_0x14c823['production']);console[_0xc61a('0x33')](_0xc61a('0x34'),_0x4a2263);if(_0x4a2263&&_0x4a2263[_0xc61a('0x35')]){logger['debug'](_0xc61a('0x36'),JSON['stringify'](_0x4a2263,null,0x2));_0x208039[_0xc61a('0x37')]=moment()['format'](_0xc61a('0x38'));_0x5c633f=initGraph(_[_0xc61a('0x39')](_0x4a2263,_0xc61a('0x21')),_0x4a2263[_0xc61a('0x21')]);_0x474178=new Vertices(_0x208039,rpc,mailRpc);logger['info'](util['format'](_0xc61a('0x3a'),_0x208039[_0xc61a('0x15')],_0x208039['calleridname'],_0x208039[_0xc61a('0x17')],_0x208039[_0xc61a('0x18')],_0x208039[_0xc61a('0x19')]));_0x5c633f[_0xc61a('0x3b')](_0x4a2263['start']['id'],function(_0x311f0f){try{_0x311f0f=_0x474178[_0xc61a('0x3c')](_0x311f0f);logger[_0xc61a('0x2e')](_0xc61a('0x3d'),JSON[_0xc61a('0x2f')](_0x311f0f,null,0x2));if(_0x311f0f[_0xc61a('0x1d')]===_0xc61a('0x3e')){logger['info']('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x208039['context']=_0x311f0f[_0xc61a('0x3f')]||_0x208039[_0xc61a('0x3f')];_0x208039[_0xc61a('0x40')]=_0x311f0f[_0xc61a('0x40')];_0x208039[_0xc61a('0x41')]=_0x311f0f[_0xc61a('0x41')]?_0x311f0f[_0xc61a('0x41')]-0x1:0x1;return null;}else if(_0x311f0f&&_0x474178[_0x311f0f[_0xc61a('0x1d')]]){_0x3e32b8=_0x474178[_0x311f0f[_0xc61a('0x1d')]](_0x311f0f);logger[_0xc61a('0xe')](_0xc61a('0x42'),JSON[_0xc61a('0x2f')](_0x3e32b8,null,0x2));if(_0x3e32b8&&_0x3e32b8[_0xc61a('0x43')]===AGI_CODE_SUCCESS&&_0x3e32b8[_0xc61a('0x44')]!==AGI_RESULT_ERROR&&!_0x208039[_0xc61a('0x45')]){logger[_0xc61a('0x2e')]('response',getLogFromObject(_0x3e32b8));return _[_0xc61a('0x46')](_0x3e32b8[_0xc61a('0x44')])?null:_0x3e32b8[_0xc61a('0x44')][_0xc61a('0x47')]();}else{logger[_0xc61a('0x11')](_0xc61a('0x42'),getLogFromObject(_0x3e32b8));return null;}}else{logger['error'](_0xc61a('0x48'));return null;}}catch(_0x5a7207){logger[_0xc61a('0x11')](_0x5a7207['stack']);return null;}});if(_0x4a2263[_0xc61a('0x49')]){logger[_0xc61a('0xe')](util[_0xc61a('0x13')](_0xc61a('0x4a'),_0x208039[_0xc61a('0x15')],_0x208039['calleridname'],_0x208039[_0xc61a('0x17')],_0x208039['dnid'],_0x208039['uniqueid']));_0x5c633f[_0xc61a('0x3b')](_0x4a2263[_0xc61a('0x49')]['id'],function(_0x5d1670){try{_0x5d1670=_0x474178[_0xc61a('0x3c')](_0x5d1670);logger[_0xc61a('0x2e')](_0xc61a('0x3d'),JSON[_0xc61a('0x2f')](_0x5d1670,null,0x2));if(_0x5d1670&&_0x474178[_0x5d1670['agicommand']]){_0x3e32b8=_0x474178[_0x5d1670[_0xc61a('0x1d')]](_0x5d1670);if(_0x3e32b8){logger[_0xc61a('0x2e')](_0xc61a('0x42'),getLogFromObject(_0x3e32b8));return _[_0xc61a('0x46')](_0x3e32b8[_0xc61a('0x44')])?null:_0x3e32b8[_0xc61a('0x44')][_0xc61a('0x47')]();}else{logger['error'](_0xc61a('0x42'),getLogFromObject(_0x3e32b8));return null;}}else{logger[_0xc61a('0x11')]('agicommand\x20not\x20found');return null;}}catch(_0x1b429d){logger[_0xc61a('0x11')](_0x1b429d[_0xc61a('0xc')]);return null;}});}logger[_0xc61a('0xe')](util['format'](_0xc61a('0x4b'),_0x208039[_0xc61a('0x15')],_0x208039[_0xc61a('0x16')],_0x208039[_0xc61a('0x17')],_0x208039[_0xc61a('0x18')],_0x208039[_0xc61a('0x19')]));logger['info'](util['format'](_0xc61a('0x4c'),_0x208039[_0xc61a('0x3f')],_0x208039[_0xc61a('0x40')],parseInt(_0x208039[_0xc61a('0x41')],0xa)+0x1));_0x208039[_0xc61a('0x4d')](_0x208039['context'],_0x208039[_0xc61a('0x40')],parseInt(_0x208039[_0xc61a('0x41')],0xa)+0x1);_0x208039[_0xc61a('0x4e')]();}}else{logger['error'](util['format'](_0xc61a('0x4f'),_0x208039[_0xc61a('0x15')]));_0x208039[_0xc61a('0x4d')](_0x208039['context'],_0x208039['extension'],parseInt(_0x208039[_0xc61a('0x41')],0xa)+0x1);_0x208039[_0xc61a('0x4e')]();}}else{logger[_0xc61a('0x11')](util[_0xc61a('0x13')](_0xc61a('0x50'),_0x208039[_0xc61a('0x15')]));_0x208039[_0xc61a('0x4d')](_0x208039[_0xc61a('0x3f')],_0x208039[_0xc61a('0x40')],parseInt(_0x208039[_0xc61a('0x41')],0xa)+0x1);_0x208039[_0xc61a('0x4e')]();}}function main(){var _0x308231;return utilLicense[_0xc61a('0x51')]()[_0xc61a('0x29')](function(_0x118e03){if(_0x118e03){if(_0x118e03[_0xc61a('0x52')]){if(_0x118e03[_0xc61a('0x53')]&&_0x118e03['callysquare']>0x0){logger[_0xc61a('0xe')](util[_0xc61a('0x13')](_0xc61a('0x54'),_0x118e03[_0xc61a('0x53')]));_0x308231=_0x118e03[_0xc61a('0x53')];}else{logger[_0xc61a('0xe')](_0xc61a('0x55'));}}else{logger[_0xc61a('0xe')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x308231=-0x1;}}})[_0xc61a('0x56')](function(_0xbaa518){logger['error'](_0xc61a('0x57'),_0xbaa518['stack']);})[_0xc61a('0x49')](function(){var _0x5c84e9=require(_0xc61a('0x58'))(config[_0xc61a('0x9')]['port'],config[_0xc61a('0x9')]['ip'],_0x308231);_0x5c84e9['on'](_0xc61a('0x11'),errorHandler);_0x5c84e9['on'](_0xc61a('0x59'),listeningHandler);_0x5c84e9['on'](_0xc61a('0x5a'),connectionHandler);_0x5c84e9['on'](_0xc61a('0x4e'),closeHandler);});}main();