Built motion from commit db94841.|2.5.3
[motion2.git] / server / services / ami / report / 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 _0x8db9=['assigned','isNil','SIP/%s','queuecallercomplete','queuecallercompleteAt','queuecallerexit','create','match','destination','type','dialer','queue','lastdata','context','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','channel','callerid','calleridnum','originatecalleridnum','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','exten','isArray','forEach','startsWith','Local','indexOf','phone','substring','lastIndexOf','blindTransfer','exports','bluebird','moment','util','../../../config/environment','../../../config/logger','ami','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedtransfer','attendedTransfer','findAgent','find','accountcode','interface','format','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8db9,0x186));var _0x98db=function(_0x395c89,_0x56c16d){_0x395c89=_0x395c89-0x0;var _0x21ee23=_0x8db9[_0x395c89];return _0x21ee23;};'use strict';var BPromise=require(_0x98db('0x0'));var _=require('lodash');var moment=require(_0x98db('0x1'));var util=require(_0x98db('0x2'));var config=require(_0x98db('0x3'));var logger=require(_0x98db('0x4'))(_0x98db('0x5'));var ami=require(_0x98db('0x6'));var RpcVoiceAgentReport=require(_0x98db('0x7'));var RpcVoiceCallReport=require(_0x98db('0x8'));var RpcVoiceDialReport=require(_0x98db('0x9'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0x98db('0xa'));var RpcVoiceTransferReport=require(_0x98db('0xb'));var VoiceQueueReport=require(_0x98db('0xc'));var VoiceCallReport=require(_0x98db('0xd'));var VoiceAgentReport=require(_0x98db('0xe'));var VoiceDialReport=require(_0x98db('0xf'));var UserReport=require(_0x98db('0x10'));function Report(_0x5cc100){this['realtime']=_0x5cc100;this[_0x98db('0x11')]=_0x5cc100[_0x98db('0x11')];this['telephones']=_0x5cc100[_0x98db('0x12')];}Report[_0x98db('0x13')]['sync']=function(_0x1aad9d){var _0x450a1f=new VoiceQueueReport(this[_0x98db('0x14')]);var _0x4d5a0a=new VoiceAgentReport(this[_0x98db('0x14')]);var _0x5cd896=new VoiceDialReport(this['realtime']);var _0x162694=new VoiceCallReport(this[_0x98db('0x14')]);var _0x4fb766=new UserReport(this['realtime']);if(config[_0x98db('0x15')]&&config[_0x98db('0x15')][_0x98db('0x16')]){ami['on'](_0x98db('0x17'),this[_0x98db('0x18')][_0x98db('0x19')](this));ami['on'](_0x98db('0x1a'),this[_0x98db('0x1b')][_0x98db('0x19')](this));ami['on'](_0x98db('0x1c'),this[_0x98db('0x1d')][_0x98db('0x19')](this));ami['on'](_0x98db('0x1e'),this[_0x98db('0x1f')][_0x98db('0x19')](this));ami['on']('blindtransfer',this['blindTransfer'][_0x98db('0x19')](this));ami['on'](_0x98db('0x20'),this[_0x98db('0x21')][_0x98db('0x19')](this));}};Report['prototype'][_0x98db('0x22')]=function(_0x5e2de1){var _0x190177=undefined;_0x190177=_[_0x98db('0x23')](this[_0x98db('0x11')],function(_0x2b7ef3){return _0x2b7ef3['accountcode']==_0x5e2de1||_0x2b7ef3['name']==_0x5e2de1;});if(_['isNil'](_0x190177)){var _0x24960a=_[_0x98db('0x23')](this['telephones'],function(_0x2c2e27){return _0x2c2e27[_0x98db('0x24')]==_0x5e2de1||_0x2c2e27['name']==_0x5e2de1;});if(_0x24960a){_0x190177=_[_0x98db('0x23')](this[_0x98db('0x11')],function(_0x135b7e){return _0x135b7e[_0x98db('0x25')]==util[_0x98db('0x26')]('SIP/%s',_0x24960a[_0x98db('0x27')]);});}}return _0x190177;};Report[_0x98db('0x13')]['voiceQueueReport']=function(_0x123147){for(var _0x529b6f=0x0;_0x529b6f<_0x123147['length'];_0x529b6f+=0x1){var _0x2791fa=this[_0x98db('0x22')](_0x123147[_0x529b6f]['connectedlinenum']);if(_0x2791fa){_0x123147[_0x529b6f][_0x98db('0x24')]=_0x2791fa[_0x98db('0x24')];_0x123147[_0x529b6f][_0x98db('0x28')]=!![];_0x123147[_0x529b6f]['lastAssignedTo']=_0x2791fa[_0x98db('0x27')];_0x123147[_0x529b6f][_0x98db('0x25')]=_[_0x98db('0x29')](_0x2791fa[_0x98db('0x25')])?util[_0x98db('0x26')](_0x98db('0x2a'),_0x2791fa[_0x98db('0x27')]):_0x2791fa['interface'];if(_0x123147[_0x529b6f][_0x98db('0x2b')]){_0x123147[_0x529b6f][_0x98db('0x2c')]=moment()[_0x98db('0x26')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x123147[_0x529b6f][_0x98db('0x2d')]){_0x123147[_0x529b6f]['queuecallerexitAt']=moment()[_0x98db('0x26')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x98db('0x18')](_0x123147[_0x529b6f]);}RpcVoiceQueueReport[_0x98db('0x2e')](_0x123147[_0x529b6f]);}};function extractCalleridNumber(_0x23fc31){var _0x5804eb=_0x23fc31[_0x98db('0x2f')](/<(.*?)>/);return _0x5804eb?_0x5804eb[0x1]:_0x23fc31;}Report[_0x98db('0x13')][_0x98db('0x1b')]=function(_0x27f5ca){_0x27f5ca[_0x98db('0x30')]=_0x27f5ca[_0x98db('0x30')]||_0x27f5ca['exten'];if(_0x27f5ca[_0x98db('0x31')]==_0x98db('0x32')){_0x27f5ca['lastapplication']=_0x98db('0x33');_0x27f5ca[_0x98db('0x34')]=_0x27f5ca[_0x98db('0x33')];if(_0x27f5ca[_0x98db('0x35')]=='from-voip-provider'){_0x27f5ca[_0x98db('0x24')]='';_0x27f5ca[_0x98db('0x30')]=extractCalleridNumber(_0x27f5ca['callerid']);}else if(_0x27f5ca[_0x98db('0x35')]==_0x98db('0x36')){if(_0x27f5ca['destination']==_0x98db('0x37')){_0x27f5ca[_0x98db('0x30')]=extractCalleridNumber(_0x27f5ca[_0x98db('0x38')]);_0x27f5ca['calleridnum']=_0x27f5ca['originatecalleridnum'];_0x27f5ca[_0x98db('0x39')]=[_0x27f5ca[_0x98db('0x3a')],_0x27f5ca[_0x98db('0x3a')]=_0x27f5ca[_0x98db('0x39')]][0x0];_0x27f5ca[_0x98db('0x3b')]=_0x27f5ca[_0x98db('0x38')];}else{_0x27f5ca[_0x98db('0x30')]=_0x27f5ca[_0x98db('0x3c')];_0x27f5ca[_0x98db('0x3c')]=_0x27f5ca[_0x98db('0x3d')];if(_0x27f5ca[_0x98db('0x3e')]==_0x98db('0x3f')){_0x27f5ca[_0x98db('0x24')]=_0x27f5ca[_0x98db('0x40')];}else{_0x27f5ca[_0x98db('0x24')]='';}}}}else{_0x27f5ca[_0x98db('0x3b')]=util['format'](_0x98db('0x41'),_0x27f5ca[_0x98db('0x42')],_0x27f5ca[_0x98db('0x3c')]);}RpcVoiceCallReport[_0x98db('0x2e')](_0x27f5ca);if(_0x27f5ca[_0x98db('0x43')]){for(var _0x32f976=0x0;_0x32f976<_0x27f5ca[_0x98db('0x44')]['length'];_0x32f976+=0x1){_0x27f5ca[_0x98db('0x45')]=_0x27f5ca[_0x98db('0x44')][_0x32f976][_0x98db('0x46')];_0x27f5ca['createdAt']=_0x27f5ca[_0x98db('0x44')][_0x32f976][_0x98db('0x47')];if(_0x27f5ca['exten']==_0x98db('0x37')){_0x27f5ca['calleridnum']=_0x27f5ca['connectedlinenum'];_0x27f5ca[_0x98db('0x42')]=_0x27f5ca[_0x98db('0x48')];_0x27f5ca[_0x98db('0x40')]=_0x27f5ca[_0x98db('0x24')];_0x27f5ca[_0x98db('0x48')]=_0x27f5ca[_0x98db('0x49')];_0x27f5ca['exten']=_0x27f5ca[_0x98db('0x3d')];}else if(_0x27f5ca['exten']==_0x98db('0x4a')){_0x27f5ca[_0x98db('0x3c')]=_0x27f5ca['destination'];_0x27f5ca[_0x98db('0x4b')]=_0x27f5ca[_0x98db('0x3d')];}RpcVoiceRecording[_0x98db('0x2e')](_0x27f5ca);}}};Report[_0x98db('0x13')][_0x98db('0x1d')]=function(_0x3ee837){if(_[_0x98db('0x4c')](_0x3ee837)){_0x3ee837[_0x98db('0x4d')](function(_0x335494){RpcVoiceAgentReport[_0x98db('0x2e')](_0x335494);});}else{RpcVoiceAgentReport[_0x98db('0x2e')](_0x3ee837);}};Report[_0x98db('0x13')][_0x98db('0x1f')]=function(_0x74e98){RpcVoiceDialReport['create'](_0x74e98);var _0x277cbd=undefined;var _0x27f6dd=_0x74e98[_0x98db('0x3a')];if(_[_0x98db('0x4e')](_0x27f6dd,_0x98db('0x4f'))){var _0x5cc744=_0x27f6dd['substring'](_0x27f6dd['indexOf']('/')+0x1,_0x27f6dd[_0x98db('0x50')]('@'));_0x277cbd=_[_0x98db('0x23')](this['agents'],function(_0x2b5a28){return _0x2b5a28['mobile']==_0x5cc744||_0x2b5a28[_0x98db('0x51')]==_0x5cc744||_0x2b5a28['accountcode']==_0x5cc744;});}else{var _0x5cc744=_0x27f6dd[_0x98db('0x52')](_0x27f6dd[_0x98db('0x50')]('/')+0x1,_0x27f6dd[_0x98db('0x53')]('-'));_0x277cbd=this[_0x98db('0x22')](_0x5cc744);}if(_0x277cbd){_0x74e98[_0x98db('0x25')]=_[_0x98db('0x29')](_0x277cbd[_0x98db('0x25')])?util[_0x98db('0x26')]('SIP/%s',_0x277cbd[_0x98db('0x27')]):_0x277cbd[_0x98db('0x25')];_0x74e98['membername']=_0x277cbd[_0x98db('0x27')];_0x74e98[_0x98db('0x24')]=_0x277cbd[_0x98db('0x24')];RpcMemberReport[_0x98db('0x1f')](_0x74e98);}};Report[_0x98db('0x13')][_0x98db('0x54')]=function(_0x9464d3){RpcVoiceTransferReport[_0x98db('0x54')](_0x9464d3);};Report['prototype'][_0x98db('0x21')]=function(_0x101f82){RpcVoiceTransferReport[_0x98db('0x21')](_0x101f82);};module[_0x98db('0x55')]=Report;