a467ecfa0ed5a360c9811bea08549caf74d65130
[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 _0xd0bd=['recording','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','format','exten','context','now','DOCUMENTATION','error','newstate','debug','[%s][calls][newstate]','channelstate','info','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstop]','varset','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue','Queue','lastdata','xmd-contactid','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','gotoif','lodash','util','./utils','FAILED','NO\x20ANSWER','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd0bd,0x191));var _0xdd0b=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xd0bd[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0xdd0b('0x0'));var util=require(_0xdd0b('0x1'));var utils=require(_0xdd0b('0x2'));var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER','FAILED',_0xdd0b('0x3'),_0xdd0b('0x4'),_0xdd0b('0x4'),_0xdd0b('0x4'),_0xdd0b('0x5'),_0xdd0b('0x6'),_0xdd0b('0x3'),_0xdd0b('0x3'),_0xdd0b('0x3')];var channels={};function writeDB(_0x3a9068){var _0x48adf5;if(transfers['blinds'][_0x3a9068[_0xdd0b('0x7')]]){_0x48adf5=_0x3a9068[_0xdd0b('0x7')];_0x3a9068['uniqueid']=transfers[_0xdd0b('0x8')][_0x3a9068[_0xdd0b('0x7')]][_0xdd0b('0x9')];}utils['info'](util['format'](_0xdd0b('0xa'),_0x3a9068[_0xdd0b('0x7')],_0x3a9068[_0xdd0b('0xb')],_0x3a9068[_0xdd0b('0xc')],_0x3a9068[_0xdd0b('0xd')],_0x3a9068[_0xdd0b('0xe')],_0x3a9068[_0xdd0b('0xf')],_0x3a9068[_0xdd0b('0x10')],_0x3a9068[_0xdd0b('0x11')]));if(_0x3a9068[_0xdd0b('0x12')]){utils[_0xdd0b('0x13')](_0x3a9068[_0xdd0b('0x12')])[_0xdd0b('0x14')](function(_0x396d2f){if(_0x396d2f){_0x3a9068['UserId']=_0x396d2f['id'];}utils[_0xdd0b('0x15')](_0xdd0b('0x16'),_0x3a9068);});}else{utils['request'](_0xdd0b('0x16'),_0x3a9068);}if(channels[_0x3a9068[_0xdd0b('0x7')]]){delete channels[_0x3a9068[_0xdd0b('0x7')]];}else if(_0x48adf5&&channels[_0x48adf5]){if(!transfers[_0xdd0b('0x8')][_0x48adf5][_0xdd0b('0x17')])delete transfers['blinds'][_0x48adf5];delete channels[_0x48adf5];}}exports['newchannel']=function(_0x42dbb9){try{utils['debug'](util['format'](_0xdd0b('0x18'),_0x42dbb9[_0xdd0b('0x7')]),_0x42dbb9);if(_0x42dbb9[_0xdd0b('0x7')]==_0x42dbb9[_0xdd0b('0x19')]&&_0x42dbb9[_0xdd0b('0xb')]!=_0xdd0b('0x1a')){utils['info'](util[_0xdd0b('0x1b')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x42dbb9[_0xdd0b('0x7')],_0x42dbb9['context'],_0x42dbb9[_0xdd0b('0x1c')]));channels[_0x42dbb9[_0xdd0b('0x7')]]={'uniqueid':_0x42dbb9['uniqueid'],'accountcode':_0x42dbb9[_0xdd0b('0x12')],'source':_0x42dbb9['calleridnum'],'destination':_0x42dbb9[_0xdd0b('0x1c')],'destinationcontext':_0x42dbb9[_0xdd0b('0x1d')],'channel':_0x42dbb9[_0xdd0b('0xb')],'starttime':utils[_0xdd0b('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xdd0b('0x4'),'amaflags':_0xdd0b('0x1f')};}}catch(_0x348c51){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x18'),_0x42dbb9[_0xdd0b('0x7')]),_0x348c51);}};exports[_0xdd0b('0x21')]=function(_0xf970fa){try{utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x23'),_0xf970fa['uniqueid']),_0xf970fa);if(!_['isNil'](channels[_0xf970fa[_0xdd0b('0x7')]])&&_0xf970fa[_0xdd0b('0x24')]==0x6){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x26'),_0xf970fa['uniqueid'],_0xf970fa[_0xdd0b('0x1d')],_0xf970fa['channel']));if(_[_0xdd0b('0x27')](channels[_0xf970fa[_0xdd0b('0x7')]]['systemanswertime'])){channels[_0xf970fa['uniqueid']][_0xdd0b('0x28')]=utils[_0xdd0b('0x1e')]();}}else if(!_['isNil'](channels[_0xf970fa['linkedid']])&&_0xf970fa[_0xdd0b('0x24')]==0x6&&_0xf970fa['context']!='transfer'){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x29'),_0xf970fa['uniqueid'],_0xf970fa[_0xdd0b('0x19')],_0xf970fa['context'],_0xf970fa[_0xdd0b('0xb')]));channels[_0xf970fa['linkedid']][_0xdd0b('0x12')]=_0xf970fa[_0xdd0b('0x12')];channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2a')]=_0xf970fa[_0xdd0b('0xb')];if(_[_0xdd0b('0x27')](channels[_0xf970fa['linkedid']][_0xdd0b('0x2b')])){channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2b')]=utils['now']();}channels[_0xf970fa[_0xdd0b('0x19')]][_0xdd0b('0x2c')]=dispositions[_['toNumber'](_0xf970fa['channelstate'])]||_0xdd0b('0x5');}}catch(_0x5d9ecd){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')]('[%s][calls][newstate]',_0xf970fa[_0xdd0b('0x7')]),_0x5d9ecd);}};exports[_0xdd0b('0x2d')]=function(_0x402266){try{if(!_['isNil'](channels[_0x402266[_0xdd0b('0x7')]])){utils['debug'](util['format'](_0xdd0b('0x2e'),_0x402266[_0xdd0b('0x7')]),_0x402266);if(_[_0xdd0b('0x27')](channels[_0x402266['uniqueid']]['callerid'])){channels[_0x402266['uniqueid']][_0xdd0b('0x2f')]=_0x402266[_0xdd0b('0x30')]+'\x20<'+_0x402266[_0xdd0b('0xf')]+'>';}utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x31'),_0x402266[_0xdd0b('0x7')],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2f')],_0x402266[_0xdd0b('0x32')]));channels[_0x402266['uniqueid']][_0xdd0b('0x33')]=utils[_0xdd0b('0x1e')]();channels[_0x402266[_0xdd0b('0x7')]]['duration']=utils['diffTime'](channels[_0x402266[_0xdd0b('0x7')]]['endtime'],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x34')]);channels[_0x402266['uniqueid']][_0xdd0b('0x35')]=channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2b')]?utils['diffTime'](channels[_0x402266[_0xdd0b('0x7')]]['endtime'],channels[_0x402266[_0xdd0b('0x7')]][_0xdd0b('0x2b')]):0x0;writeDB(channels[_0x402266['uniqueid']]);}}catch(_0x51341){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')]('[%s][calls][hangup]',_0x402266[_0xdd0b('0x7')]),_0x51341);}};exports[_0xdd0b('0x36')]=function(_0x4924f0){try{if(!_['isNil'](channels[_0x4924f0[_0xdd0b('0x37')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x38'),_0x4924f0[_0xdd0b('0x39')]),_0x4924f0);if(channels[_0x4924f0['localtwolinkedid']][_0xdd0b('0xb')]==_0x4924f0['transfereechannel']){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x3a'),_0x4924f0['origtransfereruniqueid'],_0x4924f0[_0xdd0b('0x37')],_0x4924f0[_0xdd0b('0x3b')]));channels[_0x4924f0['localtwolinkedid']][_0xdd0b('0x2a')]=_0x4924f0[_0xdd0b('0x3b')];channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x3c')]=_0xdd0b('0x3d');}else if(channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0xb')]=_0x4924f0[_0xdd0b('0x3e')]){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4924f0['origtransfereruniqueid'],_0x4924f0[_0xdd0b('0x37')],_0x4924f0['origtransfererchannel']));channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x2a')]=_0x4924f0[_0xdd0b('0x3f')];channels[_0x4924f0[_0xdd0b('0x37')]][_0xdd0b('0x3c')]=_0xdd0b('0x3d');}}}catch(_0x4fa682){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x38'),_0x4924f0['origtransfereruniqueid']),_0x4fa682);}};exports[_0xdd0b('0x40')]=function(_0x45ecdd){try{if(!_[_0xdd0b('0x27')](channels[_0x45ecdd[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x41'),_0x45ecdd[_0xdd0b('0x7')]),_0x45ecdd);channels[_0x45ecdd[_0xdd0b('0x7')]][_0xdd0b('0x42')]=utils['now']();utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x43'),_0x45ecdd[_0xdd0b('0x7')],channels[_0x45ecdd[_0xdd0b('0x7')]]['musiconholdstartAt']));}}catch(_0x256ffe){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x41'),_0x45ecdd[_0xdd0b('0x7')]),_0x256ffe);}};exports['musiconholdstop']=function(_0x4ed666){try{if(!_[_0xdd0b('0x27')](channels[_0x4ed666[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util['format'](_0xdd0b('0x44'),_0x4ed666[_0xdd0b('0x7')]),_0x4ed666);if(!_['isNil'](channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')])){channels[_0x4ed666[_0xdd0b('0x7')]]['mohtime']+=utils['diffTime'](utils[_0xdd0b('0x1e')](),channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')]);utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x4ed666[_0xdd0b('0x7')],channels[_0x4ed666[_0xdd0b('0x7')]]['mohtime']));delete channels[_0x4ed666[_0xdd0b('0x7')]][_0xdd0b('0x42')];}}}catch(_0x510be5){utils[_0xdd0b('0x20')](util['format'](_0xdd0b('0x44'),_0x4ed666[_0xdd0b('0x7')]),_0x510be5);}};exports[_0xdd0b('0x45')]=function(_0x43c441){try{if(!_['isNil'](channels[_0x43c441['uniqueid']])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')]('[%s][calls][varset]',_0x43c441[_0xdd0b('0x7')]),_0x43c441);if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x47')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x48'),_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441['uniqueid']][_0xdd0b('0x4a')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x4b')])){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x4c'),_0x43c441[_0xdd0b('0x7')],_0x43c441['value']));channels[_0x43c441[_0xdd0b('0x7')]]['destination']=_0x43c441[_0xdd0b('0x49')];channels[_0x43c441['uniqueid']][_0xdd0b('0x2f')]='\x22'+_0x43c441[_0xdd0b('0x49')]+_0xdd0b('0x4d')+_0x43c441['value']+'>';}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x4e')])||!_['isNil'](_0x43c441[_0xdd0b('0x46')]['xmd-callerid'])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x4f'),_0x43c441[_0xdd0b('0x7')],!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x4e')])?_0xdd0b('0x4e'):_0xdd0b('0x50'),_0x43c441['value']));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x2f')]=_0x43c441['value'];}if(!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x51')])||!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['xmcs-queue'])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x4f'),_0x43c441[_0xdd0b('0x7')],!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['xmd-queue'])?'xmd-queue':_0xdd0b('0x52'),_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]]['lastapplication']=_0xdd0b('0x53');channels[_0x43c441['uniqueid']][_0xdd0b('0x54')]=_0x43c441[_0xdd0b('0x49')];channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0xc')]=!![];}if(!_[_0xdd0b('0x27')](_0x43c441['variable'][_0xdd0b('0x55')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]]['ContactId']=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441['variable']['xmd-cdrtype'])){utils['info'](util[_0xdd0b('0x1b')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x43c441[_0xdd0b('0x7')],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x56')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')]['outboundrouteid'])){utils[_0xdd0b('0x25')](util['format'](_0xdd0b('0x57'),_0x43c441['uniqueid'],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x58')]=_0x43c441[_0xdd0b('0x49')];}if(!_[_0xdd0b('0x27')](_0x43c441[_0xdd0b('0x46')][_0xdd0b('0x59')])){utils[_0xdd0b('0x25')](util[_0xdd0b('0x1b')](_0xdd0b('0x5a'),_0x43c441['uniqueid'],_0x43c441[_0xdd0b('0x49')]));channels[_0x43c441[_0xdd0b('0x7')]][_0xdd0b('0x59')]=_0x43c441[_0xdd0b('0x49')];}}}catch(_0x46d187){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x5b'),_0x43c441[_0xdd0b('0x7')]),_0x46d187);}};exports[_0xdd0b('0x5c')]=function(_0x105a7f){try{if(!_[_0xdd0b('0x27')](channels[_0x105a7f[_0xdd0b('0x7')]])){utils[_0xdd0b('0x22')](util[_0xdd0b('0x1b')](_0xdd0b('0x5d'),_0x105a7f['uniqueid']),_0x105a7f);utils[_0xdd0b('0x25')](util['format']('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x105a7f[_0xdd0b('0x7')],_0x105a7f[_0xdd0b('0x5e')],_0x105a7f[_0xdd0b('0x5f')]));if(_0x105a7f[_0xdd0b('0x5e')][_0xdd0b('0x60')]()==_0xdd0b('0x61')&&_[_0xdd0b('0x62')](_0x105a7f['appdata'][_0xdd0b('0x60')](),_0xdd0b('0x63'))){var _0x5865aa=_0x105a7f[_0xdd0b('0x5f')][_0xdd0b('0x64')]('=');var _0x3069ef=_0x5865aa[0x0][_0xdd0b('0x65')](_0x5865aa[0x0][_0xdd0b('0x66')]('(')+0x1,_0x5865aa[0x0][_0xdd0b('0x66')](')'));var _0x17fa8b=_0x5865aa[0x1];channels[_0x105a7f['uniqueid']][_0x3069ef]=_0x17fa8b;}if(!_[_0xdd0b('0x67')](['hangup',_0xdd0b('0x68'),'execif',_0xdd0b('0x61'),_0xdd0b('0x69')],_0x105a7f[_0xdd0b('0x5e')]['toLowerCase']())){channels[_0x105a7f[_0xdd0b('0x7')]]['lastapplication']=_0x105a7f[_0xdd0b('0x5e')];channels[_0x105a7f[_0xdd0b('0x7')]]['lastdata']=_0x105a7f['appdata'];}}}catch(_0x3eda8d){utils[_0xdd0b('0x20')](util[_0xdd0b('0x1b')](_0xdd0b('0x5d'),_0x105a7f['uniqueid']),_0x3eda8d);}};