Built motion from commit 67e5df37.|2.0.66
[motion2.git] / server / services / routing / server / 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 _0xadb5=['error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','capacity','hasOwnProperty','CurrentCapacity','agent\x20not\x20found','values','mailQueues','openchannelQueues','smsQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','listen','127.0.0.1','log','RPC\x20listening\x20on\x20port:','util','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','map','Intervals','interval','rules','channel','message','interaction','applications','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','push','slice','tag','%s:%s:%s','./applications/','consequence','priority','info','on\x20interval','intervals','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','routing\x20is\x20empty','update','catch'];(function(_0xd8efb0,_0x2fb48b){var _0x3d962c=function(_0x2db9e4){while(--_0x2db9e4){_0xd8efb0['push'](_0xd8efb0['shift']());}};_0x3d962c(++_0x2fb48b);}(_0xadb5,0xad));var _0x5adb=function(_0xb58244,_0x32fa41){_0xb58244=_0xb58244-0x0;var _0x50c908=_0xadb5[_0xb58244];return _0x50c908;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var path=require('path');var fs=require('fs');var jayson=require(_0x5adb('0x1'));var BPromise=require(_0x5adb('0x2'));var uuid=require(_0x5adb('0x3'));var config=require('../../../config/environment');var logger=require(_0x5adb('0x4'))(_0x5adb('0x5'));var rpc={'openchannelQueueReport':require(_0x5adb('0x6'))};var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x5adb('0x7')),'chatQueueReport':require(_0x5adb('0x8')),'smsQueueReport':require(_0x5adb('0x9')),'faxQueueReport':require(_0x5adb('0xa'))};var RuleEngine=require(_0x5adb('0xb'));function getId(_0x353885,_0x47228a,_0x6d1b45){return util[_0x5adb('0xc')](_0x5adb('0xd'),_0x353885,_0x47228a||0x0,_0x6d1b45||0x0);}function getIntervals(_0x34f59d,_0x336bad){var _0x129f5a=[];if(!_[_0x5adb('0xe')](_0x336bad['IntervalId'])&&!_['isNil'](_0x34f59d[_0x336bad[_0x5adb('0xf')]])&&!_[_0x5adb('0xe')](_0x34f59d[_0x336bad[_0x5adb('0xf')]]['Intervals'])){_0x129f5a=_[_0x5adb('0x10')](_0x34f59d[_0x336bad['IntervalId']][_0x5adb('0x11')],'interval');}else if(!_[_0x5adb('0xe')](_0x336bad[_0x5adb('0x12')])){_0x129f5a=[_0x336bad[_0x5adb('0x12')]];}return _0x129f5a;}exports['listen']=function(_0x2a545b){_0x2a545b[_0x5adb('0x13')]={};return new BPromise(function(_0xf82f72,_0x5263ec){var _0x2312de={'Start':function(_0x518823){var _0x367d82=this;return new Promise(function(_0x42a482,_0x30614e){if(_0x518823){try{var _0x304784=[];var _0x1c0f97=getId(_0x518823[_0x5adb('0x14')],_0x518823[_0x5adb('0x15')]?_0x518823[_0x5adb('0x15')]['id']:0x0,_0x518823[_0x5adb('0x16')]?_0x518823['interaction']['id']:0x0);if(_0x518823[_0x5adb('0x17')]&&_['isArray'](_0x518823[_0x5adb('0x17')])&&_0x518823['applications'][_0x5adb('0x18')]){for(var _0x50e84f=0x0;_0x50e84f<_0x518823['applications'][_0x5adb('0x18')];_0x50e84f+=0x1){var _0x1bed20=_0x518823[_0x5adb('0x17')][_0x50e84f];if(fs[_0x5adb('0x19')](path[_0x5adb('0x1a')](__dirname,'applications',_0x1bed20[_0x5adb('0x1b')]+'.js'))){var _0x4e9f16=[];switch(_0x1bed20[_0x5adb('0x1b')][_0x5adb('0x1c')]()){case _0x5adb('0x1d'):var _0x1a8014=_0x1bed20[_0x5adb('0x1e')][_0x5adb('0x1f')](',');_0x4e9f16[_0x5adb('0x20')](_0x1a8014[0x0]);_0x4e9f16['push'](_0x1a8014[_0x5adb('0x21')](0x1,_0x1a8014[_0x5adb('0x18')])[_0x5adb('0x1a')](','));break;case _0x5adb('0x15'):_0x4e9f16[_0x5adb('0x20')](_0x1bed20['appdata']);break;case _0x5adb('0x22'):_0x4e9f16[_0x5adb('0x20')](_0x1bed20['TagId']);_0x4e9f16[_0x5adb('0x20')](_0x1bed20[_0x5adb('0x1e')]);break;default:_0x4e9f16=_[_0x5adb('0xe')](_0x1bed20['appdata'])?[]:_0x1bed20[_0x5adb('0x1e')][_0x5adb('0x1f')](',');}var _0x3a4fca={'id':util[_0x5adb('0xc')](_0x5adb('0x23'),_0x1c0f97,_0x1bed20['id'],_0x1bed20[_0x5adb('0x1b')]),'condition':require('./interval')['condition'](_0x1c0f97,getIntervals(_0x2a545b['intervals'],_0x1bed20),_0x2a545b),'consequence':require(_0x5adb('0x24')+_0x1bed20[_0x5adb('0x1b')])[_0x5adb('0x25')](_0x1c0f97,_0x4e9f16,_0x2a545b,_0x518823),'p':_0x1bed20[_0x5adb('0x26')]||0x0};logger[_0x5adb('0x27')]('Push\x20new\x20rule',_0x3a4fca['id'],_0x5adb('0x28'),getIntervals(_0x2a545b[_0x5adb('0x29')],_0x1bed20)[_0x5adb('0x1a')](_0x5adb('0x2a')));_0x304784[_0x5adb('0x20')](_0x3a4fca);}else{logger[_0x5adb('0x2b')](_0x5adb('0x2c'),path[_0x5adb('0x1a')](__dirname,_0x5adb('0x17'),_0x1bed20[_0x5adb('0x1b')]+'.js'));}}_0x2a545b[_0x5adb('0x13')][_0x1c0f97]=new RuleEngine(_0x304784);_0x2a545b['rules'][_0x1c0f97][_0x5adb('0x2d')](_0x518823,function(_0x20cde6){logger['info'](_0x5adb('0x2e'),JSON[_0x5adb('0x2f')](_0x20cde6[_0x5adb('0x30')]));if(_0x2a545b['rules'][_0x1c0f97]){delete _0x2a545b[_0x5adb('0x13')][_0x1c0f97];}});return _0x42a482({'code':0xc8,'message':_0x518823});}else{logger[_0x5adb('0x27')]('No\x20applications\x20to\x20execute');return _0x42a482({'code':0xc8,'message':_0x518823});}}catch(_0x5bb227){logger[_0x5adb('0x2b')](JSON['stringify'](_0x5bb227));return _0x30614e(_0x367d82[_0x5adb('0x2b')](0x1f4,_0x5bb227));}}return _0x30614e(_0x5adb('0x31'));});},'AcceptMessage':function(_0x3c2b07){var _0x2da912=this;return new Promise(function(_0x9bdece,_0x5ece39){if(_0x3c2b07[_0x5adb('0x15')]&&_0x3c2b07[_0x5adb('0x15')]['id']){try{var _0x1c3a5c=getId(_0x3c2b07['channel'],_0x3c2b07['message']?_0x3c2b07[_0x5adb('0x15')]['id']:0x0,_0x3c2b07[_0x5adb('0x16')]?_0x3c2b07['interaction']['id']:0x0);if(_0x2a545b[_0x5adb('0x13')][_0x1c3a5c]){delete _0x2a545b['rules'][_0x1c3a5c];if(rpc[_0x3c2b07[_0x5adb('0x14')]+'QueueReport']){rpc[_0x3c2b07[_0x5adb('0x14')]+'QueueReport'][_0x5adb('0x32')](_0x1c3a5c,{'UserId':_0x3c2b07[_0x5adb('0x15')]['UserId']})[_0x5adb('0x33')](function(_0x5a6a79){logger[_0x5adb('0x2b')](_0x5adb('0x34'));});}}return _0x9bdece({'code':0xc8,'message':_0x3c2b07});}catch(_0xd5660c){logger['error'](JSON[_0x5adb('0x2f')](_0xd5660c));return _0x5ece39(_0x2da912[_0x5adb('0x2b')](0x1f4,_0xd5660c));}}logger[_0x5adb('0x2b')](_0x5adb('0x35'));return _0x5ece39(_0x2da912[_0x5adb('0x2b')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x50fe99){var _0x4f491a=this;return new Promise(function(_0x599999,_0x427c71){if(_0x50fe99[_0x5adb('0x36')]&&_0x50fe99[_0x5adb('0x36')]['id']){try{if(_0x2a545b[_0x5adb('0x37')][_0x50fe99[_0x5adb('0x36')]['id']]){_0x2a545b[_0x5adb('0x37')][_0x50fe99[_0x5adb('0x36')]['id']][_0x5adb('0x38')]=![];_0x2a545b['agents'][_0x50fe99['agent']['id']][_0x5adb('0x39')]=undefined;}return _0x599999({'code':0xc8,'message':_0x50fe99});}catch(_0x48eb26){logger[_0x5adb('0x2b')](JSON[_0x5adb('0x2f')](_0x48eb26));return _0x427c71(_0x4f491a[_0x5adb('0x2b')](0x1f4,_0x48eb26));}}logger[_0x5adb('0x2b')](_0x5adb('0x35'));return _0x427c71(_0x4f491a['error'](0x1f4,_0x5adb('0x35')));});},'AbandonInteraction':function(_0x565b03){var _0x508690=this;return new Promise(function(_0x4160ad,_0x1a256c){if(_0x565b03['channel']&&_0x565b03[_0x5adb('0x16')]&&_0x565b03[_0x5adb('0x16')]['id']){try{var _0x1d6bef=getId(_0x565b03[_0x5adb('0x14')],_0x565b03[_0x5adb('0x15')]?_0x565b03[_0x5adb('0x15')]['id']:0x0,_0x565b03[_0x5adb('0x16')]?_0x565b03['interaction']['id']:0x0);if(_0x2a545b['rules'][_0x1d6bef]){delete _0x2a545b[_0x5adb('0x13')][_0x1d6bef];}return _0x4160ad({'code':0xc8,'message':_0x565b03});}catch(_0x37f230){logger[_0x5adb('0x2b')](JSON[_0x5adb('0x2f')](_0x37f230));return _0x1a256c(_0x508690['error'](0x1f4,_0x37f230));}}logger['error'](_0x5adb('0x35'));return _0x1a256c(_0x508690[_0x5adb('0x2b')](0x1f4,_0x5adb('0x35')));});},'AgentCapacity':function(_0x72218){var _0x1713bc=this;return new Promise(function(_0x5358c0,_0x182cbc){if(_0x2a545b[_0x5adb('0x37')]['hasOwnProperty'](_0x72218['id'])){for(var _0x7786c4 in _0x72218[_0x5adb('0x3a')]){if(_0x72218[_0x5adb('0x3a')][_0x5adb('0x3b')](_0x7786c4)){if(_0x2a545b[_0x5adb('0x37')][_0x72218['id']][_0x5adb('0x3b')](_0x7786c4+_0x5adb('0x3c'))){_0x2a545b[_0x5adb('0x37')][_0x72218['id']][_0x7786c4+'CurrentCapacity']=parseInt(_0x72218[_0x5adb('0x3a')][_0x7786c4],0xa);_0x2a545b['agents'][_0x72218['id']]['updateRealtime']();}}}return _0x5358c0({'code':0xc8,'message':_0x2a545b['agents'][_0x72218['id']]});}else{return _0x182cbc(_0x1713bc[_0x5adb('0x2b')](0x1f4,_0x5adb('0x3d')));}});},'Agents':function(_0x207a81){return new Promise(function(_0x4ba0b5,_0x2ad69d){var _0x5cbab5=_[_0x5adb('0x3e')](_0x2a545b[_0x5adb('0x37')]);_0x4ba0b5({'count':_0x5cbab5[_0x5adb('0x18')],'rows':_0x5cbab5});});},'ChatQueues':function(_0x541537){return new Promise(function(_0x27ddc4,_0x560bac){var _0x22fa54=_[_0x5adb('0x3e')](_0x2a545b['chatQueues']);_0x27ddc4({'count':_0x22fa54[_0x5adb('0x18')],'rows':_0x22fa54});});},'MailQueues':function(_0x1ab97b){return new Promise(function(_0x3594e3,_0x101008){var _0x372734=_['values'](_0x2a545b[_0x5adb('0x3f')]);_0x3594e3({'count':_0x372734[_0x5adb('0x18')],'rows':_0x372734});});},'OpenchannelQueues':function(_0x3bcf6f){return new Promise(function(_0x1b0938,_0x5bb91f){var _0x2dfb5e=_[_0x5adb('0x3e')](_0x2a545b[_0x5adb('0x40')]);_0x1b0938({'count':_0x2dfb5e['length'],'rows':_0x2dfb5e});});},'SmsQueues':function(_0x2b34a8){return new Promise(function(_0xd0e5b7,_0x444a6c){var _0xfd3471=_['values'](_0x2a545b[_0x5adb('0x41')]);_0xd0e5b7({'count':_0xfd3471[_0x5adb('0x18')],'rows':_0xfd3471});});},'FaxQueues':function(_0x28b291){return new Promise(function(_0x2cee37,_0xa25ac3){var _0x5c570b=_[_0x5adb('0x3e')](_0x2a545b['faxQueues']);_0x2cee37({'count':_0x5c570b[_0x5adb('0x18')],'rows':_0x5c570b});});},'ChatQueuesWaitingInteractions':function(_0x4f7227){return new Promise(function(_0x31ae72,_0x35df22){var _0x1a9358=_[_0x5adb('0x3e')](_0x2a545b['chatQueuesWaitingInteractions']);_0x31ae72({'count':_0x1a9358[_0x5adb('0x18')],'rows':_0x1a9358});});},'MailQueuesWaitingInteractions':function(_0x229ae2){return new Promise(function(_0x24b1f1,_0x53d262){var _0x5b005d=_['values'](_0x2a545b[_0x5adb('0x42')]);_0x24b1f1({'count':_0x5b005d[_0x5adb('0x18')],'rows':_0x5b005d});});},'OpenchannelQueuesWaitingInteractions':function(_0xa5ecc0){return new Promise(function(_0x12a146,_0xa833f4){var _0xb06bee=_[_0x5adb('0x3e')](_0x2a545b[_0x5adb('0x43')]);_0x12a146({'count':_0xb06bee[_0x5adb('0x18')],'rows':_0xb06bee});});},'SmsQueuesWaitingInteractions':function(_0x380d76){return new Promise(function(_0x452767,_0x1df439){var _0x2c2357=_['values'](_0x2a545b['smsQueuesWaitingInteractions']);_0x452767({'count':_0x2c2357[_0x5adb('0x18')],'rows':_0x2c2357});});},'FaxQueuesWaitingInteractions':function(_0x27a8e4){return new Promise(function(_0x43cde9,_0xdb7d8f){var _0x5d7a9f=_[_0x5adb('0x3e')](_0x2a545b[_0x5adb('0x44')]);_0x43cde9({'count':_0x5d7a9f['length'],'rows':_0x5d7a9f});});}};var _0x5cb50e=jayson[_0x5adb('0x45')](_0x2312de)[_0x5adb('0x46')]();_0x5cb50e['on']('error',function(_0x30d185){logger[_0x5adb('0x2b')](JSON[_0x5adb('0x2f')](_0x30d185));return _0x5263ec(_0x30d185);});_0x5cb50e[_0x5adb('0x47')](0x232c,_0x5adb('0x48'),function(){console[_0x5adb('0x49')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0xf82f72(_0x5adb('0x4a')+0x232c);});});};