acb6f50edc5ae4d8d85bea41ff7c93b07d40a3a8
[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 _0xce08=['format','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','endtime','duration','diffTime','starttime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','destination','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','application','set','startsWith','appdata','cdr','split','substring','lastIndexOf','execif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','connectedlinenum','lastevent','accountcode','UserId','CreateVoiceCallReport','request','newchannel','debug'];(function(_0x2b7567,_0x412715){var _0x2522dc=function(_0x242d85){while(--_0x242d85){_0x2b7567['push'](_0x2b7567['shift']());}};_0x2522dc(++_0x412715);}(_0xce08,0xb4));var _0x8ce0=function(_0x1e42bd,_0x85d64){_0x1e42bd=_0x1e42bd-0x0;var _0x1c3125=_0xce08[_0x1e42bd];return _0x1c3125;};'use strict';var _=require(_0x8ce0('0x0'));var util=require(_0x8ce0('0x1'));var utils=require(_0x8ce0('0x2'));var transfers=require(_0x8ce0('0x3'));var dispositions=[_0x8ce0('0x4'),_0x8ce0('0x5'),_0x8ce0('0x5'),_0x8ce0('0x4'),'NO\x20ANSWER',_0x8ce0('0x4'),'ANSWERED',_0x8ce0('0x6'),_0x8ce0('0x5'),'FAILED','FAILED'];var channels={};function writeDB(_0x1bbc5b){var _0x66dc09;if(transfers[_0x8ce0('0x7')][_0x1bbc5b[_0x8ce0('0x8')]]){_0x66dc09=_0x1bbc5b[_0x8ce0('0x8')];_0x1bbc5b[_0x8ce0('0x8')]=transfers[_0x8ce0('0x7')][_0x1bbc5b[_0x8ce0('0x8')]][_0x8ce0('0x9')];}utils[_0x8ce0('0xa')](util['format'](_0x8ce0('0xb'),_0x1bbc5b[_0x8ce0('0x8')],_0x1bbc5b[_0x8ce0('0xc')],_0x1bbc5b[_0x8ce0('0xd')],_0x1bbc5b[_0x8ce0('0xe')],_0x1bbc5b[_0x8ce0('0xf')],_0x1bbc5b['calleridnum'],_0x1bbc5b[_0x8ce0('0x10')],_0x1bbc5b[_0x8ce0('0x11')]));if(_0x1bbc5b[_0x8ce0('0x12')]){utils['getUserByInternal'](_0x1bbc5b[_0x8ce0('0x12')])['then'](function(_0x1a467e){if(_0x1a467e){_0x1bbc5b[_0x8ce0('0x13')]=_0x1a467e['id'];}utils['request'](_0x8ce0('0x14'),_0x1bbc5b);});}else{utils[_0x8ce0('0x15')](_0x8ce0('0x14'),_0x1bbc5b);}if(channels[_0x1bbc5b[_0x8ce0('0x8')]]){delete channels[_0x1bbc5b[_0x8ce0('0x8')]];}else if(_0x66dc09&&channels[_0x66dc09]){if(!transfers[_0x8ce0('0x7')][_0x66dc09]['recording'])delete transfers[_0x8ce0('0x7')][_0x66dc09];delete channels[_0x66dc09];}}exports[_0x8ce0('0x16')]=function(_0x1fbde0){try{utils[_0x8ce0('0x17')](util[_0x8ce0('0x18')](_0x8ce0('0x19'),_0x1fbde0[_0x8ce0('0x8')]),_0x1fbde0);if(_0x1fbde0[_0x8ce0('0x8')]==_0x1fbde0[_0x8ce0('0x1a')]&&_0x1fbde0[_0x8ce0('0xc')]!='OutgoingSpoolFailed'){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x1b'),_0x1fbde0[_0x8ce0('0x8')],_0x1fbde0[_0x8ce0('0x1c')],_0x1fbde0[_0x8ce0('0x1d')]));channels[_0x1fbde0[_0x8ce0('0x8')]]={'uniqueid':_0x1fbde0[_0x8ce0('0x8')],'accountcode':_0x1fbde0[_0x8ce0('0x12')],'source':_0x1fbde0[_0x8ce0('0x1e')],'destination':_0x1fbde0['exten'],'destinationcontext':_0x1fbde0[_0x8ce0('0x1c')],'channel':_0x1fbde0[_0x8ce0('0xc')],'starttime':utils[_0x8ce0('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x8ce0('0x4'),'amaflags':_0x8ce0('0x20')};}}catch(_0x521d6a){utils[_0x8ce0('0x21')](util[_0x8ce0('0x18')]('[%s][calls][newchannel]',_0x1fbde0['uniqueid']),_0x521d6a);}};exports[_0x8ce0('0x22')]=function(_0x199f6d){try{utils[_0x8ce0('0x17')](util[_0x8ce0('0x18')](_0x8ce0('0x23'),_0x199f6d[_0x8ce0('0x8')]),_0x199f6d);if(!_[_0x8ce0('0x24')](channels[_0x199f6d[_0x8ce0('0x8')]])&&_0x199f6d[_0x8ce0('0x25')]==0x6){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x199f6d[_0x8ce0('0x8')],_0x199f6d[_0x8ce0('0x1c')],_0x199f6d['channel']));if(_[_0x8ce0('0x24')](channels[_0x199f6d[_0x8ce0('0x8')]]['systemanswertime'])){channels[_0x199f6d[_0x8ce0('0x8')]][_0x8ce0('0x26')]=utils[_0x8ce0('0x1f')]();}}else if(!_['isNil'](channels[_0x199f6d[_0x8ce0('0x1a')]])&&_0x199f6d[_0x8ce0('0x25')]==0x6&&_0x199f6d[_0x8ce0('0x1c')]!='transfer'){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x27'),_0x199f6d[_0x8ce0('0x8')],_0x199f6d[_0x8ce0('0x1a')],_0x199f6d[_0x8ce0('0x1c')],_0x199f6d['channel']));channels[_0x199f6d[_0x8ce0('0x1a')]][_0x8ce0('0x12')]=_0x199f6d[_0x8ce0('0x12')];channels[_0x199f6d['linkedid']][_0x8ce0('0x28')]=_0x199f6d[_0x8ce0('0xc')];if(_[_0x8ce0('0x24')](channels[_0x199f6d[_0x8ce0('0x1a')]][_0x8ce0('0x29')])){channels[_0x199f6d[_0x8ce0('0x1a')]][_0x8ce0('0x29')]=utils[_0x8ce0('0x1f')]();}channels[_0x199f6d[_0x8ce0('0x1a')]][_0x8ce0('0x2a')]=dispositions[_[_0x8ce0('0x2b')](_0x199f6d[_0x8ce0('0x25')])]||'ANSWERED';}}catch(_0x4a61de){utils[_0x8ce0('0x21')](util[_0x8ce0('0x18')](_0x8ce0('0x23'),_0x199f6d['uniqueid']),_0x4a61de);}};exports[_0x8ce0('0x2c')]=function(_0xc5bec8){try{if(!_['isNil'](channels[_0xc5bec8[_0x8ce0('0x8')]])){utils[_0x8ce0('0x17')](util['format'](_0x8ce0('0x2d'),_0xc5bec8[_0x8ce0('0x8')]),_0xc5bec8);if(_[_0x8ce0('0x24')](channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2e')])){channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2e')]=_0xc5bec8['calleridname']+'\x20<'+_0xc5bec8['calleridnum']+'>';}utils['info'](util[_0x8ce0('0x18')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0xc5bec8[_0x8ce0('0x8')],channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2e')],_0xc5bec8['cause-txt']));channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2f')]=utils[_0x8ce0('0x1f')]();channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x30')]=utils[_0x8ce0('0x31')](channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2f')],channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x32')]);channels[_0xc5bec8['uniqueid']]['billableseconds']=channels[_0xc5bec8['uniqueid']][_0x8ce0('0x29')]?utils[_0x8ce0('0x31')](channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x2f')],channels[_0xc5bec8[_0x8ce0('0x8')]][_0x8ce0('0x29')]):0x0;writeDB(channels[_0xc5bec8[_0x8ce0('0x8')]]);}}catch(_0x3c20f7){utils[_0x8ce0('0x21')](util['format'](_0x8ce0('0x2d'),_0xc5bec8[_0x8ce0('0x8')]),_0x3c20f7);}};exports[_0x8ce0('0x33')]=function(_0x710af3){try{if(!_[_0x8ce0('0x24')](channels[_0x710af3[_0x8ce0('0x34')]])){utils[_0x8ce0('0x17')](util[_0x8ce0('0x18')](_0x8ce0('0x35'),_0x710af3[_0x8ce0('0x36')]),_0x710af3);if(channels[_0x710af3[_0x8ce0('0x34')]]['channel']==_0x710af3[_0x8ce0('0x37')]){utils['info'](util['format'](_0x8ce0('0x38'),_0x710af3[_0x8ce0('0x36')],_0x710af3['localtwolinkedid'],_0x710af3[_0x8ce0('0x39')]));channels[_0x710af3[_0x8ce0('0x34')]][_0x8ce0('0x28')]=_0x710af3['secondtransfererchannel'];channels[_0x710af3['localtwolinkedid']]['userfield']=_0x8ce0('0x3a');}else if(channels[_0x710af3[_0x8ce0('0x34')]][_0x8ce0('0xc')]=_0x710af3[_0x8ce0('0x3b')]){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x38'),_0x710af3[_0x8ce0('0x36')],_0x710af3[_0x8ce0('0x34')],_0x710af3[_0x8ce0('0x3c')]));channels[_0x710af3[_0x8ce0('0x34')]][_0x8ce0('0x28')]=_0x710af3[_0x8ce0('0x3c')];channels[_0x710af3[_0x8ce0('0x34')]]['userfield']=_0x8ce0('0x3a');}}}catch(_0x5330ef){utils[_0x8ce0('0x21')](util['format'](_0x8ce0('0x35'),_0x710af3['origtransfereruniqueid']),_0x5330ef);}};exports[_0x8ce0('0x3d')]=function(_0x1ee6b4){try{if(!_[_0x8ce0('0x24')](channels[_0x1ee6b4[_0x8ce0('0x8')]])){utils[_0x8ce0('0x17')](util[_0x8ce0('0x18')](_0x8ce0('0x3e'),_0x1ee6b4[_0x8ce0('0x8')]),_0x1ee6b4);channels[_0x1ee6b4[_0x8ce0('0x8')]][_0x8ce0('0x3f')]=utils[_0x8ce0('0x1f')]();utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x1ee6b4[_0x8ce0('0x8')],channels[_0x1ee6b4[_0x8ce0('0x8')]][_0x8ce0('0x3f')]));}}catch(_0x58d817){utils[_0x8ce0('0x21')](util[_0x8ce0('0x18')](_0x8ce0('0x3e'),_0x1ee6b4[_0x8ce0('0x8')]),_0x58d817);}};exports[_0x8ce0('0x40')]=function(_0x43a1ad){try{if(!_['isNil'](channels[_0x43a1ad[_0x8ce0('0x8')]])){utils['debug'](util['format'](_0x8ce0('0x41'),_0x43a1ad['uniqueid']),_0x43a1ad);if(!_[_0x8ce0('0x24')](channels[_0x43a1ad[_0x8ce0('0x8')]]['musiconholdstartAt'])){channels[_0x43a1ad[_0x8ce0('0x8')]]['mohtime']+=utils[_0x8ce0('0x31')](utils[_0x8ce0('0x1f')](),channels[_0x43a1ad[_0x8ce0('0x8')]][_0x8ce0('0x3f')]);utils['info'](util[_0x8ce0('0x18')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x43a1ad[_0x8ce0('0x8')],channels[_0x43a1ad[_0x8ce0('0x8')]][_0x8ce0('0x42')]));delete channels[_0x43a1ad[_0x8ce0('0x8')]][_0x8ce0('0x3f')];}}}catch(_0x4096e1){utils[_0x8ce0('0x21')](util[_0x8ce0('0x18')](_0x8ce0('0x41'),_0x43a1ad[_0x8ce0('0x8')]),_0x4096e1);}};exports['varset']=function(_0x451acb){try{if(!_['isNil'](channels[_0x451acb[_0x8ce0('0x8')]])){utils[_0x8ce0('0x17')](util[_0x8ce0('0x18')](_0x8ce0('0x43'),_0x451acb['uniqueid']),_0x451acb);if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x45')])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x46'),_0x451acb[_0x8ce0('0x8')],_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb[_0x8ce0('0x8')]][_0x8ce0('0x48')]=_0x451acb[_0x8ce0('0x47')];}if(!_[_0x8ce0('0x24')](_0x451acb['variable']['xmd-phone'])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x451acb['uniqueid'],_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb[_0x8ce0('0x8')]][_0x8ce0('0x49')]=_0x451acb[_0x8ce0('0x47')];channels[_0x451acb['uniqueid']][_0x8ce0('0x2e')]='\x22'+_0x451acb[_0x8ce0('0x47')]+'\x22\x20<'+_0x451acb['value']+'>';}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')]['xmd-callerid-preview'])||!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x4a')])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x4b'),_0x451acb[_0x8ce0('0x8')],!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')]['xmd-callerid-preview'])?_0x8ce0('0x4c'):_0x8ce0('0x4a'),_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb[_0x8ce0('0x8')]]['callerid']=_0x451acb[_0x8ce0('0x47')];}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x4d')])||!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x4e')])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x4b'),_0x451acb['uniqueid'],!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')]['xmd-queue'])?_0x8ce0('0x4d'):'xmcs-queue',_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb['uniqueid']][_0x8ce0('0x4f')]=_0x8ce0('0x50');channels[_0x451acb['uniqueid']][_0x8ce0('0x51')]=_0x451acb['value'];channels[_0x451acb[_0x8ce0('0x8')]][_0x8ce0('0xd')]=!![];}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x52')])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x53'),_0x451acb['uniqueid'],_0x451acb['value']));channels[_0x451acb[_0x8ce0('0x8')]]['ContactId']=_0x451acb[_0x8ce0('0x47')];}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x54')])){utils['info'](util[_0x8ce0('0x18')](_0x8ce0('0x55'),_0x451acb['uniqueid'],_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb['uniqueid']][_0x8ce0('0x56')]=_0x451acb['value'];}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x57')])){utils[_0x8ce0('0xa')](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x451acb['uniqueid'],_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb['uniqueid']][_0x8ce0('0x58')]=_0x451acb[_0x8ce0('0x47')];}if(!_[_0x8ce0('0x24')](_0x451acb[_0x8ce0('0x44')][_0x8ce0('0x59')])){utils[_0x8ce0('0xa')](util[_0x8ce0('0x18')](_0x8ce0('0x5a'),_0x451acb[_0x8ce0('0x8')],_0x451acb[_0x8ce0('0x47')]));channels[_0x451acb['uniqueid']][_0x8ce0('0x59')]=_0x451acb[_0x8ce0('0x47')];}}}catch(_0x5407b1){utils[_0x8ce0('0x21')](util['format']('[%s][calls][varset]',_0x451acb[_0x8ce0('0x8')]),_0x5407b1);}};exports[_0x8ce0('0x5b')]=function(_0x22d200){try{if(!_[_0x8ce0('0x24')](channels[_0x22d200[_0x8ce0('0x8')]])){utils['debug'](util['format'](_0x8ce0('0x5c'),_0x22d200[_0x8ce0('0x8')]),_0x22d200);utils['info'](util[_0x8ce0('0x18')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x22d200['uniqueid'],_0x22d200[_0x8ce0('0x5d')],_0x22d200['appdata']));if(_0x22d200[_0x8ce0('0x5d')]['toLowerCase']()==_0x8ce0('0x5e')&&_[_0x8ce0('0x5f')](_0x22d200[_0x8ce0('0x60')]['toLowerCase'](),_0x8ce0('0x61'))){var _0x3bee52=_0x22d200['appdata'][_0x8ce0('0x62')]('=');var _0x4149f1=_0x3bee52[0x0][_0x8ce0('0x63')](_0x3bee52[0x0][_0x8ce0('0x64')]('(')+0x1,_0x3bee52[0x0][_0x8ce0('0x64')](')'));var _0x500f2b=_0x3bee52[0x1];channels[_0x22d200[_0x8ce0('0x8')]][_0x4149f1]=_0x500f2b;}if(!_['includes'](['hangup','noop',_0x8ce0('0x65'),_0x8ce0('0x5e'),'gotoif'],_0x22d200[_0x8ce0('0x5d')]['toLowerCase']())){channels[_0x22d200[_0x8ce0('0x8')]]['lastapplication']=_0x22d200[_0x8ce0('0x5d')];channels[_0x22d200['uniqueid']][_0x8ce0('0x51')]=_0x22d200[_0x8ce0('0x60')];}}}catch(_0x212216){utils['error'](util[_0x8ce0('0x18')](_0x8ce0('0x5c'),_0x22d200[_0x8ce0('0x8')]),_0x212216);}};