Built motion from commit 1fa89557.|2.6.10
[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 _0x812d=['toLowerCase','set','startsWith','substring','lastIndexOf','noop','execif','gotoif','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','format','channel','interface','calleridnum','connectedlinenum','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','info','context','exten','now','DOCUMENTATION','newstate','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','linkedid','transfer','destinationchannel','answertime','disposition','toNumber','error','hangup','[%s][calls][hangup]','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','callerid','cause-txt','endtime','duration','starttime','billableseconds','diffTime','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid','xmd-callerid-preview','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','[%s][calls][newexten]','appdata'];(function(_0x4ff0e6,_0x1d9b66){var _0x15abf1=function(_0x3c6cea){while(--_0x3c6cea){_0x4ff0e6['push'](_0x4ff0e6['shift']());}};_0x15abf1(++_0x1d9b66);}(_0x812d,0x6e));var _0xd812=function(_0x989bc5,_0x470df6){_0x989bc5=_0x989bc5-0x0;var _0x4fd453=_0x812d[_0x989bc5];return _0x4fd453;};'use strict';var _=require('lodash');var util=require(_0xd812('0x0'));var utils=require(_0xd812('0x1'));var transfers=require(_0xd812('0x2'));var dispositions=[_0xd812('0x3'),_0xd812('0x4'),_0xd812('0x4'),_0xd812('0x3'),_0xd812('0x3'),'NO\x20ANSWER',_0xd812('0x5'),_0xd812('0x6'),_0xd812('0x4'),'FAILED','FAILED'];var channels={};function writeDB(_0x46abce){var _0x41ed78;if(transfers['blinds'][_0x46abce[_0xd812('0x7')]]){_0x41ed78=_0x46abce[_0xd812('0x7')];_0x46abce['uniqueid']=transfers[_0xd812('0x8')][_0x46abce[_0xd812('0x7')]][_0xd812('0x9')];}utils['info'](util[_0xd812('0xa')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x46abce['uniqueid'],_0x46abce[_0xd812('0xb')],_0x46abce['queue'],_0x46abce['membername'],_0x46abce[_0xd812('0xc')],_0x46abce[_0xd812('0xd')],_0x46abce[_0xd812('0xe')],_0x46abce['lastevent']));if(_0x46abce[_0xd812('0xf')]){utils[_0xd812('0x10')](_0x46abce[_0xd812('0xf')])[_0xd812('0x11')](function(_0x3e4ef2){if(_0x3e4ef2){_0x46abce[_0xd812('0x12')]=_0x3e4ef2['id'];}utils[_0xd812('0x13')](_0xd812('0x14'),_0x46abce);});}else{utils['request']('CreateVoiceCallReport',_0x46abce);}if(channels[_0x46abce['uniqueid']]){delete channels[_0x46abce[_0xd812('0x7')]];}else if(_0x41ed78&&channels[_0x41ed78]){if(!transfers['blinds'][_0x41ed78]['recording'])delete transfers[_0xd812('0x8')][_0x41ed78];delete channels[_0x41ed78];}}exports[_0xd812('0x15')]=function(_0x25585a){try{utils[_0xd812('0x16')](util[_0xd812('0xa')](_0xd812('0x17'),_0x25585a[_0xd812('0x7')]),_0x25585a);if(_0x25585a['uniqueid']==_0x25585a['linkedid']&&_0x25585a[_0xd812('0xb')]!='OutgoingSpoolFailed'){utils[_0xd812('0x18')](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x25585a[_0xd812('0x7')],_0x25585a[_0xd812('0x19')],_0x25585a[_0xd812('0x1a')]));channels[_0x25585a[_0xd812('0x7')]]={'uniqueid':_0x25585a[_0xd812('0x7')],'accountcode':_0x25585a['accountcode'],'source':_0x25585a['calleridnum'],'destination':_0x25585a['exten'],'destinationcontext':_0x25585a['context'],'channel':_0x25585a[_0xd812('0xb')],'starttime':utils[_0xd812('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xd812('0x1c')};}}catch(_0x55e061){utils['error'](util[_0xd812('0xa')](_0xd812('0x17'),_0x25585a[_0xd812('0x7')]),_0x55e061);}};exports[_0xd812('0x1d')]=function(_0x557f16){try{utils[_0xd812('0x16')](util[_0xd812('0xa')]('[%s][calls][newstate]',_0x557f16[_0xd812('0x7')]),_0x557f16);if(!_[_0xd812('0x1e')](channels[_0x557f16[_0xd812('0x7')]])&&_0x557f16[_0xd812('0x1f')]==0x6){utils['info'](util[_0xd812('0xa')](_0xd812('0x20'),_0x557f16[_0xd812('0x7')],_0x557f16[_0xd812('0x19')],_0x557f16['channel']));if(_['isNil'](channels[_0x557f16[_0xd812('0x7')]][_0xd812('0x21')])){channels[_0x557f16[_0xd812('0x7')]][_0xd812('0x21')]=utils['now']();}}else if(!_[_0xd812('0x1e')](channels[_0x557f16[_0xd812('0x22')]])&&_0x557f16[_0xd812('0x1f')]==0x6&&_0x557f16['context']!=_0xd812('0x23')){utils[_0xd812('0x18')](util[_0xd812('0xa')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x557f16[_0xd812('0x7')],_0x557f16['linkedid'],_0x557f16[_0xd812('0x19')],_0x557f16['channel']));channels[_0x557f16['linkedid']]['accountcode']=_0x557f16[_0xd812('0xf')];channels[_0x557f16[_0xd812('0x22')]][_0xd812('0x24')]=_0x557f16[_0xd812('0xb')];if(_['isNil'](channels[_0x557f16[_0xd812('0x22')]]['answertime'])){channels[_0x557f16[_0xd812('0x22')]][_0xd812('0x25')]=utils[_0xd812('0x1b')]();}channels[_0x557f16['linkedid']][_0xd812('0x26')]=dispositions[_[_0xd812('0x27')](_0x557f16[_0xd812('0x1f')])]||_0xd812('0x5');}}catch(_0x37982b){utils[_0xd812('0x28')](util[_0xd812('0xa')]('[%s][calls][newstate]',_0x557f16[_0xd812('0x7')]),_0x37982b);}};exports[_0xd812('0x29')]=function(_0x2a68cd){try{if(!_['isNil'](channels[_0x2a68cd[_0xd812('0x7')]])){utils[_0xd812('0x16')](util['format'](_0xd812('0x2a'),_0x2a68cd['uniqueid']),_0x2a68cd);if(_[_0xd812('0x1e')](channels[_0x2a68cd[_0xd812('0x7')]]['callerid'])){channels[_0x2a68cd['uniqueid']]['callerid']=_0x2a68cd['calleridname']+'\x20<'+_0x2a68cd[_0xd812('0xd')]+'>';}utils['info'](util['format'](_0xd812('0x2b'),_0x2a68cd[_0xd812('0x7')],channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x2c')],_0x2a68cd[_0xd812('0x2d')]));channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x2e')]=utils[_0xd812('0x1b')]();channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x2f')]=utils['diffTime'](channels[_0x2a68cd['uniqueid']][_0xd812('0x2e')],channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x30')]);channels[_0x2a68cd['uniqueid']][_0xd812('0x31')]=channels[_0x2a68cd[_0xd812('0x7')]]['answertime']?utils[_0xd812('0x32')](channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x2e')],channels[_0x2a68cd[_0xd812('0x7')]][_0xd812('0x25')]):0x0;writeDB(channels[_0x2a68cd[_0xd812('0x7')]]);}}catch(_0x4aa709){utils[_0xd812('0x28')](util['format'](_0xd812('0x2a'),_0x2a68cd[_0xd812('0x7')]),_0x4aa709);}};exports['attendedtransfer']=function(_0x205f6d){try{if(!_[_0xd812('0x1e')](channels[_0x205f6d[_0xd812('0x33')]])){utils['debug'](util[_0xd812('0xa')](_0xd812('0x34'),_0x205f6d['origtransfereruniqueid']),_0x205f6d);if(channels[_0x205f6d[_0xd812('0x33')]][_0xd812('0xb')]==_0x205f6d[_0xd812('0x35')]){utils[_0xd812('0x18')](util['format'](_0xd812('0x36'),_0x205f6d[_0xd812('0x37')],_0x205f6d[_0xd812('0x33')],_0x205f6d[_0xd812('0x38')]));channels[_0x205f6d[_0xd812('0x33')]]['destinationchannel']=_0x205f6d['secondtransfererchannel'];channels[_0x205f6d[_0xd812('0x33')]][_0xd812('0x39')]=_0xd812('0x3a');}else if(channels[_0x205f6d['localtwolinkedid']][_0xd812('0xb')]=_0x205f6d[_0xd812('0x3b')]){utils[_0xd812('0x18')](util[_0xd812('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x205f6d[_0xd812('0x37')],_0x205f6d[_0xd812('0x33')],_0x205f6d['origtransfererchannel']));channels[_0x205f6d[_0xd812('0x33')]][_0xd812('0x24')]=_0x205f6d[_0xd812('0x3c')];channels[_0x205f6d[_0xd812('0x33')]][_0xd812('0x39')]=_0xd812('0x3a');}}}catch(_0xc5930a){utils['error'](util[_0xd812('0xa')](_0xd812('0x34'),_0x205f6d[_0xd812('0x37')]),_0xc5930a);}};exports['musiconholdstart']=function(_0x456631){try{if(!_[_0xd812('0x1e')](channels[_0x456631['uniqueid']])){utils['debug'](util[_0xd812('0xa')](_0xd812('0x3d'),_0x456631['uniqueid']),_0x456631);channels[_0x456631[_0xd812('0x7')]][_0xd812('0x3e')]=utils[_0xd812('0x1b')]();utils[_0xd812('0x18')](util[_0xd812('0xa')](_0xd812('0x3f'),_0x456631[_0xd812('0x7')],channels[_0x456631[_0xd812('0x7')]][_0xd812('0x3e')]));}}catch(_0x5d1ee3){utils['error'](util[_0xd812('0xa')](_0xd812('0x3d'),_0x456631[_0xd812('0x7')]),_0x5d1ee3);}};exports[_0xd812('0x40')]=function(_0x285851){try{if(!_[_0xd812('0x1e')](channels[_0x285851[_0xd812('0x7')]])){utils['debug'](util['format']('[%s][calls][musiconholdstop]',_0x285851['uniqueid']),_0x285851);if(!_['isNil'](channels[_0x285851['uniqueid']]['musiconholdstartAt'])){channels[_0x285851[_0xd812('0x7')]]['mohtime']+=utils['diffTime'](utils[_0xd812('0x1b')](),channels[_0x285851[_0xd812('0x7')]]['musiconholdstartAt']);utils[_0xd812('0x18')](util['format'](_0xd812('0x41'),_0x285851['uniqueid'],channels[_0x285851['uniqueid']][_0xd812('0x42')]));delete channels[_0x285851['uniqueid']]['musiconholdstartAt'];}}}catch(_0xc3e6d8){utils[_0xd812('0x28')](util[_0xd812('0xa')]('[%s][calls][musiconholdstop]',_0x285851['uniqueid']),_0xc3e6d8);}};exports[_0xd812('0x43')]=function(_0x13044f){try{if(!_['isNil'](channels[_0x13044f[_0xd812('0x7')]])){utils['debug'](util[_0xd812('0xa')](_0xd812('0x44'),_0x13044f[_0xd812('0x7')]),_0x13044f);if(!_['isNil'](_0x13044f[_0xd812('0x45')][_0xd812('0x46')])){utils[_0xd812('0x18')](util[_0xd812('0xa')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x13044f[_0xd812('0x7')],_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]]['source']=_0x13044f[_0xd812('0x47')];}if(!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')][_0xd812('0x48')])){utils[_0xd812('0x18')](util[_0xd812('0xa')](_0xd812('0x49'),_0x13044f[_0xd812('0x7')],_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x4a')]=_0x13044f[_0xd812('0x47')];channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x2c')]='\x22'+_0x13044f[_0xd812('0x47')]+_0xd812('0x4b')+_0x13044f[_0xd812('0x47')]+'>';}if(!_['isNil'](_0x13044f['variable']['xmd-callerid-preview'])||!_[_0xd812('0x1e')](_0x13044f['variable'][_0xd812('0x4c')])){utils[_0xd812('0x18')](util[_0xd812('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x13044f['uniqueid'],!_['isNil'](_0x13044f[_0xd812('0x45')]['xmd-callerid-preview'])?_0xd812('0x4d'):'xmd-callerid',_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x2c')]=_0x13044f['value'];}if(!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')][_0xd812('0x4e')])||!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')][_0xd812('0x4f')])){utils[_0xd812('0x18')](util[_0xd812('0xa')](_0xd812('0x50'),_0x13044f['uniqueid'],!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')][_0xd812('0x4e')])?_0xd812('0x4e'):_0xd812('0x4f'),_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x51')]=_0xd812('0x52');channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x53')]=_0x13044f[_0xd812('0x47')];channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x54')]=!![];}if(!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')][_0xd812('0x55')])){utils['info'](util[_0xd812('0xa')](_0xd812('0x56'),_0x13044f['uniqueid'],_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]]['ContactId']=_0x13044f[_0xd812('0x47')];}if(!_[_0xd812('0x1e')](_0x13044f[_0xd812('0x45')]['xmd-cdrtype'])){utils[_0xd812('0x18')](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x13044f[_0xd812('0x7')],_0x13044f[_0xd812('0x47')]));channels[_0x13044f['uniqueid']][_0xd812('0x57')]=_0x13044f[_0xd812('0x47')];}if(!_['isNil'](_0x13044f['variable']['outboundrouteid'])){utils[_0xd812('0x18')](util[_0xd812('0xa')](_0xd812('0x58'),_0x13044f['uniqueid'],_0x13044f[_0xd812('0x47')]));channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x59')]=_0x13044f[_0xd812('0x47')];}if(!_[_0xd812('0x1e')](_0x13044f['variable']['sipcallid'])){utils[_0xd812('0x18')](util[_0xd812('0xa')](_0xd812('0x5a'),_0x13044f['uniqueid'],_0x13044f['value']));channels[_0x13044f[_0xd812('0x7')]][_0xd812('0x5b')]=_0x13044f[_0xd812('0x47')];}}}catch(_0x5b0fbd){utils[_0xd812('0x28')](util[_0xd812('0xa')](_0xd812('0x44'),_0x13044f[_0xd812('0x7')]),_0x5b0fbd);}};exports['newexten']=function(_0x2fb41b){try{if(!_[_0xd812('0x1e')](channels[_0x2fb41b[_0xd812('0x7')]])){utils['debug'](util['format'](_0xd812('0x5c'),_0x2fb41b['uniqueid']),_0x2fb41b);utils[_0xd812('0x18')](util[_0xd812('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x2fb41b[_0xd812('0x7')],_0x2fb41b['application'],_0x2fb41b[_0xd812('0x5d')]));if(_0x2fb41b['application'][_0xd812('0x5e')]()==_0xd812('0x5f')&&_[_0xd812('0x60')](_0x2fb41b[_0xd812('0x5d')][_0xd812('0x5e')](),'cdr')){var _0x2d3684=_0x2fb41b[_0xd812('0x5d')]['split']('=');var _0x514597=_0x2d3684[0x0][_0xd812('0x61')](_0x2d3684[0x0][_0xd812('0x62')]('(')+0x1,_0x2d3684[0x0]['lastIndexOf'](')'));var _0x194967=_0x2d3684[0x1];channels[_0x2fb41b[_0xd812('0x7')]][_0x514597]=_0x194967;}if(!_['includes'](['hangup',_0xd812('0x63'),_0xd812('0x64'),_0xd812('0x5f'),_0xd812('0x65')],_0x2fb41b['application']['toLowerCase']())){channels[_0x2fb41b[_0xd812('0x7')]][_0xd812('0x51')]=_0x2fb41b['application'];channels[_0x2fb41b['uniqueid']][_0xd812('0x53')]=_0x2fb41b[_0xd812('0x5d')];}}}catch(_0xf65325){utils[_0xd812('0x28')](util[_0xd812('0xa')](_0xd812('0x5c'),_0x2fb41b[_0xd812('0x7')]),_0xf65325);}};