Built motion from commit 9efc8423.|2.6.31
[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 _0x1626=['[%s][calls][musiconholdstop]\x20mohtime:%s','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','xmd-phone','[%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','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]','newexten','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','split','substring','includes','noop','execif','gotoif','[%s][calls][newexten]','util','./utils','FAILED','NO\x20ANSWER','ANSWERED','BUSY','info','format','uniqueid','calleridnum','connectedlinenum','lastevent','accountcode','then','UserId','request','CreateVoiceCallReport','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','channelstate','transfer','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','diffTime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x1626,0x15d));var _0x6162=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0x1626[_0x5b78e8];return _0xf2c321;};'use strict';var _=require('lodash');var util=require(_0x6162('0x0'));var utils=require(_0x6162('0x1'));var dispositions=['NO\x20ANSWER',_0x6162('0x2'),_0x6162('0x2'),_0x6162('0x3'),_0x6162('0x3'),_0x6162('0x3'),_0x6162('0x4'),_0x6162('0x5'),'FAILED',_0x6162('0x2'),_0x6162('0x2')];var channels={};function writeDB(_0x5ba69f){utils[_0x6162('0x6')](util[_0x6162('0x7')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x5ba69f[_0x6162('0x8')],_0x5ba69f['channel'],_0x5ba69f['queue'],_0x5ba69f['membername'],_0x5ba69f['interface'],_0x5ba69f[_0x6162('0x9')],_0x5ba69f[_0x6162('0xa')],_0x5ba69f[_0x6162('0xb')]));if(_0x5ba69f['accountcode']){utils['getUserByInternal'](_0x5ba69f[_0x6162('0xc')])[_0x6162('0xd')](function(_0x340597){if(_0x340597){_0x5ba69f[_0x6162('0xe')]=_0x340597['id'];}utils[_0x6162('0xf')](_0x6162('0x10'),_0x5ba69f);});}else{utils[_0x6162('0xf')]('CreateVoiceCallReport',_0x5ba69f);}if(channels[_0x5ba69f[_0x6162('0x8')]]){delete channels[_0x5ba69f[_0x6162('0x8')]];}}exports['newchannel']=function(_0x4854f0){try{utils[_0x6162('0x11')](util[_0x6162('0x7')](_0x6162('0x12'),_0x4854f0[_0x6162('0x8')]),_0x4854f0);if(_0x4854f0[_0x6162('0x8')]==_0x4854f0[_0x6162('0x13')]&&_0x4854f0[_0x6162('0x14')]!=_0x6162('0x15')){utils['info'](util[_0x6162('0x7')](_0x6162('0x16'),_0x4854f0[_0x6162('0x8')],_0x4854f0[_0x6162('0x17')],_0x4854f0[_0x6162('0x18')]));channels[_0x4854f0[_0x6162('0x8')]]={'uniqueid':_0x4854f0[_0x6162('0x8')],'accountcode':_0x4854f0['accountcode'],'source':_0x4854f0[_0x6162('0x9')],'destination':_0x4854f0[_0x6162('0x18')],'destinationcontext':_0x4854f0[_0x6162('0x17')],'channel':_0x4854f0[_0x6162('0x14')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x6162('0x3'),'amaflags':_0x6162('0x19')};}}catch(_0x1616dc){utils[_0x6162('0x1a')](util[_0x6162('0x7')]('[%s][calls][newchannel]',_0x4854f0[_0x6162('0x8')]),_0x1616dc);}};exports[_0x6162('0x1b')]=function(_0x578e17){try{utils['debug'](util[_0x6162('0x7')](_0x6162('0x1c'),_0x578e17[_0x6162('0x8')]),_0x578e17);if(!_[_0x6162('0x1d')](channels[_0x578e17[_0x6162('0x8')]])&&_0x578e17['channelstate']==0x6){utils['info'](util[_0x6162('0x7')](_0x6162('0x1e'),_0x578e17[_0x6162('0x8')],_0x578e17[_0x6162('0x17')],_0x578e17[_0x6162('0x14')]));if(_[_0x6162('0x1d')](channels[_0x578e17[_0x6162('0x8')]][_0x6162('0x1f')])){channels[_0x578e17[_0x6162('0x8')]][_0x6162('0x1f')]=utils[_0x6162('0x20')]();}}else if(!_['isNil'](channels[_0x578e17[_0x6162('0x13')]])&&_0x578e17[_0x6162('0x21')]==0x6&&_0x578e17[_0x6162('0x17')]!=_0x6162('0x22')){utils[_0x6162('0x6')](util[_0x6162('0x7')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x578e17[_0x6162('0x8')],_0x578e17[_0x6162('0x13')],_0x578e17[_0x6162('0x17')],_0x578e17[_0x6162('0x14')]));channels[_0x578e17['linkedid']]['accountcode']=_0x578e17[_0x6162('0xc')];channels[_0x578e17['linkedid']][_0x6162('0x23')]=_0x578e17[_0x6162('0x14')];if(_[_0x6162('0x1d')](channels[_0x578e17[_0x6162('0x13')]][_0x6162('0x24')])){channels[_0x578e17[_0x6162('0x13')]]['answertime']=utils[_0x6162('0x20')]();}channels[_0x578e17[_0x6162('0x13')]][_0x6162('0x25')]=dispositions[_[_0x6162('0x26')](_0x578e17[_0x6162('0x21')])]||_0x6162('0x4');}}catch(_0x3272f6){utils[_0x6162('0x1a')](util[_0x6162('0x7')](_0x6162('0x1c'),_0x578e17[_0x6162('0x8')]),_0x3272f6);}};exports[_0x6162('0x27')]=function(_0xc05eb7){try{if(!_[_0x6162('0x1d')](channels[_0xc05eb7[_0x6162('0x8')]])){utils[_0x6162('0x11')](util[_0x6162('0x7')](_0x6162('0x28'),_0xc05eb7[_0x6162('0x8')]),_0xc05eb7);if(_[_0x6162('0x1d')](channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x29')])){channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x29')]=_0xc05eb7['calleridname']+'\x20<'+_0xc05eb7[_0x6162('0x9')]+'>';}utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x2a'),_0xc05eb7[_0x6162('0x8')],channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x29')],_0xc05eb7['cause-txt']));channels[_0xc05eb7['uniqueid']][_0x6162('0x2b')]=utils['now']();channels[_0xc05eb7[_0x6162('0x8')]]['duration']=utils[_0x6162('0x2c')](channels[_0xc05eb7['uniqueid']]['endtime'],channels[_0xc05eb7[_0x6162('0x8')]]['starttime']);channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x2d')]=channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x24')]?utils[_0x6162('0x2c')](channels[_0xc05eb7[_0x6162('0x8')]]['endtime'],channels[_0xc05eb7[_0x6162('0x8')]][_0x6162('0x24')]):0x0;writeDB(channels[_0xc05eb7[_0x6162('0x8')]]);}}catch(_0x20a277){utils[_0x6162('0x1a')](util[_0x6162('0x7')]('[%s][calls][hangup]',_0xc05eb7[_0x6162('0x8')]),_0x20a277);}};exports[_0x6162('0x2e')]=function(_0x564bc6){try{if(!_[_0x6162('0x1d')](channels[_0x564bc6[_0x6162('0x2f')]])){utils[_0x6162('0x11')](util[_0x6162('0x7')](_0x6162('0x30'),_0x564bc6[_0x6162('0x31')]),_0x564bc6);if(channels[_0x564bc6[_0x6162('0x2f')]]['channel']==_0x564bc6[_0x6162('0x32')]){utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x33'),_0x564bc6['origtransfereruniqueid'],_0x564bc6['localtwolinkedid'],_0x564bc6[_0x6162('0x34')]));channels[_0x564bc6[_0x6162('0x2f')]][_0x6162('0x23')]=_0x564bc6[_0x6162('0x34')];channels[_0x564bc6['localtwolinkedid']]['userfield']=_0x6162('0x35');}else if(channels[_0x564bc6[_0x6162('0x2f')]][_0x6162('0x14')]=_0x564bc6[_0x6162('0x36')]){utils[_0x6162('0x6')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x564bc6[_0x6162('0x31')],_0x564bc6[_0x6162('0x2f')],_0x564bc6['origtransfererchannel']));channels[_0x564bc6[_0x6162('0x2f')]]['destinationchannel']=_0x564bc6[_0x6162('0x37')];channels[_0x564bc6[_0x6162('0x2f')]]['userfield']=_0x6162('0x35');}}}catch(_0x113615){utils['error'](util[_0x6162('0x7')]('[%s][calls][attendedtransfer]',_0x564bc6[_0x6162('0x31')]),_0x113615);}};exports[_0x6162('0x38')]=function(_0x8704f4){try{if(!_[_0x6162('0x1d')](channels[_0x8704f4['uniqueid']])){utils['debug'](util[_0x6162('0x7')](_0x6162('0x39'),_0x8704f4['uniqueid']),_0x8704f4);channels[_0x8704f4['uniqueid']][_0x6162('0x3a')]=utils[_0x6162('0x20')]();utils['info'](util[_0x6162('0x7')](_0x6162('0x3b'),_0x8704f4['uniqueid'],channels[_0x8704f4[_0x6162('0x8')]][_0x6162('0x3a')]));}}catch(_0x28520f){utils[_0x6162('0x1a')](util[_0x6162('0x7')]('[%s][calls][musiconholdstart]',_0x8704f4['uniqueid']),_0x28520f);}};exports[_0x6162('0x3c')]=function(_0x5f3ecf){try{if(!_[_0x6162('0x1d')](channels[_0x5f3ecf[_0x6162('0x8')]])){utils['debug'](util[_0x6162('0x7')](_0x6162('0x3d'),_0x5f3ecf[_0x6162('0x8')]),_0x5f3ecf);if(!_['isNil'](channels[_0x5f3ecf['uniqueid']][_0x6162('0x3a')])){channels[_0x5f3ecf[_0x6162('0x8')]][_0x6162('0x3e')]+=utils[_0x6162('0x2c')](utils[_0x6162('0x20')](),channels[_0x5f3ecf[_0x6162('0x8')]][_0x6162('0x3a')]);utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x3f'),_0x5f3ecf[_0x6162('0x8')],channels[_0x5f3ecf['uniqueid']]['mohtime']));delete channels[_0x5f3ecf['uniqueid']][_0x6162('0x3a')];}}}catch(_0x564ae8){utils[_0x6162('0x1a')](util[_0x6162('0x7')]('[%s][calls][musiconholdstop]',_0x5f3ecf[_0x6162('0x8')]),_0x564ae8);}};exports['varset']=function(_0x198fb1){try{if(!_['isNil'](channels[_0x198fb1['uniqueid']])){utils[_0x6162('0x11')](util['format']('[%s][calls][varset]',_0x198fb1[_0x6162('0x8')]),_0x198fb1);if(!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x41')])){utils[_0x6162('0x6')](util['format'](_0x6162('0x42'),_0x198fb1['uniqueid'],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]]['source']=_0x198fb1[_0x6162('0x43')];}if(!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x44')])){utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x45'),_0x198fb1[_0x6162('0x8')],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]]['destination']=_0x198fb1['value'];channels[_0x198fb1[_0x6162('0x8')]][_0x6162('0x29')]='\x22'+_0x198fb1[_0x6162('0x43')]+_0x6162('0x46')+_0x198fb1[_0x6162('0x43')]+'>';}if(!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x47')])||!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x48')])){utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x49'),_0x198fb1[_0x6162('0x8')],!_['isNil'](_0x198fb1[_0x6162('0x40')][_0x6162('0x47')])?_0x6162('0x47'):_0x6162('0x48'),_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]][_0x6162('0x29')]=_0x198fb1[_0x6162('0x43')];}if(!_['isNil'](_0x198fb1[_0x6162('0x40')][_0x6162('0x4a')])||!_['isNil'](_0x198fb1[_0x6162('0x40')][_0x6162('0x4b')])){utils[_0x6162('0x6')](util[_0x6162('0x7')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x198fb1[_0x6162('0x8')],!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x4a')])?_0x6162('0x4a'):'xmcs-queue',_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1['uniqueid']][_0x6162('0x4c')]=_0x6162('0x4d');channels[_0x198fb1[_0x6162('0x8')]][_0x6162('0x4e')]=_0x198fb1[_0x6162('0x43')];channels[_0x198fb1[_0x6162('0x8')]][_0x6162('0x4f')]=!![];}if(!_['isNil'](_0x198fb1[_0x6162('0x40')][_0x6162('0x50')])){utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x51'),_0x198fb1[_0x6162('0x8')],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]][_0x6162('0x52')]=_0x198fb1[_0x6162('0x43')];}if(!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x53')])){utils[_0x6162('0x6')](util['format'](_0x6162('0x54'),_0x198fb1[_0x6162('0x8')],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]]['type']=_0x198fb1[_0x6162('0x43')];}if(!_[_0x6162('0x1d')](_0x198fb1[_0x6162('0x40')][_0x6162('0x55')])){utils[_0x6162('0x6')](util[_0x6162('0x7')](_0x6162('0x56'),_0x198fb1['uniqueid'],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1['uniqueid']]['routeid']=_0x198fb1['value'];}if(!_[_0x6162('0x1d')](_0x198fb1['variable'][_0x6162('0x57')])){utils[_0x6162('0x6')](util[_0x6162('0x7')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x198fb1[_0x6162('0x8')],_0x198fb1[_0x6162('0x43')]));channels[_0x198fb1[_0x6162('0x8')]]['sipcallid']=_0x198fb1[_0x6162('0x43')];}}}catch(_0x41c47d){utils[_0x6162('0x1a')](util['format'](_0x6162('0x58'),_0x198fb1[_0x6162('0x8')]),_0x41c47d);}};exports[_0x6162('0x59')]=function(_0x259e3c){try{if(!_['isNil'](channels[_0x259e3c[_0x6162('0x8')]])){utils[_0x6162('0x11')](util[_0x6162('0x7')]('[%s][calls][newexten]',_0x259e3c[_0x6162('0x8')]),_0x259e3c);utils['info'](util[_0x6162('0x7')](_0x6162('0x5a'),_0x259e3c[_0x6162('0x8')],_0x259e3c[_0x6162('0x5b')],_0x259e3c['appdata']));if(_0x259e3c['application'][_0x6162('0x5c')]()=='set'&&_[_0x6162('0x5d')](_0x259e3c[_0x6162('0x5e')][_0x6162('0x5c')](),_0x6162('0x5f'))){var _0x5d2acf=_0x259e3c['appdata'][_0x6162('0x60')]('=');var _0x358e26=_0x5d2acf[0x0][_0x6162('0x61')](_0x5d2acf[0x0]['lastIndexOf']('(')+0x1,_0x5d2acf[0x0]['lastIndexOf'](')'));var _0x4ccb6f=_0x5d2acf[0x1];channels[_0x259e3c['uniqueid']][_0x358e26]=_0x4ccb6f;}if(!_[_0x6162('0x62')](['hangup',_0x6162('0x63'),_0x6162('0x64'),'set',_0x6162('0x65')],_0x259e3c[_0x6162('0x5b')][_0x6162('0x5c')]())){channels[_0x259e3c['uniqueid']]['lastapplication']=_0x259e3c['application'];channels[_0x259e3c[_0x6162('0x8')]][_0x6162('0x4e')]=_0x259e3c['appdata'];}}}catch(_0x5f9e29){utils[_0x6162('0x1a')](util[_0x6162('0x7')](_0x6162('0x66'),_0x259e3c['uniqueid']),_0x5f9e29);}};