Built motion from commit eddce310.|2.6.12
[motion2.git] / server / services / ami / dialer / utils / 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 _0x5175=['\x22\x22\x20<>','getCallerId','\x5cw{0,','pow','random','getCallerIdRandom','error','decrementOriginate','length','checkContactEmpty','lodash','../../../../config/logger','dialer','../../../../config/environment/shared','timezones','ACTIVE','BLACKLIST','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','dialMethod','preview','isPreviewCampaign','type','ivr','isIVRCampaign','outbound','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','getSeconds','message','available','loggedIn','loggedInDb','talking','waiting','inUse','originated','Trunk','name','hasQueueCampaignDataChanged','dialTimezone','isNil','Interval','NULL_INTERVAL','isEmpty','dialGlobalInterval','Intervals','SIP/','reachable','unmonitored','includes','status','TrunkBackup','INACTIVE','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage','DISACTIVED','pTalking','getQueueCampaignActiveStatusMessage','match','extractCalleridName','isUndefined','format','\x22%s\x22\x20<%s>','string'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x5175,0x1a4));var _0x5517=function(_0x294ee4,_0x3773a9){_0x294ee4=_0x294ee4-0x0;var _0x1a3f59=_0x5175[_0x294ee4];return _0x1a3f59;};'use strict';var _=require(_0x5517('0x0'));var moment=require('moment');var util=require('util');var logger=require(_0x5517('0x1'))(_0x5517('0x2'));var timezones=require(_0x5517('0x3'))[_0x5517('0x4')];var CAMPAIGN_STATUS={'ACTIVE':_0x5517('0x5'),'BLACKLIST':_0x5517('0x6'),'CONTACTS_RESCHEDULED':_0x5517('0x7'),'DEACTIVATED':_0x5517('0x8'),'DISACTIVED':_0x5517('0x9'),'EMPTY_INTERVAL':_0x5517('0xa'),'INACTIVE':_0x5517('0xb'),'NO_AGENTS_LOGGED':_0x5517('0xc'),'NO_AVAILABLE_CONTACTS':_0x5517('0xd'),'NULL_INTERVAL':_0x5517('0xe'),'OVERTIME_INTERVAL':_0x5517('0xf'),'OVERTIME_GLOBAL_INTERVAL':_0x5517('0x10'),'QUEUE_RECALL':_0x5517('0x11'),'RECALL_TIMEOUT':'RECALLFAILEDTIMEOUT','RUNNING':_0x5517('0x12'),'UNKNOWN_TIMEZONE':_0x5517('0x13'),'UNREACHABLE_TRUNK':_0x5517('0x14')};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x4dce46){return _0x4dce46[_0x5517('0x15')]===_0x5517('0x16');}exports[_0x5517('0x17')]=isPreviewCampaign;function isIVRCampaign(_0x3d2f58){return _0x3d2f58[_0x5517('0x18')]===_0x5517('0x19');}exports[_0x5517('0x1a')]=isIVRCampaign;function isOutboundQueue(_0x58ab13){return _0x58ab13[_0x5517('0x18')]===_0x5517('0x1b');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x1b091b){return _0x1b091b[_0x5517('0x1c')];}exports[_0x5517('0x1d')]=isQueueCampaignActive;function isIVRCampaignActive(_0xe9eb8e){return _0xe9eb8e[_0x5517('0x1e')];}exports[_0x5517('0x1f')]=isIVRCampaignActive;function getSeconds(_0x35ca2b,_0x483cfb){var _0x508811=moment(_0x35ca2b)[_0x5517('0x20')](0x0);var _0x51b68b=moment(_0x483cfb)['milliseconds'](0x0);return _0x508811[_0x5517('0x21')](_0x51b68b,_0x5517('0x22'));}exports[_0x5517('0x23')]=getSeconds;function hasQueueCampaignDataChanged(_0x3aebce,_0x244b31){var _0x4666e5=![];var _0x1e9a15=_0x3aebce[_0x5517('0x15')]!==_0x244b31[_0x5517('0x15')]||_0x3aebce[_0x5517('0x1c')]!==_0x244b31[_0x5517('0x1c')]||_0x3aebce[_0x5517('0x24')]!==_0x244b31[_0x5517('0x24')];var _0x589a50=_0x3aebce[_0x5517('0x25')]!==_0x244b31[_0x5517('0x25')]||_0x3aebce[_0x5517('0x26')]!==_0x244b31[_0x5517('0x26')]||_0x3aebce[_0x5517('0x27')]!==_0x244b31[_0x5517('0x27')]||_0x3aebce['paused']!==_0x244b31['paused']||_0x3aebce[_0x5517('0x28')]!==_0x244b31[_0x5517('0x28')]||_0x3aebce['pTalking']!==_0x244b31['pTalking']||_0x3aebce['waiting']!==_0x244b31[_0x5517('0x29')]||_0x3aebce[_0x5517('0x2a')]!==_0x244b31[_0x5517('0x2a')]||_0x3aebce['originated']!==_0x244b31[_0x5517('0x2b')];if(_0x3aebce['Trunk']&&_0x244b31[_0x5517('0x2c')]){_0x4666e5=_0x3aebce[_0x5517('0x2c')]['name']!==_0x244b31[_0x5517('0x2c')][_0x5517('0x2d')]||_0x3aebce[_0x5517('0x2c')]['active']!==_0x244b31[_0x5517('0x2c')][_0x5517('0x1e')];}return _0x1e9a15||_0x589a50||_0x4666e5;}exports[_0x5517('0x2e')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x1bebc6){var _0x239934=null;var _0x5a71e8=_0x1bebc6[_0x5517('0x2f')];if(_['isNil'](_0x1bebc6['dialGlobalInterval'])||_[_0x5517('0x30')](_0x1bebc6[_0x5517('0x31')])||_[_0x5517('0x30')](_0x1bebc6[_0x5517('0x31')]['Intervals'])){_0x239934=CAMPAIGN_STATUS[_0x5517('0x32')];}else if(_[_0x5517('0x33')](_0x1bebc6[_0x5517('0x34')])||_[_0x5517('0x33')](_0x1bebc6['Interval'][_0x5517('0x35')])){_0x239934=CAMPAIGN_STATUS['EMPTY_INTERVAL'];}else if(_0x5a71e8&&!timezones[_0x5a71e8]){_0x239934=CAMPAIGN_STATUS['UNKNOWN_TIMEZONE'];}return _0x239934;}function checkAnyValidTrunk(_0x53b916,_0x404512){var _0x3f377c=null;var _0x476a62=_0x5517('0x36');var _0x3f7cae=[_0x5517('0x37'),_0x5517('0x38')];var _0x405909=!![];if(_0x53b916[_0x5517('0x2c')]&&_0x53b916[_0x5517('0x2c')][_0x5517('0x1e')]){_0x476a62+=_0x53b916[_0x5517('0x2c')][_0x5517('0x2d')];_0x3f377c=_0x404512[_0x476a62];_0x405909=_0x3f7cae[_0x5517('0x39')](_0x3f377c[_0x5517('0x3a')]);}else if(_0x53b916[_0x5517('0x3b')]&&_0x53b916[_0x5517('0x3b')]['active']){_0x476a62+=_0x53b916[_0x5517('0x3b')][_0x5517('0x2d')];_0x3f377c=_0x404512[_0x476a62];_0x405909=_0x3f7cae[_0x5517('0x39')](_0x3f377c[_0x5517('0x3a')]);}return _0x405909;}function getQueueCampaignStatusMessage(_0x574df6,_0x120f47){var _0x2ded39=CAMPAIGN_STATUS[_0x5517('0x5')];var _0x4f461a=isPreviewCampaign(_0x574df6);if(!isQueueCampaignActive(_0x574df6)){if(_0x4f461a){_0x2ded39=CAMPAIGN_STATUS[_0x5517('0x3c')];}else{if(_0x574df6[_0x5517('0x2b')]===0x0&&_0x574df6['talking']===0x0&&_0x574df6[_0x5517('0x29')]===0x0&&(_0x574df6['pTalking']||0x0)===0x0){_0x2ded39=CAMPAIGN_STATUS[_0x5517('0x3c')];}else{_0x2ded39=CAMPAIGN_STATUS['DISACTIVED'];}}}else if(_0x574df6['loggedIn']===0x0){_0x2ded39=CAMPAIGN_STATUS[_0x5517('0x3d')];}else if(!checkAnyValidTrunk(_0x574df6,_0x120f47)){_0x2ded39=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0x574df6)){var _0x120c97=checkAnyValidQueueCampaignInterval(_0x574df6);if(_0x120c97){_0x2ded39=_0x120c97;}}return _0x2ded39;}exports[_0x5517('0x3e')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x281774){var _0x3f7118=CAMPAIGN_STATUS[_0x5517('0x3f')];if(_0x281774[_0x5517('0x2b')]===0x0&&_0x281774['talking']===0x0&&_0x281774[_0x5517('0x29')]===0x0&&(_0x281774[_0x5517('0x40')]||0x0)===0x0){_0x3f7118=CAMPAIGN_STATUS['INACTIVE'];}return _0x3f7118;}exports[_0x5517('0x41')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0xafcac){var _0x2bf0ec=_0xafcac[_0x5517('0x42')](/"(.*?)"/);return _0x2bf0ec?_0x2bf0ec[0x1]:_0xafcac;}exports[_0x5517('0x43')]=extractCalleridName;function getCallerId(_0x4091d1,_0x35df6b,_0x2b4cc6){if(!_[_0x5517('0x44')](_0x2b4cc6)&&typeof _0x2b4cc6==='string'&&!_[_0x5517('0x33')](_0x2b4cc6)){if(!_[_0x5517('0x44')](_0x35df6b)&&typeof _0x35df6b==='string'&&!_[_0x5517('0x33')](_0x35df6b)){return util[_0x5517('0x45')]('\x22%s\x22\x20<%s>',_0x35df6b,_0x2b4cc6);}return util[_0x5517('0x45')](_0x5517('0x46'),_0x2b4cc6,_0x2b4cc6);}if(!_[_0x5517('0x44')](_0x4091d1)&&typeof _0x4091d1===_0x5517('0x47')&&!_[_0x5517('0x33')](_0x4091d1)){return _0x4091d1;}return _0x5517('0x48');}exports[_0x5517('0x49')]=getCallerId;function getCallerIdRandom(_0x5c4c88,_0x3ce59a){var _0x4b38e3;var _0x4b96e0;var _0x590eaf;if(_0x3ce59a<=0x0){_0x3ce59a=0x1;}_0x4b38e3=new RegExp(_0x5517('0x4a')+_0x3ce59a+'}$');_0x4b96e0=Math[_0x5517('0x4b')](0xa,_0x3ce59a-0x1);_0x590eaf=Math[_0x5517('0x4b')](0xa,_0x3ce59a)-0x1;return util['format']('%s',_['replace'](_0x5c4c88,_0x4b38e3,_[_0x5517('0x4c')](_0x4b96e0,_0x590eaf)['toString']()));}exports[_0x5517('0x4d')]=getCallerIdRandom;function decrementOriginate(_0x174d8c){if(_0x174d8c[_0x5517('0x2b')]&&_0x174d8c[_0x5517('0x2b')]>0x0){_0x174d8c[_0x5517('0x2b')]-=0x1;}else{logger[_0x5517('0x4e')]('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0x5517('0x4f')]=decrementOriginate;function checkContactEmpty(_0x2d1c0c){return _0x2d1c0c&&_0x2d1c0c[_0x5517('0x50')]>0x0;}exports[_0x5517('0x51')]=checkContactEmpty;function erlangb(_0x3ab279,_0xda0eac){if(_0xda0eac===0x0){return 0x0;}var _0x932aaa=0x1;for(var _0x3aec23=0x1;_0x3aec23<=_0xda0eac;_0x3aec23+=0x1){_0x932aaa=0x1+_0x932aaa*_0x3aec23/_0x3ab279;}return 0x1/_0x932aaa;}exports['erlangb']=erlangb;function checkContactLowerLimitOriginate(_0x202707,_0x1bedc7,_0x5ef30b){if(_0x1bedc7>_0x5ef30b){for(var _0x4462aa=0x0;_0x4462aa<_0x1bedc7-_0x5ef30b;_0x4462aa+=0x1){decrementOriginate(_0x202707);}}}exports['checkContactLowerLimitOriginate']=checkContactLowerLimitOriginate;