80b9181a84f34770b0d9c4cc3a24acd31e76dbb8
[motion2.git] / server / services / xdr / calls.controller.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 _0xc0a4=['connectedlinenum','accountcode','UserId','request','CreateVoiceCallReport','newchannel','debug','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','now','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','context','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','duration','endtime','starttime','billableseconds','diffTime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','destinationchannel','origtransfererchannel','userfield','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastapplication','Queue','lastdata','xmd-contactid','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','newexten','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','execif','gotoif','lodash','util','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','BUSY','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','calleridnum'];(function(_0xfeeb29,_0x3bd776){var _0x49538c=function(_0x5f07dc){while(--_0x5f07dc){_0xfeeb29['push'](_0xfeeb29['shift']());}};_0x49538c(++_0x3bd776);}(_0xc0a4,0xc6));var _0x4c0a=function(_0x11dda3,_0x482da8){_0x11dda3=_0x11dda3-0x0;var _0x16d273=_0xc0a4[_0x11dda3];return _0x16d273;};'use strict';var _=require(_0x4c0a('0x0'));var util=require(_0x4c0a('0x1'));var utils=require('./utils');var transfers=require(_0x4c0a('0x2'));var dispositions=['NO\x20ANSWER',_0x4c0a('0x3'),_0x4c0a('0x3'),_0x4c0a('0x4'),_0x4c0a('0x4'),_0x4c0a('0x4'),_0x4c0a('0x5'),_0x4c0a('0x6'),_0x4c0a('0x3'),_0x4c0a('0x3'),_0x4c0a('0x3')];var channels={};function writeDB(_0x53e005){var _0x33fc7d;if(transfers[_0x4c0a('0x7')][_0x53e005['uniqueid']]){_0x33fc7d=_0x53e005[_0x4c0a('0x8')];_0x53e005[_0x4c0a('0x8')]=transfers['blinds'][_0x53e005[_0x4c0a('0x8')]]['transfereeuniqueid'];}utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')](_0x4c0a('0xb'),_0x53e005[_0x4c0a('0x8')],_0x53e005[_0x4c0a('0xc')],_0x53e005[_0x4c0a('0xd')],_0x53e005[_0x4c0a('0xe')],_0x53e005['interface'],_0x53e005[_0x4c0a('0xf')],_0x53e005[_0x4c0a('0x10')],_0x53e005['lastevent']));if(_0x53e005[_0x4c0a('0x11')]){utils['getUserByInternal'](_0x53e005['accountcode'])['then'](function(_0x38e904){if(_0x38e904){_0x53e005[_0x4c0a('0x12')]=_0x38e904['id'];}utils[_0x4c0a('0x13')](_0x4c0a('0x14'),_0x53e005);});}else{utils['request'](_0x4c0a('0x14'),_0x53e005);}if(channels[_0x53e005[_0x4c0a('0x8')]]){delete channels[_0x53e005['uniqueid']];}else if(_0x33fc7d&&channels[_0x33fc7d]){if(!transfers[_0x4c0a('0x7')][_0x33fc7d]['recording'])delete transfers[_0x4c0a('0x7')][_0x33fc7d];delete channels[_0x33fc7d];}}exports[_0x4c0a('0x15')]=function(_0x5d3ea0){try{utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')]('[%s][calls][newchannel]',_0x5d3ea0[_0x4c0a('0x8')]),_0x5d3ea0);if(_0x5d3ea0[_0x4c0a('0x8')]==_0x5d3ea0[_0x4c0a('0x17')]&&_0x5d3ea0['channel']!=_0x4c0a('0x18')){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')](_0x4c0a('0x19'),_0x5d3ea0[_0x4c0a('0x8')],_0x5d3ea0['context'],_0x5d3ea0[_0x4c0a('0x1a')]));channels[_0x5d3ea0[_0x4c0a('0x8')]]={'uniqueid':_0x5d3ea0['uniqueid'],'accountcode':_0x5d3ea0[_0x4c0a('0x11')],'source':_0x5d3ea0['calleridnum'],'destination':_0x5d3ea0[_0x4c0a('0x1a')],'destinationcontext':_0x5d3ea0['context'],'channel':_0x5d3ea0[_0x4c0a('0xc')],'starttime':utils[_0x4c0a('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x4c0a('0x4'),'amaflags':'DOCUMENTATION'};}}catch(_0x238725){utils[_0x4c0a('0x1c')](util[_0x4c0a('0xa')](_0x4c0a('0x1d'),_0x5d3ea0[_0x4c0a('0x8')]),_0x238725);}};exports[_0x4c0a('0x1e')]=function(_0x22e7dd){try{utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x1f'),_0x22e7dd[_0x4c0a('0x8')]),_0x22e7dd);if(!_[_0x4c0a('0x20')](channels[_0x22e7dd[_0x4c0a('0x8')]])&&_0x22e7dd['channelstate']==0x6){utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x21'),_0x22e7dd[_0x4c0a('0x8')],_0x22e7dd[_0x4c0a('0x22')],_0x22e7dd[_0x4c0a('0xc')]));if(_[_0x4c0a('0x20')](channels[_0x22e7dd[_0x4c0a('0x8')]][_0x4c0a('0x23')])){channels[_0x22e7dd['uniqueid']][_0x4c0a('0x23')]=utils[_0x4c0a('0x1b')]();}}else if(!_[_0x4c0a('0x20')](channels[_0x22e7dd['linkedid']])&&_0x22e7dd['channelstate']==0x6&&_0x22e7dd['context']!=_0x4c0a('0x24')){utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x25'),_0x22e7dd[_0x4c0a('0x8')],_0x22e7dd[_0x4c0a('0x17')],_0x22e7dd[_0x4c0a('0x22')],_0x22e7dd[_0x4c0a('0xc')]));channels[_0x22e7dd['linkedid']][_0x4c0a('0x11')]=_0x22e7dd[_0x4c0a('0x11')];channels[_0x22e7dd[_0x4c0a('0x17')]]['destinationchannel']=_0x22e7dd[_0x4c0a('0xc')];if(_['isNil'](channels[_0x22e7dd[_0x4c0a('0x17')]]['answertime'])){channels[_0x22e7dd[_0x4c0a('0x17')]][_0x4c0a('0x26')]=utils[_0x4c0a('0x1b')]();}channels[_0x22e7dd['linkedid']][_0x4c0a('0x27')]=dispositions[_[_0x4c0a('0x28')](_0x22e7dd['channelstate'])]||_0x4c0a('0x5');}}catch(_0x5a3f4a){utils['error'](util[_0x4c0a('0xa')]('[%s][calls][newstate]',_0x22e7dd[_0x4c0a('0x8')]),_0x5a3f4a);}};exports[_0x4c0a('0x29')]=function(_0x28b886){try{if(!_[_0x4c0a('0x20')](channels[_0x28b886[_0x4c0a('0x8')]])){utils[_0x4c0a('0x16')](util['format'](_0x4c0a('0x2a'),_0x28b886['uniqueid']),_0x28b886);if(_[_0x4c0a('0x20')](channels[_0x28b886['uniqueid']]['callerid'])){channels[_0x28b886[_0x4c0a('0x8')]][_0x4c0a('0x2b')]=_0x28b886[_0x4c0a('0x2c')]+'\x20<'+_0x28b886[_0x4c0a('0xf')]+'>';}utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')](_0x4c0a('0x2d'),_0x28b886[_0x4c0a('0x8')],channels[_0x28b886[_0x4c0a('0x8')]][_0x4c0a('0x2b')],_0x28b886[_0x4c0a('0x2e')]));channels[_0x28b886[_0x4c0a('0x8')]]['endtime']=utils[_0x4c0a('0x1b')]();channels[_0x28b886['uniqueid']][_0x4c0a('0x2f')]=utils['diffTime'](channels[_0x28b886[_0x4c0a('0x8')]][_0x4c0a('0x30')],channels[_0x28b886[_0x4c0a('0x8')]][_0x4c0a('0x31')]);channels[_0x28b886['uniqueid']][_0x4c0a('0x32')]=channels[_0x28b886['uniqueid']]['answertime']?utils[_0x4c0a('0x33')](channels[_0x28b886[_0x4c0a('0x8')]]['endtime'],channels[_0x28b886[_0x4c0a('0x8')]][_0x4c0a('0x26')]):0x0;writeDB(channels[_0x28b886['uniqueid']]);}}catch(_0x4cbd76){utils['error'](util[_0x4c0a('0xa')](_0x4c0a('0x2a'),_0x28b886[_0x4c0a('0x8')]),_0x4cbd76);}};exports[_0x4c0a('0x34')]=function(_0xd4764e){try{if(!_[_0x4c0a('0x20')](channels[_0xd4764e[_0x4c0a('0x35')]])){utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x36'),_0xd4764e[_0x4c0a('0x37')]),_0xd4764e);if(channels[_0xd4764e[_0x4c0a('0x35')]][_0x4c0a('0xc')]==_0xd4764e[_0x4c0a('0x38')]){utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x39'),_0xd4764e[_0x4c0a('0x37')],_0xd4764e['localtwolinkedid'],_0xd4764e[_0x4c0a('0x3a')]));channels[_0xd4764e[_0x4c0a('0x35')]][_0x4c0a('0x3b')]=_0xd4764e[_0x4c0a('0x3a')];channels[_0xd4764e[_0x4c0a('0x35')]]['userfield']='_attended';}else if(channels[_0xd4764e[_0x4c0a('0x35')]][_0x4c0a('0xc')]=_0xd4764e['transfertargetchannel']){utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x39'),_0xd4764e[_0x4c0a('0x37')],_0xd4764e[_0x4c0a('0x35')],_0xd4764e['origtransfererchannel']));channels[_0xd4764e[_0x4c0a('0x35')]][_0x4c0a('0x3b')]=_0xd4764e[_0x4c0a('0x3c')];channels[_0xd4764e['localtwolinkedid']][_0x4c0a('0x3d')]='_attended';}}}catch(_0x556312){utils['error'](util[_0x4c0a('0xa')](_0x4c0a('0x36'),_0xd4764e[_0x4c0a('0x37')]),_0x556312);}};exports['musiconholdstart']=function(_0x412c75){try{if(!_[_0x4c0a('0x20')](channels[_0x412c75[_0x4c0a('0x8')]])){utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x3e'),_0x412c75['uniqueid']),_0x412c75);channels[_0x412c75[_0x4c0a('0x8')]][_0x4c0a('0x3f')]=utils[_0x4c0a('0x1b')]();utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x40'),_0x412c75['uniqueid'],channels[_0x412c75[_0x4c0a('0x8')]][_0x4c0a('0x3f')]));}}catch(_0x1d0bcb){utils[_0x4c0a('0x1c')](util['format'](_0x4c0a('0x3e'),_0x412c75[_0x4c0a('0x8')]),_0x1d0bcb);}};exports[_0x4c0a('0x41')]=function(_0x2d4494){try{if(!_[_0x4c0a('0x20')](channels[_0x2d4494[_0x4c0a('0x8')]])){utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x42'),_0x2d4494[_0x4c0a('0x8')]),_0x2d4494);if(!_['isNil'](channels[_0x2d4494[_0x4c0a('0x8')]][_0x4c0a('0x3f')])){channels[_0x2d4494[_0x4c0a('0x8')]][_0x4c0a('0x43')]+=utils[_0x4c0a('0x33')](utils['now'](),channels[_0x2d4494['uniqueid']][_0x4c0a('0x3f')]);utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')](_0x4c0a('0x44'),_0x2d4494[_0x4c0a('0x8')],channels[_0x2d4494[_0x4c0a('0x8')]][_0x4c0a('0x43')]));delete channels[_0x2d4494[_0x4c0a('0x8')]]['musiconholdstartAt'];}}}catch(_0x1744fe){utils[_0x4c0a('0x1c')](util['format']('[%s][calls][musiconholdstop]',_0x2d4494[_0x4c0a('0x8')]),_0x1744fe);}};exports[_0x4c0a('0x45')]=function(_0x435dff){try{if(!_[_0x4c0a('0x20')](channels[_0x435dff[_0x4c0a('0x8')]])){utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x46'),_0x435dff[_0x4c0a('0x8')]),_0x435dff);if(!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x48')])){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x435dff[_0x4c0a('0x8')],_0x435dff['value']));channels[_0x435dff['uniqueid']]['source']=_0x435dff[_0x4c0a('0x49')];}if(!_[_0x4c0a('0x20')](_0x435dff['variable']['xmd-phone'])){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')](_0x4c0a('0x4a'),_0x435dff['uniqueid'],_0x435dff[_0x4c0a('0x49')]));channels[_0x435dff[_0x4c0a('0x8')]][_0x4c0a('0x4b')]=_0x435dff[_0x4c0a('0x49')];channels[_0x435dff[_0x4c0a('0x8')]][_0x4c0a('0x2b')]='\x22'+_0x435dff[_0x4c0a('0x49')]+_0x4c0a('0x4c')+_0x435dff[_0x4c0a('0x49')]+'>';}if(!_[_0x4c0a('0x20')](_0x435dff['variable'][_0x4c0a('0x4d')])||!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x4e')])){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x435dff[_0x4c0a('0x8')],!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')]['xmd-callerid-preview'])?_0x4c0a('0x4d'):'xmd-callerid',_0x435dff['value']));channels[_0x435dff['uniqueid']]['callerid']=_0x435dff['value'];}if(!_[_0x4c0a('0x20')](_0x435dff['variable'][_0x4c0a('0x4f')])||!_['isNil'](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x50')])){utils['info'](util[_0x4c0a('0xa')](_0x4c0a('0x51'),_0x435dff[_0x4c0a('0x8')],!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')]['xmd-queue'])?_0x4c0a('0x4f'):_0x4c0a('0x50'),_0x435dff[_0x4c0a('0x49')]));channels[_0x435dff[_0x4c0a('0x8')]][_0x4c0a('0x52')]=_0x4c0a('0x53');channels[_0x435dff['uniqueid']][_0x4c0a('0x54')]=_0x435dff[_0x4c0a('0x49')];channels[_0x435dff['uniqueid']][_0x4c0a('0xd')]=!![];}if(!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x55')])){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x435dff[_0x4c0a('0x8')],_0x435dff[_0x4c0a('0x49')]));channels[_0x435dff[_0x4c0a('0x8')]]['ContactId']=_0x435dff[_0x4c0a('0x49')];}if(!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x56')])){utils['info'](util['format'](_0x4c0a('0x57'),_0x435dff[_0x4c0a('0x8')],_0x435dff['value']));channels[_0x435dff[_0x4c0a('0x8')]][_0x4c0a('0x58')]=_0x435dff[_0x4c0a('0x49')];}if(!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x59')])){utils['info'](util[_0x4c0a('0xa')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x435dff[_0x4c0a('0x8')],_0x435dff[_0x4c0a('0x49')]));channels[_0x435dff[_0x4c0a('0x8')]][_0x4c0a('0x5a')]=_0x435dff['value'];}if(!_[_0x4c0a('0x20')](_0x435dff[_0x4c0a('0x47')][_0x4c0a('0x5b')])){utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x435dff[_0x4c0a('0x8')],_0x435dff[_0x4c0a('0x49')]));channels[_0x435dff['uniqueid']]['sipcallid']=_0x435dff[_0x4c0a('0x49')];}}}catch(_0xecf634){utils[_0x4c0a('0x1c')](util[_0x4c0a('0xa')](_0x4c0a('0x46'),_0x435dff[_0x4c0a('0x8')]),_0xecf634);}};exports[_0x4c0a('0x5c')]=function(_0x54b0da){try{if(!_['isNil'](channels[_0x54b0da[_0x4c0a('0x8')]])){utils[_0x4c0a('0x16')](util[_0x4c0a('0xa')](_0x4c0a('0x5d'),_0x54b0da[_0x4c0a('0x8')]),_0x54b0da);utils[_0x4c0a('0x9')](util[_0x4c0a('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x54b0da[_0x4c0a('0x8')],_0x54b0da[_0x4c0a('0x5e')],_0x54b0da[_0x4c0a('0x5f')]));if(_0x54b0da[_0x4c0a('0x5e')][_0x4c0a('0x60')]()==_0x4c0a('0x61')&&_[_0x4c0a('0x62')](_0x54b0da[_0x4c0a('0x5f')][_0x4c0a('0x60')](),_0x4c0a('0x63'))){var _0x3bebc6=_0x54b0da[_0x4c0a('0x5f')][_0x4c0a('0x64')]('=');var _0x51a447=_0x3bebc6[0x0][_0x4c0a('0x65')](_0x3bebc6[0x0][_0x4c0a('0x66')]('(')+0x1,_0x3bebc6[0x0][_0x4c0a('0x66')](')'));var _0x1874a3=_0x3bebc6[0x1];channels[_0x54b0da[_0x4c0a('0x8')]][_0x51a447]=_0x1874a3;}if(!_[_0x4c0a('0x67')]([_0x4c0a('0x29'),_0x4c0a('0x68'),_0x4c0a('0x69'),_0x4c0a('0x61'),_0x4c0a('0x6a')],_0x54b0da['application'][_0x4c0a('0x60')]())){channels[_0x54b0da[_0x4c0a('0x8')]][_0x4c0a('0x52')]=_0x54b0da[_0x4c0a('0x5e')];channels[_0x54b0da['uniqueid']][_0x4c0a('0x54')]=_0x54b0da['appdata'];}}}catch(_0x2c3f75){utils['error'](util[_0x4c0a('0xa')](_0x4c0a('0x5d'),_0x54b0da['uniqueid']),_0x2c3f75);}};