f33d00c4d1c8e28da6fbb813582c9dfef3571e23
[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 _0xa83a=['./server','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','./rpc','./project','./events','EventEmitter','defaults','projectUpdate','nextTick','stack','findIndex','deleted','push','env','production','port','format','host.docker.internal','name','message','error','[%s]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','evtHangup','createSquareReport','catch','hasOwnProperty','indexOf','agi_','substring','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','hangup','find','handleUnpublished','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally'];(function(_0x27c822,_0x4850f1){var _0x2e60b2=function(_0x14e1aa){while(--_0x14e1aa){_0x27c822['push'](_0x27c822['shift']());}};_0x2e60b2(++_0x4850f1);}(_0xa83a,0x164));var _0xaa83=function(_0x117f88,_0x9e67e8){_0x117f88=_0x117f88-0x0;var _0x2b9d0b=_0xa83a[_0x117f88];return _0x2b9d0b;};'use strict';var _=require(_0xaa83('0x0'));var syncho=require(_0xaa83('0x1'));var util=require(_0xaa83('0x2'));var config=require(_0xaa83('0x3'));var logger=require(_0xaa83('0x4'))(_0xaa83('0x5'));var utilLicense=require('../../config/license/util');var rpc=require(_0xaa83('0x6'));var Project=require(_0xaa83('0x7'));var AGIEmitter=require(_0xaa83('0x8'))[_0xaa83('0x9')];var projects=[];config[_0xaa83('0x5')]=_[_0xaa83('0xa')](config[_0xaa83('0x5')],{'ip':'127.0.0.1','port':0x11dd});AGIEmitter['on'](_0xaa83('0xb'),projectUpdateHandler);function connectionHandler(_0x4a5650){process[_0xaa83('0xc')](function(){syncho(function(){try{setChannelVariables(_0x4a5650);agiHandler(_0x4a5650);}catch(_0x327237){logger['error'](_0x327237[_0xaa83('0xd')]);}});});}function projectUpdateHandler(_0x49d3e5){try{var _0x4df83a=_[_0xaa83('0xe')](projects,['id',_0x49d3e5['id']]);if(_0x4df83a>-0x1){if(_0x49d3e5[_0xaa83('0xf')]===!![]){projects['splice'](_0x4df83a,0x1);}else{projects[_0x4df83a]=_0x49d3e5;}}else{projects[_0xaa83('0x10')](_0x49d3e5);}}catch(_0xf6ef46){logger['error'](_0xf6ef46[_0xaa83('0xd')]);}}function listeningHandler(){var _0x4c30c3=config[_0xaa83('0x11')]===_0xaa83('0x12')||![];console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xaa83('0x5')][_0xaa83('0x13')]);logger['info'](util[_0xaa83('0x14')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',_0x4c30c3?config[_0xaa83('0x5')]['ip']:_0xaa83('0x15'),config['agi'][_0xaa83('0x13')]));}function errorHandler(_0x1786e2){if(_0x1786e2&&_0x1786e2[_0xaa83('0x16')]&&_0x1786e2[_0xaa83('0x17')]){logger[_0xaa83('0x18')](util[_0xaa83('0x14')](_0xaa83('0x19'),_0x1786e2[_0xaa83('0x16')],_0x1786e2[_0xaa83('0x17')]));}else{logger[_0xaa83('0x18')](util[_0xaa83('0x14')]('[ERROR]\x20%s',_0x1786e2[_0xaa83('0xd')]));}}function closeHandler(){logger['info'](util[_0xaa83('0x14')](_0xaa83('0x1a'),this[_0xaa83('0x1b')],this['calleridname'],this[_0xaa83('0x1c')],this[_0xaa83('0x1d')],this['uniqueid']));try{createSquareReport(this);}catch(_0x5d12a1){logger[_0xaa83('0x18')](_0x5d12a1[_0xaa83('0xd')]);}}function timeoutHandler(){logger[_0xaa83('0x1e')](util[_0xaa83('0x14')](_0xaa83('0x1f'),this[_0xaa83('0x1b')],this[_0xaa83('0x20')],this[_0xaa83('0x1c')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0xaa83('0x1e')](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xaa83('0x1b')],this[_0xaa83('0x20')],this['callerid'],this[_0xaa83('0x1d')],this[_0xaa83('0x21')]));this[_0xaa83('0x22')]=!![];}function createSquareReport(_0x3a38f9,_0x5c65ed){rpc[_0xaa83('0x23')](_0x3a38f9)['then'](function(_0x22a449){if(_0x5c65ed){_0x5c65ed(null,_0x22a449);}})[_0xaa83('0x24')](function(_0x8598bf){if(_0x5c65ed){_0x5c65ed(null,_0x8598bf);}});}function setChannelVariables(_0x58ac5a){for(var _0x4b117c in _0x58ac5a){if(_0x58ac5a[_0xaa83('0x25')](_0x4b117c)){if(_0x4b117c[_0xaa83('0x26')](_0xaa83('0x27'))===0x0){_0x58ac5a[_0x4b117c[_0xaa83('0x28')](0x4)]=_0x58ac5a[_0x4b117c];delete _0x58ac5a[_0x4b117c];}}}}function agiHandler(_0x18f82b){logger['debug'](_0xaa83('0x29'),JSON['stringify'](_0x18f82b,null,0x2));logger[_0xaa83('0x1e')](util[_0xaa83('0x14')](_0xaa83('0x2a'),_0x18f82b[_0xaa83('0x1b')],_0x18f82b[_0xaa83('0x20')],_0x18f82b[_0xaa83('0x1c')],_0x18f82b['dnid'],_0x18f82b[_0xaa83('0x21')]));_0x18f82b['on'](_0xaa83('0x18'),errorHandler);_0x18f82b['on'](_0xaa83('0x2b'),closeHandler);_0x18f82b['on']('timeout',timeoutHandler);_0x18f82b[_0xaa83('0x22')]=![];_0x18f82b['on'](_0xaa83('0x2c'),hangupHandler);var _0x3cd0e1=_[_0xaa83('0x2d')](projects,[_0xaa83('0x16'),_0x18f82b[_0xaa83('0x1b')]]);if(!_0x3cd0e1)return Project['handleNotFound'](_0x18f82b);if(!_0x3cd0e1['production'])return Project[_0xaa83('0x2e')](_0x18f82b);return Project['initialize'](_0x3cd0e1,_0x18f82b);}function main(){var _0x2b9834;return utilLicense[_0xaa83('0x2f')]()[_0xaa83('0x30')](function(_0x667df){if(!_0x667df)return;if(_0x667df[_0xaa83('0x31')]){if(_0x667df[_0xaa83('0x32')]&&_0x667df[_0xaa83('0x32')]>0x0){logger[_0xaa83('0x1e')](util[_0xaa83('0x14')](_0xaa83('0x33'),_0x667df['callysquare']));_0x2b9834=_0x667df[_0xaa83('0x32')];}else{logger['info'](_0xaa83('0x34'));}}else{logger[_0xaa83('0x1e')](_0xaa83('0x35'));_0x2b9834=-0x1;}})[_0xaa83('0x30')](function(){return Project[_0xaa83('0x36')]();})[_0xaa83('0x30')](function(_0x120107){projects=_0x120107;return;})['catch'](function(_0x177d52){logger[_0xaa83('0x18')](_0xaa83('0x37'),_0x177d52['stack']);})[_0xaa83('0x38')](function(){var _0xeb7e85=require(_0xaa83('0x39'))(config['agi'][_0xaa83('0x13')],config[_0xaa83('0x5')]['ip'],_0x2b9834);_0xeb7e85['on']('error',errorHandler);_0xeb7e85['on']('listening',listeningHandler);_0xeb7e85['on'](_0xaa83('0x3a'),connectionHandler);_0xeb7e85['on'](_0xaa83('0x2b'),closeHandler);});}main();