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