7bcd9831fc2613c473692ce8326f779cb9587d41
[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 _0xad72=['split','calleridnum','outbound','internal','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','destination','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','callerid','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','getCallType','UserId','membername','monitor','monitors','monitorFilename','createdAt','connectedlinename','exten','xcally-motion-dialer','create','startsWith','Local','substring','indexOf','mobile','findAgent','transfererlinkedid','exports','util','../../../config/environment','../ami','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','./voiceQueueReport','realtime','agents','telephones','sync','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','name','isNil','find','accountcode','interface','format','SIP/%s','prototype','length','assigned','lastAssignedTo','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','match','getAgentByInternal','keys','channel'];(function(_0x16dbfd,_0x2f9431){var _0x382254=function(_0x19dade){while(--_0x19dade){_0x16dbfd['push'](_0x16dbfd['shift']());}};_0x382254(++_0x2f9431);}(_0xad72,0x132));var _0x2ad7=function(_0xfa3290,_0x5779d){_0xfa3290=_0xfa3290-0x0;var _0x4b9aa3=_0xad72[_0xfa3290];return _0x4b9aa3;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x2ad7('0x0'));var config=require(_0x2ad7('0x1'));var ami=require(_0x2ad7('0x2'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x2ad7('0x3'));var RpcMemberReport=require(_0x2ad7('0x4'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0x2ad7('0x5'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x2ad7('0x6'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x184986){this[_0x2ad7('0x7')]=_0x184986;this[_0x2ad7('0x8')]=_0x184986[_0x2ad7('0x8')];this['telephones']=_0x184986[_0x2ad7('0x9')];}Report['prototype'][_0x2ad7('0xa')]=function(_0x197e5a){var _0x36896e=new VoiceQueueReport(this[_0x2ad7('0x7')]);var _0x5556c7=new VoiceAgentReport(this[_0x2ad7('0x7')]);var _0x53fd9e=new VoiceDialReport(this[_0x2ad7('0x7')]);var _0x58e163=new VoiceCallReport(this[_0x2ad7('0x7')]);var _0x1c4135=new UserReport(this['realtime']);if(config[_0x2ad7('0xb')]&&config[_0x2ad7('0xb')][_0x2ad7('0xc')]){ami['on']('custom:voiceQueueReport',this[_0x2ad7('0xd')][_0x2ad7('0xe')](this));ami['on'](_0x2ad7('0xf'),this['voiceCallReport'][_0x2ad7('0xe')](this));ami['on'](_0x2ad7('0x10'),this[_0x2ad7('0x11')][_0x2ad7('0xe')](this));ami['on'](_0x2ad7('0x12'),this[_0x2ad7('0x13')][_0x2ad7('0xe')](this));ami['on'](_0x2ad7('0x14'),this[_0x2ad7('0x15')]['bind'](this));ami['on'](_0x2ad7('0x16'),this[_0x2ad7('0x17')][_0x2ad7('0xe')](this));}};Report['prototype']['findAgent']=function(_0x742d45){var _0x7d3ea0;_0x7d3ea0=_['find'](this[_0x2ad7('0x8')],function(_0x3c888d){return _0x3c888d['accountcode']==_0x742d45||_0x3c888d[_0x2ad7('0x18')]==_0x742d45;});if(_[_0x2ad7('0x19')](_0x7d3ea0)){var _0x45910f=_[_0x2ad7('0x1a')](this['telephones'],function(_0x3239b0){return _0x3239b0[_0x2ad7('0x1b')]==_0x742d45||_0x3239b0[_0x2ad7('0x18')]==_0x742d45;});if(_0x45910f){_0x7d3ea0=_[_0x2ad7('0x1a')](this[_0x2ad7('0x8')],function(_0xac0263){return _0xac0263[_0x2ad7('0x1c')]==util[_0x2ad7('0x1d')](_0x2ad7('0x1e'),_0x45910f['name']);});}}return _0x7d3ea0;};Report[_0x2ad7('0x1f')][_0x2ad7('0xd')]=function(_0x1ecb68){for(var _0x25c17b=0x0;_0x25c17b<_0x1ecb68[_0x2ad7('0x20')];_0x25c17b+=0x1){var _0x4186af=this['findAgent'](_0x1ecb68[_0x25c17b]['connectedlinenum']);if(_0x4186af){_0x1ecb68[_0x25c17b][_0x2ad7('0x1b')]=_0x4186af[_0x2ad7('0x1b')];_0x1ecb68[_0x25c17b][_0x2ad7('0x21')]=!![];_0x1ecb68[_0x25c17b][_0x2ad7('0x22')]=_0x4186af['name'];_0x1ecb68[_0x25c17b]['interface']=_[_0x2ad7('0x19')](_0x4186af[_0x2ad7('0x1c')])?util[_0x2ad7('0x1d')]('SIP/%s',_0x4186af[_0x2ad7('0x18')]):_0x4186af[_0x2ad7('0x1c')];if(_0x1ecb68[_0x25c17b]['queuecallercomplete']){_0x1ecb68[_0x25c17b][_0x2ad7('0x23')]=moment()[_0x2ad7('0x1d')](_0x2ad7('0x24'));}if(_0x1ecb68[_0x25c17b][_0x2ad7('0x25')]){_0x1ecb68[_0x25c17b]['queuecallerexitAt']=moment()['format'](_0x2ad7('0x24'));}RpcMemberReport[_0x2ad7('0xd')](_0x1ecb68[_0x25c17b]);}RpcVoiceQueueReport['create'](_0x1ecb68[_0x25c17b]);}};function extractCalleridNumber(_0x51c0f4){var _0x569d37=_0x51c0f4[_0x2ad7('0x26')](/<(.*?)>/);return _0x569d37?_0x569d37[0x1]:_0x51c0f4;}Report['prototype'][_0x2ad7('0x27')]=function(_0x5061ab){for(var _0x3cc4a5=0x0;_0x3cc4a5<Object[_0x2ad7('0x28')](this[_0x2ad7('0x8')])[_0x2ad7('0x20')];_0x3cc4a5++){var _0x34bba9=Object['keys'](this['agents'])[_0x3cc4a5];var _0x2137a2=this['agents'][_0x34bba9];if(_0x2137a2['accountcode']===Number(_0x5061ab))return _0x2137a2;}return null;};Report[_0x2ad7('0x1f')]['getCallType']=function(_0x6c37fd){var _0x3bf753=_0x6c37fd[_0x2ad7('0x29')][_0x2ad7('0x2a')]('-')[0x0];var _0x12de99=this['agents'][_0x3bf753];if(!_0x12de99)_0x12de99=this['getAgentByInternal'](_0x6c37fd[_0x2ad7('0x2b')]);return!_0x12de99?_0x2ad7('0x2c'):_0x2ad7('0x2d');};Report[_0x2ad7('0x1f')]['voiceCallReport']=function(_0x5d9b28){_0x5d9b28['destination']=_0x5d9b28['destination']||_0x5d9b28['exten'];if(_0x5d9b28[_0x2ad7('0x2e')]==_0x2ad7('0x2f')){_0x5d9b28[_0x2ad7('0x30')]=_0x2ad7('0x31');_0x5d9b28[_0x2ad7('0x32')]=_0x5d9b28[_0x2ad7('0x31')];if(_0x5d9b28[_0x2ad7('0x33')]==_0x2ad7('0x34')){_0x5d9b28[_0x2ad7('0x1b')]='';_0x5d9b28[_0x2ad7('0x35')]=extractCalleridNumber(_0x5d9b28['callerid']);}else if(_0x5d9b28[_0x2ad7('0x33')]==_0x2ad7('0x36')){if(_0x5d9b28[_0x2ad7('0x35')]==_0x2ad7('0x37')){_0x5d9b28[_0x2ad7('0x35')]=extractCalleridNumber(_0x5d9b28[_0x2ad7('0x38')]);_0x5d9b28[_0x2ad7('0x2b')]=_0x5d9b28[_0x2ad7('0x39')];_0x5d9b28[_0x2ad7('0x3a')]=[_0x5d9b28[_0x2ad7('0x29')],_0x5d9b28[_0x2ad7('0x29')]=_0x5d9b28['destinationchannel']][0x0];_0x5d9b28[_0x2ad7('0x3b')]=_0x5d9b28['calleridpreview'];}else{_0x5d9b28[_0x2ad7('0x35')]=_0x5d9b28['calleridnum'];_0x5d9b28[_0x2ad7('0x2b')]=_0x5d9b28[_0x2ad7('0x39')];if(_0x5d9b28['disposition']==_0x2ad7('0x3c')){_0x5d9b28[_0x2ad7('0x1b')]=_0x5d9b28[_0x2ad7('0x3d')];}else{_0x5d9b28[_0x2ad7('0x1b')]='';}}}}else{_0x5d9b28[_0x2ad7('0x3b')]=util[_0x2ad7('0x1d')](_0x2ad7('0x3e'),_0x5d9b28[_0x2ad7('0x3f')],_0x5d9b28[_0x2ad7('0x2b')]);}if(RpcVoiceTransferReport[_0x2ad7('0x40')][_0x5d9b28[_0x2ad7('0x41')]]){var _0xc7437d=RpcVoiceTransferReport[_0x2ad7('0x40')][_0x5d9b28[_0x2ad7('0x41')]];_0xc7437d[_0x2ad7('0x42')]=_0x5d9b28[_0x2ad7('0x43')];RpcVoiceTransferReport[_0x2ad7('0x15')](_0xc7437d);delete RpcVoiceTransferReport['transfers'][_0x5d9b28[_0x2ad7('0x41')]];}if(_[_0x2ad7('0x19')](_0x5d9b28[_0x2ad7('0x2e')])){_0x5d9b28[_0x2ad7('0x2e')]=this[_0x2ad7('0x44')](_0x5d9b28);}if(_[_0x2ad7('0x19')](_0x5d9b28[_0x2ad7('0x45')])){var _0x271620=_0x5d9b28[_0x2ad7('0x29')][_0x2ad7('0x2a')]('-')[0x0];var _0x45c803=this[_0x2ad7('0x8')][_0x271620];if(!_0x45c803)_0x45c803=this[_0x2ad7('0x27')](_0x5d9b28[_0x2ad7('0x1b')]);if(_0x45c803){_0x5d9b28[_0x2ad7('0x45')]=_0x45c803['id'];_0x5d9b28[_0x2ad7('0x46')]=_0x45c803[_0x2ad7('0x18')];}}RpcVoiceCallReport['create'](_0x5d9b28);if(_0x5d9b28[_0x2ad7('0x47')]){for(var _0x2d2b2a=0x0;_0x2d2b2a<_0x5d9b28[_0x2ad7('0x48')]['length'];_0x2d2b2a+=0x1){_0x5d9b28[_0x2ad7('0x49')]=_0x5d9b28[_0x2ad7('0x48')][_0x2d2b2a]['filename'];_0x5d9b28['createdAt']=_0x5d9b28[_0x2ad7('0x48')][_0x2d2b2a][_0x2ad7('0x4a')];if(_0x5d9b28['exten']==_0x2ad7('0x37')){_0x5d9b28[_0x2ad7('0x2b')]=_0x5d9b28[_0x2ad7('0x3d')];_0x5d9b28['calleridname']=_0x5d9b28[_0x2ad7('0x4b')];_0x5d9b28[_0x2ad7('0x3d')]=_0x5d9b28[_0x2ad7('0x1b')];_0x5d9b28[_0x2ad7('0x4b')]=_0x5d9b28[_0x2ad7('0x46')];_0x5d9b28['exten']=_0x5d9b28[_0x2ad7('0x39')];}else if(_0x5d9b28[_0x2ad7('0x4c')]==_0x2ad7('0x4d')){_0x5d9b28['calleridnum']=_0x5d9b28[_0x2ad7('0x35')];_0x5d9b28[_0x2ad7('0x4c')]=_0x5d9b28[_0x2ad7('0x39')];}RpcVoiceRecording[_0x2ad7('0x4e')](_0x5d9b28);}}};Report[_0x2ad7('0x1f')][_0x2ad7('0x11')]=function(_0x3a16b2){if(_['isArray'](_0x3a16b2)){_0x3a16b2['forEach'](function(_0x56d2e0){RpcVoiceAgentReport[_0x2ad7('0x4e')](_0x56d2e0);});}else{RpcVoiceAgentReport[_0x2ad7('0x4e')](_0x3a16b2);}};Report['prototype'][_0x2ad7('0x13')]=function(_0x130fcc){RpcVoiceDialReport['create'](_0x130fcc);var _0x2935ff;var _0x294443;var _0x1a13f8=_0x130fcc[_0x2ad7('0x29')];if(_[_0x2ad7('0x4f')](_0x1a13f8,_0x2ad7('0x50'))){_0x294443=_0x1a13f8[_0x2ad7('0x51')](_0x1a13f8[_0x2ad7('0x52')]('/')+0x1,_0x1a13f8['indexOf']('@'));_0x2935ff=_[_0x2ad7('0x1a')](this[_0x2ad7('0x8')],function(_0x3aa368){return _0x3aa368[_0x2ad7('0x53')]==_0x294443||_0x3aa368['phone']==_0x294443||_0x3aa368[_0x2ad7('0x1b')]==_0x294443;});}else{_0x294443=_0x1a13f8[_0x2ad7('0x51')](_0x1a13f8[_0x2ad7('0x52')]('/')+0x1,_0x1a13f8['lastIndexOf']('-'));_0x2935ff=this[_0x2ad7('0x54')](_0x294443);}if(_0x2935ff){_0x130fcc[_0x2ad7('0x1c')]=_['isNil'](_0x2935ff[_0x2ad7('0x1c')])?util['format'](_0x2ad7('0x1e'),_0x2935ff['name']):_0x2935ff[_0x2ad7('0x1c')];_0x130fcc['membername']=_0x2935ff[_0x2ad7('0x18')];_0x130fcc[_0x2ad7('0x1b')]=_0x2935ff[_0x2ad7('0x1b')];RpcMemberReport['voiceDialReport'](_0x130fcc);}};Report[_0x2ad7('0x1f')][_0x2ad7('0x15')]=function(_0x4e9831){RpcVoiceTransferReport[_0x2ad7('0x40')][_0x4e9831[_0x2ad7('0x55')]]=_0x4e9831;};Report[_0x2ad7('0x1f')][_0x2ad7('0x17')]=function(_0x3bc9f3){RpcVoiceTransferReport[_0x2ad7('0x17')](_0x3bc9f3);};module[_0x2ad7('0x56')]=Report;