Built motion from commit 616d3211.|2.6.4
[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 _0x75b6=['lodash','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','calleridnum','connectedlinenum','CreateVoiceCallReport','request','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','systemanswertime','channelstate','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','accountcode','destinationchannel','answertime','disposition','toNumber','ANSWERED','[%s][calls][hangup]','callerid','calleridname','cause-txt','duration','starttime','billableseconds','diffTime','endtime','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','varset','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','hangup','execif'];(function(_0x4bb145,_0x3e7d33){var _0x4db596=function(_0x144489){while(--_0x144489){_0x4bb145['push'](_0x4bb145['shift']());}};_0x4db596(++_0x3e7d33);}(_0x75b6,0x1a4));var _0x675b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x75b6[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x675b('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x675b('0x1'));var dispositions=[_0x675b('0x2'),_0x675b('0x3'),'FAILED',_0x675b('0x2'),_0x675b('0x2'),_0x675b('0x2'),'ANSWERED',_0x675b('0x4'),'FAILED',_0x675b('0x3'),_0x675b('0x3')];var channels={};function writeDB(_0x3f34b8){var _0x556239;if(transfers[_0x675b('0x5')][_0x3f34b8['uniqueid']]){_0x556239=_0x3f34b8[_0x675b('0x6')];_0x3f34b8[_0x675b('0x6')]=transfers[_0x675b('0x5')][_0x3f34b8[_0x675b('0x6')]][_0x675b('0x7')];}utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0xa'),_0x3f34b8[_0x675b('0x6')],_0x3f34b8[_0x675b('0xb')],_0x3f34b8['queue'],_0x3f34b8[_0x675b('0xc')],_0x3f34b8[_0x675b('0xd')],_0x3f34b8[_0x675b('0xe')],_0x3f34b8[_0x675b('0xf')],_0x3f34b8['lastevent']));if(_0x3f34b8['accountcode']){utils['getUserByInternal'](_0x3f34b8['accountcode'])['then'](function(_0xa16268){if(_0xa16268){_0x3f34b8['UserId']=_0xa16268['id'];}utils['request'](_0x675b('0x10'),_0x3f34b8);});}else{utils[_0x675b('0x11')](_0x675b('0x10'),_0x3f34b8);}if(channels[_0x3f34b8[_0x675b('0x6')]]){delete channels[_0x3f34b8['uniqueid']];}else if(_0x556239&&channels[_0x556239]){if(!transfers[_0x675b('0x5')][_0x556239][_0x675b('0x12')])delete transfers[_0x675b('0x5')][_0x556239];delete channels[_0x556239];}}exports[_0x675b('0x13')]=function(_0x16e632){try{utils[_0x675b('0x14')](util[_0x675b('0x9')](_0x675b('0x15'),_0x16e632['uniqueid']),_0x16e632);if(_0x16e632['uniqueid']==_0x16e632[_0x675b('0x16')]&&_0x16e632[_0x675b('0xb')]!='OutgoingSpoolFailed'){utils['info'](util[_0x675b('0x9')](_0x675b('0x17'),_0x16e632[_0x675b('0x6')],_0x16e632['context'],_0x16e632[_0x675b('0x18')]));channels[_0x16e632[_0x675b('0x6')]]={'uniqueid':_0x16e632['uniqueid'],'accountcode':_0x16e632['accountcode'],'source':_0x16e632[_0x675b('0xe')],'destination':_0x16e632[_0x675b('0x18')],'destinationcontext':_0x16e632[_0x675b('0x19')],'channel':_0x16e632[_0x675b('0xb')],'starttime':utils[_0x675b('0x1a')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x675b('0x2'),'amaflags':_0x675b('0x1b')};}}catch(_0xca02e7){utils[_0x675b('0x1c')](util[_0x675b('0x9')]('[%s][calls][newchannel]',_0x16e632[_0x675b('0x6')]),_0xca02e7);}};exports[_0x675b('0x1d')]=function(_0xb0104f){try{utils[_0x675b('0x14')](util['format'](_0x675b('0x1e'),_0xb0104f[_0x675b('0x6')]),_0xb0104f);if(!_['isNil'](channels[_0xb0104f[_0x675b('0x6')]])&&_0xb0104f['channelstate']==0x6){utils[_0x675b('0x8')](util[_0x675b('0x9')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0xb0104f[_0x675b('0x6')],_0xb0104f[_0x675b('0x19')],_0xb0104f[_0x675b('0xb')]));if(_[_0x675b('0x1f')](channels[_0xb0104f[_0x675b('0x6')]]['systemanswertime'])){channels[_0xb0104f[_0x675b('0x6')]][_0x675b('0x20')]=utils[_0x675b('0x1a')]();}}else if(!_[_0x675b('0x1f')](channels[_0xb0104f[_0x675b('0x16')]])&&_0xb0104f[_0x675b('0x21')]==0x6&&_0xb0104f[_0x675b('0x19')]!='transfer'){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x22'),_0xb0104f[_0x675b('0x6')],_0xb0104f['linkedid'],_0xb0104f[_0x675b('0x19')],_0xb0104f[_0x675b('0xb')]));channels[_0xb0104f[_0x675b('0x16')]][_0x675b('0x23')]=_0xb0104f[_0x675b('0x23')];channels[_0xb0104f[_0x675b('0x16')]][_0x675b('0x24')]=_0xb0104f[_0x675b('0xb')];if(_['isNil'](channels[_0xb0104f[_0x675b('0x16')]]['answertime'])){channels[_0xb0104f[_0x675b('0x16')]][_0x675b('0x25')]=utils['now']();}channels[_0xb0104f['linkedid']][_0x675b('0x26')]=dispositions[_[_0x675b('0x27')](_0xb0104f['channelstate'])]||_0x675b('0x28');}}catch(_0x1be657){utils[_0x675b('0x1c')](util[_0x675b('0x9')](_0x675b('0x1e'),_0xb0104f[_0x675b('0x6')]),_0x1be657);}};exports['hangup']=function(_0x2b0658){try{if(!_[_0x675b('0x1f')](channels[_0x2b0658['uniqueid']])){utils['debug'](util[_0x675b('0x9')](_0x675b('0x29'),_0x2b0658[_0x675b('0x6')]),_0x2b0658);if(_[_0x675b('0x1f')](channels[_0x2b0658[_0x675b('0x6')]][_0x675b('0x2a')])){channels[_0x2b0658[_0x675b('0x6')]][_0x675b('0x2a')]=_0x2b0658[_0x675b('0x2b')]+'\x20<'+_0x2b0658[_0x675b('0xe')]+'>';}utils[_0x675b('0x8')](util['format']('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x2b0658[_0x675b('0x6')],channels[_0x2b0658['uniqueid']][_0x675b('0x2a')],_0x2b0658[_0x675b('0x2c')]));channels[_0x2b0658[_0x675b('0x6')]]['endtime']=utils['now']();channels[_0x2b0658['uniqueid']][_0x675b('0x2d')]=utils['diffTime'](channels[_0x2b0658[_0x675b('0x6')]]['endtime'],channels[_0x2b0658['uniqueid']][_0x675b('0x2e')]);channels[_0x2b0658[_0x675b('0x6')]][_0x675b('0x2f')]=channels[_0x2b0658['uniqueid']][_0x675b('0x25')]?utils[_0x675b('0x30')](channels[_0x2b0658[_0x675b('0x6')]][_0x675b('0x31')],channels[_0x2b0658[_0x675b('0x6')]]['answertime']):0x0;writeDB(channels[_0x2b0658[_0x675b('0x6')]]);}}catch(_0x69d4bb){utils[_0x675b('0x1c')](util[_0x675b('0x9')](_0x675b('0x29'),_0x2b0658[_0x675b('0x6')]),_0x69d4bb);}};exports['attendedtransfer']=function(_0x4b16d8){try{if(!_[_0x675b('0x1f')](channels[_0x4b16d8[_0x675b('0x32')]])){utils['debug'](util[_0x675b('0x9')](_0x675b('0x33'),_0x4b16d8[_0x675b('0x34')]),_0x4b16d8);if(channels[_0x4b16d8[_0x675b('0x32')]]['channel']==_0x4b16d8[_0x675b('0x35')]){utils[_0x675b('0x8')](util['format'](_0x675b('0x36'),_0x4b16d8[_0x675b('0x34')],_0x4b16d8[_0x675b('0x32')],_0x4b16d8[_0x675b('0x37')]));channels[_0x4b16d8['localtwolinkedid']][_0x675b('0x24')]=_0x4b16d8[_0x675b('0x37')];channels[_0x4b16d8[_0x675b('0x32')]][_0x675b('0x38')]=_0x675b('0x39');}else if(channels[_0x4b16d8[_0x675b('0x32')]][_0x675b('0xb')]=_0x4b16d8['transfertargetchannel']){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x36'),_0x4b16d8['origtransfereruniqueid'],_0x4b16d8[_0x675b('0x32')],_0x4b16d8[_0x675b('0x3a')]));channels[_0x4b16d8[_0x675b('0x32')]][_0x675b('0x24')]=_0x4b16d8[_0x675b('0x3a')];channels[_0x4b16d8[_0x675b('0x32')]][_0x675b('0x38')]=_0x675b('0x39');}}}catch(_0x25f9e7){utils['error'](util[_0x675b('0x9')](_0x675b('0x33'),_0x4b16d8[_0x675b('0x34')]),_0x25f9e7);}};exports['musiconholdstart']=function(_0x195515){try{if(!_[_0x675b('0x1f')](channels[_0x195515[_0x675b('0x6')]])){utils[_0x675b('0x14')](util[_0x675b('0x9')]('[%s][calls][musiconholdstart]',_0x195515[_0x675b('0x6')]),_0x195515);channels[_0x195515[_0x675b('0x6')]]['musiconholdstartAt']=utils[_0x675b('0x1a')]();utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x3b'),_0x195515[_0x675b('0x6')],channels[_0x195515[_0x675b('0x6')]][_0x675b('0x3c')]));}}catch(_0x17d970){utils[_0x675b('0x1c')](util[_0x675b('0x9')]('[%s][calls][musiconholdstart]',_0x195515[_0x675b('0x6')]),_0x17d970);}};exports[_0x675b('0x3d')]=function(_0xd8d560){try{if(!_[_0x675b('0x1f')](channels[_0xd8d560[_0x675b('0x6')]])){utils['debug'](util[_0x675b('0x9')](_0x675b('0x3e'),_0xd8d560[_0x675b('0x6')]),_0xd8d560);if(!_[_0x675b('0x1f')](channels[_0xd8d560[_0x675b('0x6')]][_0x675b('0x3c')])){channels[_0xd8d560[_0x675b('0x6')]][_0x675b('0x3f')]+=utils[_0x675b('0x30')](utils['now'](),channels[_0xd8d560[_0x675b('0x6')]][_0x675b('0x3c')]);utils['info'](util[_0x675b('0x9')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0xd8d560[_0x675b('0x6')],channels[_0xd8d560[_0x675b('0x6')]][_0x675b('0x3f')]));delete channels[_0xd8d560[_0x675b('0x6')]]['musiconholdstartAt'];}}}catch(_0x105aee){utils[_0x675b('0x1c')](util[_0x675b('0x9')](_0x675b('0x3e'),_0xd8d560[_0x675b('0x6')]),_0x105aee);}};exports[_0x675b('0x40')]=function(_0x1f8856){try{if(!_[_0x675b('0x1f')](channels[_0x1f8856[_0x675b('0x6')]])){utils['debug'](util[_0x675b('0x9')]('[%s][calls][varset]',_0x1f8856[_0x675b('0x6')]),_0x1f8856);if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x42')])){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x43'),_0x1f8856[_0x675b('0x6')],_0x1f8856['value']));channels[_0x1f8856['uniqueid']][_0x675b('0x44')]=_0x1f8856[_0x675b('0x45')];}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')]['xmd-phone'])){utils[_0x675b('0x8')](util['format'](_0x675b('0x46'),_0x1f8856[_0x675b('0x6')],_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856[_0x675b('0x6')]]['destination']=_0x1f8856[_0x675b('0x45')];channels[_0x1f8856[_0x675b('0x6')]][_0x675b('0x2a')]='\x22'+_0x1f8856[_0x675b('0x45')]+_0x675b('0x47')+_0x1f8856[_0x675b('0x45')]+'>';}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x48')])||!_['isNil'](_0x1f8856[_0x675b('0x41')][_0x675b('0x49')])){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x4a'),_0x1f8856[_0x675b('0x6')],!_['isNil'](_0x1f8856[_0x675b('0x41')]['xmd-callerid-preview'])?_0x675b('0x48'):_0x675b('0x49'),_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856[_0x675b('0x6')]]['callerid']=_0x1f8856['value'];}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x4b')])||!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x4c')])){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x4a'),_0x1f8856[_0x675b('0x6')],!_[_0x675b('0x1f')](_0x1f8856['variable']['xmd-queue'])?'xmd-queue':'xmcs-queue',_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856[_0x675b('0x6')]][_0x675b('0x4d')]=_0x675b('0x4e');channels[_0x1f8856[_0x675b('0x6')]][_0x675b('0x4f')]=_0x1f8856[_0x675b('0x45')];channels[_0x1f8856[_0x675b('0x6')]]['queue']=!![];}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x50')])){utils['info'](util[_0x675b('0x9')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x1f8856[_0x675b('0x6')],_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856[_0x675b('0x6')]][_0x675b('0x51')]=_0x1f8856[_0x675b('0x45')];}if(!_['isNil'](_0x1f8856['variable'][_0x675b('0x52')])){utils[_0x675b('0x8')](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x1f8856[_0x675b('0x6')],_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856[_0x675b('0x6')]][_0x675b('0x53')]=_0x1f8856[_0x675b('0x45')];}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x54')])){utils[_0x675b('0x8')](util[_0x675b('0x9')](_0x675b('0x55'),_0x1f8856[_0x675b('0x6')],_0x1f8856[_0x675b('0x45')]));channels[_0x1f8856['uniqueid']][_0x675b('0x56')]=_0x1f8856[_0x675b('0x45')];}if(!_[_0x675b('0x1f')](_0x1f8856[_0x675b('0x41')][_0x675b('0x57')])){utils[_0x675b('0x8')](util['format'](_0x675b('0x58'),_0x1f8856[_0x675b('0x6')],_0x1f8856['value']));channels[_0x1f8856['uniqueid']][_0x675b('0x57')]=_0x1f8856[_0x675b('0x45')];}}}catch(_0x5b5402){utils[_0x675b('0x1c')](util[_0x675b('0x9')](_0x675b('0x59'),_0x1f8856[_0x675b('0x6')]),_0x5b5402);}};exports[_0x675b('0x5a')]=function(_0x29a23b){try{if(!_['isNil'](channels[_0x29a23b[_0x675b('0x6')]])){utils[_0x675b('0x14')](util['format'](_0x675b('0x5b'),_0x29a23b[_0x675b('0x6')]),_0x29a23b);utils['info'](util[_0x675b('0x9')](_0x675b('0x5c'),_0x29a23b[_0x675b('0x6')],_0x29a23b[_0x675b('0x5d')],_0x29a23b[_0x675b('0x5e')]));if(_0x29a23b['application'][_0x675b('0x5f')]()==_0x675b('0x60')&&_[_0x675b('0x61')](_0x29a23b['appdata'][_0x675b('0x5f')](),_0x675b('0x62'))){var _0x3857c1=_0x29a23b[_0x675b('0x5e')][_0x675b('0x63')]('=');var _0x403eee=_0x3857c1[0x0][_0x675b('0x64')](_0x3857c1[0x0]['lastIndexOf']('(')+0x1,_0x3857c1[0x0][_0x675b('0x65')](')'));var _0x27de62=_0x3857c1[0x1];channels[_0x29a23b['uniqueid']][_0x403eee]=_0x27de62;}if(!_[_0x675b('0x66')]([_0x675b('0x67'),'noop',_0x675b('0x68'),_0x675b('0x60'),'gotoif'],_0x29a23b['application']['toLowerCase']())){channels[_0x29a23b[_0x675b('0x6')]][_0x675b('0x4d')]=_0x29a23b['application'];channels[_0x29a23b['uniqueid']][_0x675b('0x4f')]=_0x29a23b['appdata'];}}}catch(_0xeea22b){utils[_0x675b('0x1c')](util['format'](_0x675b('0x5b'),_0x29a23b[_0x675b('0x6')]),_0xeea22b);}};