Built motion from commit 00bf23f6.|2.6.16
[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 _0x0a93=['lodash','util','./utils','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','calleridnum','connectedlinenum','lastevent','getUserByInternal','then','CreateVoiceCallReport','request','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','context','exten','DOCUMENTATION','error','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','accountcode','destinationchannel','answertime','toNumber','ANSWERED','hangup','[%s][calls][hangup]','callerid','calleridname','cause-txt','endtime','diffTime','billableseconds','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','[%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','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','application','appdata','toLowerCase','set','startsWith','cdr','split','lastIndexOf','includes','execif','gotoif','[%s][calls][newexten]'];(function(_0x7c4829,_0x582c23){var _0x28bbec=function(_0x226285){while(--_0x226285){_0x7c4829['push'](_0x7c4829['shift']());}};_0x28bbec(++_0x582c23);}(_0x0a93,0x6a));var _0x30a9=function(_0x4fbc17,_0x3e3731){_0x4fbc17=_0x4fbc17-0x0;var _0x12174c=_0x0a93[_0x4fbc17];return _0x12174c;};'use strict';var _=require(_0x30a9('0x0'));var util=require(_0x30a9('0x1'));var utils=require(_0x30a9('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x30a9('0x3'),_0x30a9('0x4'),_0x30a9('0x4'),_0x30a9('0x3'),'NO\x20ANSWER','NO\x20ANSWER','ANSWERED','BUSY','FAILED',_0x30a9('0x4'),_0x30a9('0x4')];var channels={};function writeDB(_0x5ae289){var _0x5ed9b4;if(transfers[_0x30a9('0x5')][_0x5ae289[_0x30a9('0x6')]]){_0x5ed9b4=_0x5ae289[_0x30a9('0x6')];_0x5ae289['uniqueid']=transfers[_0x30a9('0x5')][_0x5ae289[_0x30a9('0x6')]][_0x30a9('0x7')];}utils[_0x30a9('0x8')](util[_0x30a9('0x9')](_0x30a9('0xa'),_0x5ae289[_0x30a9('0x6')],_0x5ae289[_0x30a9('0xb')],_0x5ae289[_0x30a9('0xc')],_0x5ae289['membername'],_0x5ae289[_0x30a9('0xd')],_0x5ae289[_0x30a9('0xe')],_0x5ae289[_0x30a9('0xf')],_0x5ae289[_0x30a9('0x10')]));if(_0x5ae289['accountcode']){utils[_0x30a9('0x11')](_0x5ae289['accountcode'])[_0x30a9('0x12')](function(_0x3f641d){if(_0x3f641d){_0x5ae289['UserId']=_0x3f641d['id'];}utils['request'](_0x30a9('0x13'),_0x5ae289);});}else{utils[_0x30a9('0x14')]('CreateVoiceCallReport',_0x5ae289);}if(channels[_0x5ae289[_0x30a9('0x6')]]){delete channels[_0x5ae289[_0x30a9('0x6')]];}else if(_0x5ed9b4&&channels[_0x5ed9b4]){if(!transfers[_0x30a9('0x5')][_0x5ed9b4][_0x30a9('0x15')])delete transfers[_0x30a9('0x5')][_0x5ed9b4];delete channels[_0x5ed9b4];}}exports[_0x30a9('0x16')]=function(_0x5a2c34){try{utils[_0x30a9('0x17')](util[_0x30a9('0x9')](_0x30a9('0x18'),_0x5a2c34[_0x30a9('0x6')]),_0x5a2c34);if(_0x5a2c34[_0x30a9('0x6')]==_0x5a2c34[_0x30a9('0x19')]&&_0x5a2c34[_0x30a9('0xb')]!=_0x30a9('0x1a')){utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x5a2c34[_0x30a9('0x6')],_0x5a2c34[_0x30a9('0x1b')],_0x5a2c34[_0x30a9('0x1c')]));channels[_0x5a2c34[_0x30a9('0x6')]]={'uniqueid':_0x5a2c34['uniqueid'],'accountcode':_0x5a2c34['accountcode'],'source':_0x5a2c34[_0x30a9('0xe')],'destination':_0x5a2c34[_0x30a9('0x1c')],'destinationcontext':_0x5a2c34['context'],'channel':_0x5a2c34[_0x30a9('0xb')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x30a9('0x3'),'amaflags':_0x30a9('0x1d')};}}catch(_0x5a6e49){utils[_0x30a9('0x1e')](util[_0x30a9('0x9')]('[%s][calls][newchannel]',_0x5a2c34[_0x30a9('0x6')]),_0x5a6e49);}};exports['newstate']=function(_0x3c4046){try{utils[_0x30a9('0x17')](util[_0x30a9('0x9')](_0x30a9('0x1f'),_0x3c4046[_0x30a9('0x6')]),_0x3c4046);if(!_[_0x30a9('0x20')](channels[_0x3c4046[_0x30a9('0x6')]])&&_0x3c4046['channelstate']==0x6){utils[_0x30a9('0x8')](util[_0x30a9('0x9')](_0x30a9('0x21'),_0x3c4046[_0x30a9('0x6')],_0x3c4046[_0x30a9('0x1b')],_0x3c4046[_0x30a9('0xb')]));if(_[_0x30a9('0x20')](channels[_0x3c4046[_0x30a9('0x6')]][_0x30a9('0x22')])){channels[_0x3c4046[_0x30a9('0x6')]]['systemanswertime']=utils[_0x30a9('0x23')]();}}else if(!_['isNil'](channels[_0x3c4046[_0x30a9('0x19')]])&&_0x3c4046[_0x30a9('0x24')]==0x6&&_0x3c4046[_0x30a9('0x1b')]!=_0x30a9('0x25')){utils[_0x30a9('0x8')](util[_0x30a9('0x9')](_0x30a9('0x26'),_0x3c4046[_0x30a9('0x6')],_0x3c4046[_0x30a9('0x19')],_0x3c4046[_0x30a9('0x1b')],_0x3c4046['channel']));channels[_0x3c4046[_0x30a9('0x19')]]['accountcode']=_0x3c4046[_0x30a9('0x27')];channels[_0x3c4046[_0x30a9('0x19')]][_0x30a9('0x28')]=_0x3c4046['channel'];if(_[_0x30a9('0x20')](channels[_0x3c4046[_0x30a9('0x19')]][_0x30a9('0x29')])){channels[_0x3c4046[_0x30a9('0x19')]]['answertime']=utils[_0x30a9('0x23')]();}channels[_0x3c4046['linkedid']]['disposition']=dispositions[_[_0x30a9('0x2a')](_0x3c4046['channelstate'])]||_0x30a9('0x2b');}}catch(_0x3d6396){utils[_0x30a9('0x1e')](util['format'](_0x30a9('0x1f'),_0x3c4046[_0x30a9('0x6')]),_0x3d6396);}};exports[_0x30a9('0x2c')]=function(_0x1245d8){try{if(!_['isNil'](channels[_0x1245d8[_0x30a9('0x6')]])){utils[_0x30a9('0x17')](util['format'](_0x30a9('0x2d'),_0x1245d8[_0x30a9('0x6')]),_0x1245d8);if(_[_0x30a9('0x20')](channels[_0x1245d8['uniqueid']][_0x30a9('0x2e')])){channels[_0x1245d8['uniqueid']][_0x30a9('0x2e')]=_0x1245d8[_0x30a9('0x2f')]+'\x20<'+_0x1245d8[_0x30a9('0xe')]+'>';}utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x1245d8[_0x30a9('0x6')],channels[_0x1245d8[_0x30a9('0x6')]]['callerid'],_0x1245d8[_0x30a9('0x30')]));channels[_0x1245d8[_0x30a9('0x6')]][_0x30a9('0x31')]=utils[_0x30a9('0x23')]();channels[_0x1245d8[_0x30a9('0x6')]]['duration']=utils[_0x30a9('0x32')](channels[_0x1245d8[_0x30a9('0x6')]]['endtime'],channels[_0x1245d8[_0x30a9('0x6')]]['starttime']);channels[_0x1245d8['uniqueid']][_0x30a9('0x33')]=channels[_0x1245d8[_0x30a9('0x6')]][_0x30a9('0x29')]?utils['diffTime'](channels[_0x1245d8[_0x30a9('0x6')]]['endtime'],channels[_0x1245d8[_0x30a9('0x6')]][_0x30a9('0x29')]):0x0;writeDB(channels[_0x1245d8['uniqueid']]);}}catch(_0x110b7a){utils[_0x30a9('0x1e')](util[_0x30a9('0x9')](_0x30a9('0x2d'),_0x1245d8[_0x30a9('0x6')]),_0x110b7a);}};exports['attendedtransfer']=function(_0x140916){try{if(!_[_0x30a9('0x20')](channels[_0x140916['localtwolinkedid']])){utils[_0x30a9('0x17')](util[_0x30a9('0x9')](_0x30a9('0x34'),_0x140916[_0x30a9('0x35')]),_0x140916);if(channels[_0x140916[_0x30a9('0x36')]]['channel']==_0x140916['transfereechannel']){utils[_0x30a9('0x8')](util['format'](_0x30a9('0x37'),_0x140916[_0x30a9('0x35')],_0x140916[_0x30a9('0x36')],_0x140916[_0x30a9('0x38')]));channels[_0x140916[_0x30a9('0x36')]][_0x30a9('0x28')]=_0x140916[_0x30a9('0x38')];channels[_0x140916[_0x30a9('0x36')]][_0x30a9('0x39')]=_0x30a9('0x3a');}else if(channels[_0x140916[_0x30a9('0x36')]][_0x30a9('0xb')]=_0x140916[_0x30a9('0x3b')]){utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x140916[_0x30a9('0x35')],_0x140916[_0x30a9('0x36')],_0x140916[_0x30a9('0x3c')]));channels[_0x140916['localtwolinkedid']][_0x30a9('0x28')]=_0x140916[_0x30a9('0x3c')];channels[_0x140916[_0x30a9('0x36')]][_0x30a9('0x39')]='_attended';}}}catch(_0x2ac6b9){utils[_0x30a9('0x1e')](util['format'](_0x30a9('0x34'),_0x140916[_0x30a9('0x35')]),_0x2ac6b9);}};exports[_0x30a9('0x3d')]=function(_0x18e0c4){try{if(!_[_0x30a9('0x20')](channels[_0x18e0c4['uniqueid']])){utils['debug'](util[_0x30a9('0x9')](_0x30a9('0x3e'),_0x18e0c4['uniqueid']),_0x18e0c4);channels[_0x18e0c4[_0x30a9('0x6')]]['musiconholdstartAt']=utils[_0x30a9('0x23')]();utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x18e0c4['uniqueid'],channels[_0x18e0c4[_0x30a9('0x6')]][_0x30a9('0x3f')]));}}catch(_0x27b549){utils[_0x30a9('0x1e')](util[_0x30a9('0x9')](_0x30a9('0x3e'),_0x18e0c4[_0x30a9('0x6')]),_0x27b549);}};exports[_0x30a9('0x40')]=function(_0x562492){try{if(!_['isNil'](channels[_0x562492[_0x30a9('0x6')]])){utils['debug'](util[_0x30a9('0x9')]('[%s][calls][musiconholdstop]',_0x562492['uniqueid']),_0x562492);if(!_['isNil'](channels[_0x562492[_0x30a9('0x6')]][_0x30a9('0x3f')])){channels[_0x562492[_0x30a9('0x6')]][_0x30a9('0x41')]+=utils[_0x30a9('0x32')](utils['now'](),channels[_0x562492[_0x30a9('0x6')]][_0x30a9('0x3f')]);utils[_0x30a9('0x8')](util[_0x30a9('0x9')](_0x30a9('0x42'),_0x562492[_0x30a9('0x6')],channels[_0x562492[_0x30a9('0x6')]][_0x30a9('0x41')]));delete channels[_0x562492[_0x30a9('0x6')]][_0x30a9('0x3f')];}}}catch(_0x3f6537){utils['error'](util[_0x30a9('0x9')]('[%s][calls][musiconholdstop]',_0x562492[_0x30a9('0x6')]),_0x3f6537);}};exports[_0x30a9('0x43')]=function(_0x2c59f1){try{if(!_[_0x30a9('0x20')](channels[_0x2c59f1[_0x30a9('0x6')]])){utils['debug'](util[_0x30a9('0x9')](_0x30a9('0x44'),_0x2c59f1['uniqueid']),_0x2c59f1);if(!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')][_0x30a9('0x46')])){utils[_0x30a9('0x8')](util[_0x30a9('0x9')](_0x30a9('0x47'),_0x2c59f1[_0x30a9('0x6')],_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x49')]=_0x2c59f1[_0x30a9('0x48')];}if(!_[_0x30a9('0x20')](_0x2c59f1['variable']['xmd-phone'])){utils['info'](util[_0x30a9('0x9')](_0x30a9('0x4a'),_0x2c59f1[_0x30a9('0x6')],_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x4b')]=_0x2c59f1['value'];channels[_0x2c59f1['uniqueid']][_0x30a9('0x2e')]='\x22'+_0x2c59f1[_0x30a9('0x48')]+_0x30a9('0x4c')+_0x2c59f1[_0x30a9('0x48')]+'>';}if(!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')][_0x30a9('0x4d')])||!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')][_0x30a9('0x4e')])){utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x2c59f1[_0x30a9('0x6')],!_[_0x30a9('0x20')](_0x2c59f1['variable'][_0x30a9('0x4d')])?_0x30a9('0x4d'):_0x30a9('0x4e'),_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1['uniqueid']][_0x30a9('0x2e')]=_0x2c59f1[_0x30a9('0x48')];}if(!_[_0x30a9('0x20')](_0x2c59f1['variable']['xmd-queue'])||!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')]['xmcs-queue'])){utils[_0x30a9('0x8')](util['format'](_0x30a9('0x4f'),_0x2c59f1[_0x30a9('0x6')],!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')][_0x30a9('0x50')])?'xmd-queue':_0x30a9('0x51'),_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x52')]=_0x30a9('0x53');channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x54')]=_0x2c59f1['value'];channels[_0x2c59f1[_0x30a9('0x6')]]['queue']=!![];}if(!_[_0x30a9('0x20')](_0x2c59f1['variable'][_0x30a9('0x55')])){utils[_0x30a9('0x8')](util['format'](_0x30a9('0x56'),_0x2c59f1[_0x30a9('0x6')],_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1['uniqueid']]['ContactId']=_0x2c59f1[_0x30a9('0x48')];}if(!_[_0x30a9('0x20')](_0x2c59f1['variable'][_0x30a9('0x57')])){utils[_0x30a9('0x8')](util['format'](_0x30a9('0x58'),_0x2c59f1[_0x30a9('0x6')],_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x59')]=_0x2c59f1[_0x30a9('0x48')];}if(!_['isNil'](_0x2c59f1[_0x30a9('0x45')]['outboundrouteid'])){utils['info'](util[_0x30a9('0x9')](_0x30a9('0x5a'),_0x2c59f1[_0x30a9('0x6')],_0x2c59f1[_0x30a9('0x48')]));channels[_0x2c59f1[_0x30a9('0x6')]][_0x30a9('0x5b')]=_0x2c59f1[_0x30a9('0x48')];}if(!_[_0x30a9('0x20')](_0x2c59f1[_0x30a9('0x45')]['sipcallid'])){utils[_0x30a9('0x8')](util['format'](_0x30a9('0x5c'),_0x2c59f1['uniqueid'],_0x2c59f1['value']));channels[_0x2c59f1['uniqueid']][_0x30a9('0x5d')]=_0x2c59f1[_0x30a9('0x48')];}}}catch(_0x348f04){utils[_0x30a9('0x1e')](util['format'](_0x30a9('0x44'),_0x2c59f1['uniqueid']),_0x348f04);}};exports['newexten']=function(_0x233669){try{if(!_[_0x30a9('0x20')](channels[_0x233669[_0x30a9('0x6')]])){utils[_0x30a9('0x17')](util[_0x30a9('0x9')]('[%s][calls][newexten]',_0x233669[_0x30a9('0x6')]),_0x233669);utils[_0x30a9('0x8')](util[_0x30a9('0x9')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x233669[_0x30a9('0x6')],_0x233669[_0x30a9('0x5e')],_0x233669[_0x30a9('0x5f')]));if(_0x233669[_0x30a9('0x5e')][_0x30a9('0x60')]()==_0x30a9('0x61')&&_[_0x30a9('0x62')](_0x233669[_0x30a9('0x5f')][_0x30a9('0x60')](),_0x30a9('0x63'))){var _0x5ce48e=_0x233669[_0x30a9('0x5f')][_0x30a9('0x64')]('=');var _0x18409b=_0x5ce48e[0x0]['substring'](_0x5ce48e[0x0][_0x30a9('0x65')]('(')+0x1,_0x5ce48e[0x0][_0x30a9('0x65')](')'));var _0x487f14=_0x5ce48e[0x1];channels[_0x233669[_0x30a9('0x6')]][_0x18409b]=_0x487f14;}if(!_[_0x30a9('0x66')]([_0x30a9('0x2c'),'noop',_0x30a9('0x67'),_0x30a9('0x61'),_0x30a9('0x68')],_0x233669[_0x30a9('0x5e')][_0x30a9('0x60')]())){channels[_0x233669[_0x30a9('0x6')]][_0x30a9('0x52')]=_0x233669['application'];channels[_0x233669['uniqueid']]['lastdata']=_0x233669[_0x30a9('0x5f')];}}}catch(_0x4212ef){utils[_0x30a9('0x1e')](util[_0x30a9('0x9')](_0x30a9('0x69'),_0x233669['uniqueid']),_0x4212ef);}};