1377b6103f96a5c0d42e81ae671ea58baa0eee08
[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 _0x9714=['appdata','toLowerCase','cdr','lastIndexOf','includes','hangup','noop','execif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','membername','calleridnum','lastevent','accountcode','then','CreateVoiceCallReport','request','newchannel','debug','format','[%s][calls][newchannel]','channel','OutgoingSpoolFailed','context','exten','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','linkedid','destinationchannel','answertime','disposition','error','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','secondtransfererchannel','userfield','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','xmd-originatecalleridnum','value','variable','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','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application'];(function(_0x4eefa,_0xb748e5){var _0x52210f=function(_0x4a77a9){while(--_0x4a77a9){_0x4eefa['push'](_0x4eefa['shift']());}};_0x52210f(++_0xb748e5);}(_0x9714,0x1a8));var _0x4971=function(_0x4fbb15,_0x21be0c){_0x4fbb15=_0x4fbb15-0x0;var _0x436338=_0x9714[_0x4fbb15];return _0x436338;};'use strict';var _=require(_0x4971('0x0'));var util=require(_0x4971('0x1'));var utils=require(_0x4971('0x2'));var dispositions=[_0x4971('0x3'),_0x4971('0x4'),_0x4971('0x4'),_0x4971('0x3'),'NO\x20ANSWER','NO\x20ANSWER',_0x4971('0x5'),_0x4971('0x6'),_0x4971('0x4'),'FAILED',_0x4971('0x4')];var channels={};function writeDB(_0x10def3){utils[_0x4971('0x7')](util['format'](_0x4971('0x8'),_0x10def3[_0x4971('0x9')],_0x10def3['channel'],_0x10def3[_0x4971('0xa')],_0x10def3[_0x4971('0xb')],_0x10def3['interface'],_0x10def3[_0x4971('0xc')],_0x10def3['connectedlinenum'],_0x10def3[_0x4971('0xd')]));if(_0x10def3[_0x4971('0xe')]){utils['getUserByInternal'](_0x10def3['accountcode'])[_0x4971('0xf')](function(_0x1ed520){if(_0x1ed520){_0x10def3['UserId']=_0x1ed520['id'];}utils['request'](_0x4971('0x10'),_0x10def3);});}else{utils[_0x4971('0x11')](_0x4971('0x10'),_0x10def3);}if(channels[_0x10def3[_0x4971('0x9')]]){delete channels[_0x10def3[_0x4971('0x9')]];}}exports[_0x4971('0x12')]=function(_0x3b9632){try{utils[_0x4971('0x13')](util[_0x4971('0x14')](_0x4971('0x15'),_0x3b9632[_0x4971('0x9')]),_0x3b9632);if(_0x3b9632[_0x4971('0x9')]==_0x3b9632['linkedid']&&_0x3b9632[_0x4971('0x16')]!=_0x4971('0x17')){utils[_0x4971('0x7')](util[_0x4971('0x14')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x3b9632['uniqueid'],_0x3b9632[_0x4971('0x18')],_0x3b9632[_0x4971('0x19')]));channels[_0x3b9632[_0x4971('0x9')]]={'uniqueid':_0x3b9632['uniqueid'],'accountcode':_0x3b9632['accountcode'],'source':_0x3b9632[_0x4971('0xc')],'destination':_0x3b9632[_0x4971('0x19')],'destinationcontext':_0x3b9632[_0x4971('0x18')],'channel':_0x3b9632[_0x4971('0x16')],'starttime':utils[_0x4971('0x1a')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x4971('0x3'),'amaflags':_0x4971('0x1b')};}}catch(_0x11cf43){utils['error'](util[_0x4971('0x14')](_0x4971('0x15'),_0x3b9632[_0x4971('0x9')]),_0x11cf43);}};exports[_0x4971('0x1c')]=function(_0x48926e){try{utils['debug'](util[_0x4971('0x14')](_0x4971('0x1d'),_0x48926e[_0x4971('0x9')]),_0x48926e);if(!_[_0x4971('0x1e')](channels[_0x48926e[_0x4971('0x9')]])&&_0x48926e[_0x4971('0x1f')]==0x6){utils[_0x4971('0x7')](util[_0x4971('0x14')](_0x4971('0x20'),_0x48926e['uniqueid'],_0x48926e[_0x4971('0x18')],_0x48926e[_0x4971('0x16')]));if(_['isNil'](channels[_0x48926e[_0x4971('0x9')]]['systemanswertime'])){channels[_0x48926e[_0x4971('0x9')]]['systemanswertime']=utils[_0x4971('0x1a')]();}}else if(!_['isNil'](channels[_0x48926e['linkedid']])&&_0x48926e[_0x4971('0x1f')]==0x6&&_0x48926e[_0x4971('0x18')]!=_0x4971('0x21')){utils['info'](util[_0x4971('0x14')](_0x4971('0x22'),_0x48926e[_0x4971('0x9')],_0x48926e[_0x4971('0x23')],_0x48926e[_0x4971('0x18')],_0x48926e['channel']));channels[_0x48926e[_0x4971('0x23')]][_0x4971('0xe')]=_0x48926e[_0x4971('0xe')];channels[_0x48926e[_0x4971('0x23')]][_0x4971('0x24')]=_0x48926e[_0x4971('0x16')];if(_[_0x4971('0x1e')](channels[_0x48926e[_0x4971('0x23')]]['answertime'])){channels[_0x48926e[_0x4971('0x23')]][_0x4971('0x25')]=utils['now']();}channels[_0x48926e['linkedid']][_0x4971('0x26')]=dispositions[_['toNumber'](_0x48926e[_0x4971('0x1f')])]||_0x4971('0x5');}}catch(_0x545086){utils[_0x4971('0x27')](util[_0x4971('0x14')](_0x4971('0x1d'),_0x48926e[_0x4971('0x9')]),_0x545086);}};exports['hangup']=function(_0x2c30e6){try{if(!_[_0x4971('0x1e')](channels[_0x2c30e6['uniqueid']])){utils['debug'](util[_0x4971('0x14')](_0x4971('0x28'),_0x2c30e6[_0x4971('0x9')]),_0x2c30e6);if(_[_0x4971('0x1e')](channels[_0x2c30e6[_0x4971('0x9')]]['callerid'])){channels[_0x2c30e6['uniqueid']][_0x4971('0x29')]=_0x2c30e6[_0x4971('0x2a')]+'\x20<'+_0x2c30e6['calleridnum']+'>';}utils[_0x4971('0x7')](util['format'](_0x4971('0x2b'),_0x2c30e6['uniqueid'],channels[_0x2c30e6['uniqueid']][_0x4971('0x29')],_0x2c30e6[_0x4971('0x2c')]));channels[_0x2c30e6['uniqueid']][_0x4971('0x2d')]=utils[_0x4971('0x1a')]();channels[_0x2c30e6['uniqueid']][_0x4971('0x2e')]=utils[_0x4971('0x2f')](channels[_0x2c30e6['uniqueid']]['endtime'],channels[_0x2c30e6[_0x4971('0x9')]][_0x4971('0x30')]);channels[_0x2c30e6[_0x4971('0x9')]][_0x4971('0x31')]=channels[_0x2c30e6[_0x4971('0x9')]]['answertime']?utils[_0x4971('0x2f')](channels[_0x2c30e6[_0x4971('0x9')]][_0x4971('0x2d')],channels[_0x2c30e6[_0x4971('0x9')]][_0x4971('0x25')]):0x0;writeDB(channels[_0x2c30e6[_0x4971('0x9')]]);}}catch(_0x2c02f0){utils[_0x4971('0x27')](util[_0x4971('0x14')]('[%s][calls][hangup]',_0x2c30e6[_0x4971('0x9')]),_0x2c02f0);}};exports['attendedtransfer']=function(_0x7a25d8){try{if(!_['isNil'](channels[_0x7a25d8[_0x4971('0x32')]])){utils['debug'](util[_0x4971('0x14')](_0x4971('0x33'),_0x7a25d8[_0x4971('0x34')]),_0x7a25d8);if(channels[_0x7a25d8[_0x4971('0x32')]][_0x4971('0x16')]==_0x7a25d8[_0x4971('0x35')]){utils[_0x4971('0x7')](util[_0x4971('0x14')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x7a25d8[_0x4971('0x34')],_0x7a25d8[_0x4971('0x32')],_0x7a25d8[_0x4971('0x36')]));channels[_0x7a25d8[_0x4971('0x32')]][_0x4971('0x24')]=_0x7a25d8['secondtransfererchannel'];channels[_0x7a25d8[_0x4971('0x32')]][_0x4971('0x37')]=_0x4971('0x38');}else if(channels[_0x7a25d8[_0x4971('0x32')]][_0x4971('0x16')]=_0x7a25d8[_0x4971('0x39')]){utils[_0x4971('0x7')](util[_0x4971('0x14')](_0x4971('0x3a'),_0x7a25d8[_0x4971('0x34')],_0x7a25d8[_0x4971('0x32')],_0x7a25d8[_0x4971('0x3b')]));channels[_0x7a25d8[_0x4971('0x32')]][_0x4971('0x24')]=_0x7a25d8[_0x4971('0x3b')];channels[_0x7a25d8[_0x4971('0x32')]]['userfield']=_0x4971('0x38');}}}catch(_0x5ec647){utils[_0x4971('0x27')](util['format']('[%s][calls][attendedtransfer]',_0x7a25d8[_0x4971('0x34')]),_0x5ec647);}};exports[_0x4971('0x3c')]=function(_0x3f7ad6){try{if(!_[_0x4971('0x1e')](channels[_0x3f7ad6[_0x4971('0x9')]])){utils['debug'](util[_0x4971('0x14')](_0x4971('0x3d'),_0x3f7ad6['uniqueid']),_0x3f7ad6);channels[_0x3f7ad6[_0x4971('0x9')]]['musiconholdstartAt']=utils[_0x4971('0x1a')]();utils[_0x4971('0x7')](util[_0x4971('0x14')](_0x4971('0x3e'),_0x3f7ad6[_0x4971('0x9')],channels[_0x3f7ad6[_0x4971('0x9')]][_0x4971('0x3f')]));}}catch(_0x3e8896){utils['error'](util[_0x4971('0x14')](_0x4971('0x3d'),_0x3f7ad6[_0x4971('0x9')]),_0x3e8896);}};exports[_0x4971('0x40')]=function(_0x46ad48){try{if(!_[_0x4971('0x1e')](channels[_0x46ad48[_0x4971('0x9')]])){utils[_0x4971('0x13')](util[_0x4971('0x14')](_0x4971('0x41'),_0x46ad48[_0x4971('0x9')]),_0x46ad48);if(!_['isNil'](channels[_0x46ad48['uniqueid']][_0x4971('0x3f')])){channels[_0x46ad48[_0x4971('0x9')]][_0x4971('0x42')]+=utils[_0x4971('0x2f')](utils[_0x4971('0x1a')](),channels[_0x46ad48[_0x4971('0x9')]][_0x4971('0x3f')]);utils[_0x4971('0x7')](util[_0x4971('0x14')](_0x4971('0x43'),_0x46ad48[_0x4971('0x9')],channels[_0x46ad48[_0x4971('0x9')]][_0x4971('0x42')]));delete channels[_0x46ad48[_0x4971('0x9')]]['musiconholdstartAt'];}}}catch(_0x43f203){utils[_0x4971('0x27')](util[_0x4971('0x14')](_0x4971('0x41'),_0x46ad48[_0x4971('0x9')]),_0x43f203);}};exports['varset']=function(_0x4606b9){try{if(!_[_0x4971('0x1e')](channels[_0x4606b9[_0x4971('0x9')]])){utils['debug'](util[_0x4971('0x14')](_0x4971('0x44'),_0x4606b9[_0x4971('0x9')]),_0x4606b9);if(!_['isNil'](_0x4606b9['variable'][_0x4971('0x45')])){utils[_0x4971('0x7')](util[_0x4971('0x14')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x4606b9[_0x4971('0x9')],_0x4606b9[_0x4971('0x46')]));channels[_0x4606b9[_0x4971('0x9')]]['source']=_0x4606b9[_0x4971('0x46')];}if(!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x48')])){utils['info'](util[_0x4971('0x14')](_0x4971('0x49'),_0x4606b9['uniqueid'],_0x4606b9[_0x4971('0x46')]));channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x4a')]=_0x4606b9[_0x4971('0x46')];channels[_0x4606b9['uniqueid']][_0x4971('0x29')]='\x22'+_0x4606b9['value']+_0x4971('0x4b')+_0x4606b9[_0x4971('0x46')]+'>';}if(!_['isNil'](_0x4606b9['variable'][_0x4971('0x4c')])||!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x4d')])){utils['info'](util[_0x4971('0x14')](_0x4971('0x4e'),_0x4606b9[_0x4971('0x9')],!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x4c')])?_0x4971('0x4c'):_0x4971('0x4d'),_0x4606b9['value']));channels[_0x4606b9[_0x4971('0x9')]]['callerid']=_0x4606b9[_0x4971('0x46')];}if(!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x4f')])||!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x50')])){utils['info'](util[_0x4971('0x14')](_0x4971('0x4e'),_0x4606b9['uniqueid'],!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')][_0x4971('0x4f')])?_0x4971('0x4f'):_0x4971('0x50'),_0x4606b9['value']));channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x51')]=_0x4971('0x52');channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x53')]=_0x4606b9[_0x4971('0x46')];channels[_0x4606b9[_0x4971('0x9')]]['queue']=!![];}if(!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')]['xmd-contactid'])){utils['info'](util[_0x4971('0x14')](_0x4971('0x54'),_0x4606b9['uniqueid'],_0x4606b9[_0x4971('0x46')]));channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x55')]=_0x4606b9[_0x4971('0x46')];}if(!_['isNil'](_0x4606b9[_0x4971('0x47')][_0x4971('0x56')])){utils[_0x4971('0x7')](util[_0x4971('0x14')](_0x4971('0x57'),_0x4606b9[_0x4971('0x9')],_0x4606b9[_0x4971('0x46')]));channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x58')]=_0x4606b9['value'];}if(!_[_0x4971('0x1e')](_0x4606b9[_0x4971('0x47')]['outboundrouteid'])){utils['info'](util[_0x4971('0x14')](_0x4971('0x59'),_0x4606b9['uniqueid'],_0x4606b9['value']));channels[_0x4606b9['uniqueid']]['routeid']=_0x4606b9[_0x4971('0x46')];}if(!_['isNil'](_0x4606b9[_0x4971('0x47')][_0x4971('0x5a')])){utils[_0x4971('0x7')](util['format'](_0x4971('0x5b'),_0x4606b9[_0x4971('0x9')],_0x4606b9['value']));channels[_0x4606b9[_0x4971('0x9')]][_0x4971('0x5a')]=_0x4606b9['value'];}}}catch(_0x3d8e0d){utils[_0x4971('0x27')](util[_0x4971('0x14')](_0x4971('0x44'),_0x4606b9[_0x4971('0x9')]),_0x3d8e0d);}};exports[_0x4971('0x5c')]=function(_0x41d868){try{if(!_['isNil'](channels[_0x41d868[_0x4971('0x9')]])){utils['debug'](util[_0x4971('0x14')](_0x4971('0x5d'),_0x41d868[_0x4971('0x9')]),_0x41d868);utils['info'](util[_0x4971('0x14')](_0x4971('0x5e'),_0x41d868['uniqueid'],_0x41d868[_0x4971('0x5f')],_0x41d868[_0x4971('0x60')]));if(_0x41d868[_0x4971('0x5f')][_0x4971('0x61')]()=='set'&&_['startsWith'](_0x41d868[_0x4971('0x60')]['toLowerCase'](),_0x4971('0x62'))){var _0x19fe17=_0x41d868[_0x4971('0x60')]['split']('=');var _0x4f2180=_0x19fe17[0x0]['substring'](_0x19fe17[0x0][_0x4971('0x63')]('(')+0x1,_0x19fe17[0x0][_0x4971('0x63')](')'));var _0x334379=_0x19fe17[0x1];channels[_0x41d868[_0x4971('0x9')]][_0x4f2180]=_0x334379;}if(!_[_0x4971('0x64')]([_0x4971('0x65'),_0x4971('0x66'),_0x4971('0x67'),'set','gotoif'],_0x41d868[_0x4971('0x5f')][_0x4971('0x61')]())){channels[_0x41d868['uniqueid']]['lastapplication']=_0x41d868[_0x4971('0x5f')];channels[_0x41d868[_0x4971('0x9')]]['lastdata']=_0x41d868['appdata'];}}}catch(_0x124309){utils['error'](util[_0x4971('0x14')](_0x4971('0x5d'),_0x41d868[_0x4971('0x9')]),_0x124309);}};