6a64e3c4ffa0036d15355205c40574cbd4416615
[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 _0xbbaf=['callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','catch','finally','./server','listening','connection','lodash','util','../../config/environment','agi','../../config/license/util','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','error','findIndex','deleted','splice','push','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','format','[%s]\x20%s','name','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','hasOwnProperty','indexOf','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','evtHangup','hangup','find','handleNotFound','production','handleUnpublished','initialize','getLicense','voice'];(function(_0x5e8212,_0x31fdc3){var _0x4ffffb=function(_0x1d2718){while(--_0x1d2718){_0x5e8212['push'](_0x5e8212['shift']());}};_0x4ffffb(++_0x31fdc3);}(_0xbbaf,0x8a));var _0xfbba=function(_0x555163,_0x4a5f0b){_0x555163=_0x555163-0x0;var _0x15816a=_0xbbaf[_0x555163];return _0x15816a;};'use strict';var _=require(_0xfbba('0x0'));var syncho=require('syncho');var util=require(_0xfbba('0x1'));var config=require(_0xfbba('0x2'));var logger=require('../../config/logger')(_0xfbba('0x3'));var utilLicense=require(_0xfbba('0x4'));var rpc=require(_0xfbba('0x5'));var Project=require(_0xfbba('0x6'));var AGIEmitter=require(_0xfbba('0x7'))[_0xfbba('0x8')];var projects=[];config[_0xfbba('0x3')]=_[_0xfbba('0x9')](config[_0xfbba('0x3')],{'ip':_0xfbba('0xa'),'port':0x11dd});AGIEmitter['on'](_0xfbba('0xb'),projectUpdateHandler);function connectionHandler(_0x30d230){process[_0xfbba('0xc')](function(){syncho(function(){try{setChannelVariables(_0x30d230);agiHandler(_0x30d230);}catch(_0x29770d){logger[_0xfbba('0xd')](_0x29770d['stack']);}});});}function projectUpdateHandler(_0xd5f945){try{var _0x3ac0c3=_[_0xfbba('0xe')](projects,['id',_0xd5f945['id']]);if(_0x3ac0c3>-0x1){if(_0xd5f945[_0xfbba('0xf')]===!![]){projects[_0xfbba('0x10')](_0x3ac0c3,0x1);}else{projects[_0x3ac0c3]=_0xd5f945;}}else{projects[_0xfbba('0x11')](_0xd5f945);}}catch(_0xae8238){logger[_0xfbba('0xd')](_0xae8238[_0xfbba('0x12')]);}}function listeningHandler(){console[_0xfbba('0x13')](_0xfbba('0x14'),config[_0xfbba('0x3')][_0xfbba('0x15')]);logger['info'](util['format'](_0xfbba('0x16'),config[_0xfbba('0x3')]['ip'],config[_0xfbba('0x3')][_0xfbba('0x15')]));}function errorHandler(_0x5bdefa){if(_0x5bdefa&&_0x5bdefa['name']&&_0x5bdefa['message']){logger[_0xfbba('0xd')](util[_0xfbba('0x17')](_0xfbba('0x18'),_0x5bdefa[_0xfbba('0x19')],_0x5bdefa['message']));}else{logger['error'](util[_0xfbba('0x17')](_0xfbba('0x1a'),_0x5bdefa[_0xfbba('0x12')]));}}function closeHandler(){logger[_0xfbba('0x1b')](util[_0xfbba('0x17')](_0xfbba('0x1c'),this[_0xfbba('0x1d')],this[_0xfbba('0x1e')],this[_0xfbba('0x1f')],this[_0xfbba('0x20')],this['uniqueid']));try{createSquareReport(this);}catch(_0x13df7c){logger[_0xfbba('0xd')](_0x13df7c[_0xfbba('0x12')]);}}function timeoutHandler(){logger[_0xfbba('0x1b')](util['format'](_0xfbba('0x21'),this[_0xfbba('0x1d')],this[_0xfbba('0x1e')],this[_0xfbba('0x1f')],this['dnid'],this[_0xfbba('0x22')]));}function hangupHandler(){logger['info'](util[_0xfbba('0x17')](_0xfbba('0x23'),this[_0xfbba('0x1d')],this[_0xfbba('0x1e')],this[_0xfbba('0x1f')],this['dnid'],this[_0xfbba('0x22')]));this['evtHangup']=!![];}function createSquareReport(_0x4c7004,_0x3ff9fb){rpc[_0xfbba('0x24')](_0x4c7004)[_0xfbba('0x25')](function(_0x2938de){if(_0x3ff9fb){_0x3ff9fb(null,_0x2938de);}})['catch'](function(_0x3f798){if(_0x3ff9fb){_0x3ff9fb(null,_0x3f798);}});}function setChannelVariables(_0x9db929){for(var _0x1a375e in _0x9db929){if(_0x9db929[_0xfbba('0x26')](_0x1a375e)){if(_0x1a375e[_0xfbba('0x27')](_0xfbba('0x28'))===0x0){_0x9db929[_0x1a375e[_0xfbba('0x29')](0x4)]=_0x9db929[_0x1a375e];delete _0x9db929[_0x1a375e];}}}}function agiHandler(_0x29ff02){logger[_0xfbba('0x2a')](_0xfbba('0x2b'),JSON[_0xfbba('0x2c')](_0x29ff02,null,0x2));logger[_0xfbba('0x1b')](util['format'](_0xfbba('0x2d'),_0x29ff02[_0xfbba('0x1d')],_0x29ff02[_0xfbba('0x1e')],_0x29ff02[_0xfbba('0x1f')],_0x29ff02[_0xfbba('0x20')],_0x29ff02[_0xfbba('0x22')]));_0x29ff02['on'](_0xfbba('0xd'),errorHandler);_0x29ff02['on'](_0xfbba('0x2e'),closeHandler);_0x29ff02['on'](_0xfbba('0x2f'),timeoutHandler);_0x29ff02[_0xfbba('0x30')]=![];_0x29ff02['on'](_0xfbba('0x31'),hangupHandler);var _0x37df8a=_[_0xfbba('0x32')](projects,[_0xfbba('0x19'),_0x29ff02[_0xfbba('0x1d')]]);if(!_0x37df8a)return Project[_0xfbba('0x33')](_0x29ff02);if(!_0x37df8a[_0xfbba('0x34')])return Project[_0xfbba('0x35')](_0x29ff02);return Project[_0xfbba('0x36')](_0x37df8a,_0x29ff02);}function main(){var _0x4975b8;return utilLicense[_0xfbba('0x37')]()[_0xfbba('0x25')](function(_0x1fc015){if(!_0x1fc015)return;if(_0x1fc015[_0xfbba('0x38')]){if(_0x1fc015['callysquare']&&_0x1fc015['callysquare']>0x0){logger['info'](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0x1fc015[_0xfbba('0x39')]));_0x4975b8=_0x1fc015['callysquare'];}else{logger[_0xfbba('0x1b')](_0xfbba('0x3a'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x4975b8=-0x1;}})[_0xfbba('0x25')](function(){return Project[_0xfbba('0x3b')]();})[_0xfbba('0x25')](function(_0x390bc3){projects=_0x390bc3;return;})[_0xfbba('0x3c')](function(_0x1eab9b){logger['error']('[LICENSE]',_0x1eab9b[_0xfbba('0x12')]);})[_0xfbba('0x3d')](function(){var _0x2ccdb4=require(_0xfbba('0x3e'))(config['agi'][_0xfbba('0x15')],config['agi']['ip'],_0x4975b8);_0x2ccdb4['on'](_0xfbba('0xd'),errorHandler);_0x2ccdb4['on'](_0xfbba('0x3f'),listeningHandler);_0x2ccdb4['on'](_0xfbba('0x40'),connectionHandler);_0x2ccdb4['on'](_0xfbba('0x2e'),closeHandler);});}main();