02e15ddffdd86cda4b8d8417b1f37eb83ab9df7b
[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 _0xe02e=['request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','[%s][calls][newstate]','isNil','channelstate','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','error','[%s][calls][hangup]','callerid','calleridname','endtime','duration','diffTime','billableseconds','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','[%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','xmd-contactid','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','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','toLowerCase','set','startsWith','appdata','cdr','split','substring','lastIndexOf','includes','hangup','noop','execif','gotoif','lastapplication','util','./utils','FAILED','NO\x20ANSWER','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','calleridnum','accountcode','getUserByInternal','then','UserId'];(function(_0x2846b5,_0x44d458){var _0x2d7338=function(_0x554d11){while(--_0x554d11){_0x2846b5['push'](_0x2846b5['shift']());}};_0x2d7338(++_0x44d458);}(_0xe02e,0x1f0));var _0xee02=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xe02e[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0xee02('0x0'));var utils=require(_0xee02('0x1'));var transfers=require('./transfers.controller');var dispositions=['NO\x20ANSWER',_0xee02('0x2'),_0xee02('0x2'),_0xee02('0x3'),_0xee02('0x3'),_0xee02('0x3'),_0xee02('0x4'),_0xee02('0x5'),_0xee02('0x2'),'FAILED',_0xee02('0x2')];var channels={};function writeDB(_0x2678c3){var _0xc40aac;if(transfers[_0xee02('0x6')][_0x2678c3[_0xee02('0x7')]]){_0xc40aac=_0x2678c3['uniqueid'];_0x2678c3[_0xee02('0x7')]=transfers[_0xee02('0x6')][_0x2678c3['uniqueid']][_0xee02('0x8')];}utils['info'](util[_0xee02('0x9')](_0xee02('0xa'),_0x2678c3[_0xee02('0x7')],_0x2678c3[_0xee02('0xb')],_0x2678c3['queue'],_0x2678c3[_0xee02('0xc')],_0x2678c3[_0xee02('0xd')],_0x2678c3[_0xee02('0xe')],_0x2678c3['connectedlinenum'],_0x2678c3['lastevent']));if(_0x2678c3[_0xee02('0xf')]){utils[_0xee02('0x10')](_0x2678c3[_0xee02('0xf')])[_0xee02('0x11')](function(_0x2de6e0){if(_0x2de6e0){_0x2678c3[_0xee02('0x12')]=_0x2de6e0['id'];}utils[_0xee02('0x13')](_0xee02('0x14'),_0x2678c3);});}else{utils['request'](_0xee02('0x14'),_0x2678c3);}if(channels[_0x2678c3[_0xee02('0x7')]]){delete channels[_0x2678c3[_0xee02('0x7')]];}else if(_0xc40aac&&channels[_0xc40aac]){if(!transfers[_0xee02('0x6')][_0xc40aac][_0xee02('0x15')])delete transfers[_0xee02('0x6')][_0xc40aac];delete channels[_0xc40aac];}}exports['newchannel']=function(_0x5a04c1){try{utils[_0xee02('0x16')](util['format'](_0xee02('0x17'),_0x5a04c1[_0xee02('0x7')]),_0x5a04c1);if(_0x5a04c1[_0xee02('0x7')]==_0x5a04c1[_0xee02('0x18')]&&_0x5a04c1[_0xee02('0xb')]!=_0xee02('0x19')){utils[_0xee02('0x1a')](util['format'](_0xee02('0x1b'),_0x5a04c1['uniqueid'],_0x5a04c1[_0xee02('0x1c')],_0x5a04c1['exten']));channels[_0x5a04c1[_0xee02('0x7')]]={'uniqueid':_0x5a04c1[_0xee02('0x7')],'accountcode':_0x5a04c1['accountcode'],'source':_0x5a04c1[_0xee02('0xe')],'destination':_0x5a04c1[_0xee02('0x1d')],'destinationcontext':_0x5a04c1['context'],'channel':_0x5a04c1[_0xee02('0xb')],'starttime':utils[_0xee02('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':'DOCUMENTATION'};}}catch(_0x1aacc7){utils['error'](util['format']('[%s][calls][newchannel]',_0x5a04c1[_0xee02('0x7')]),_0x1aacc7);}};exports['newstate']=function(_0x401d82){try{utils['debug'](util[_0xee02('0x9')](_0xee02('0x1f'),_0x401d82[_0xee02('0x7')]),_0x401d82);if(!_[_0xee02('0x20')](channels[_0x401d82[_0xee02('0x7')]])&&_0x401d82[_0xee02('0x21')]==0x6){utils[_0xee02('0x1a')](util[_0xee02('0x9')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x401d82['uniqueid'],_0x401d82[_0xee02('0x1c')],_0x401d82['channel']));if(_[_0xee02('0x20')](channels[_0x401d82[_0xee02('0x7')]][_0xee02('0x22')])){channels[_0x401d82['uniqueid']]['systemanswertime']=utils[_0xee02('0x1e')]();}}else if(!_[_0xee02('0x20')](channels[_0x401d82[_0xee02('0x18')]])&&_0x401d82[_0xee02('0x21')]==0x6&&_0x401d82[_0xee02('0x1c')]!='transfer'){utils['info'](util[_0xee02('0x9')](_0xee02('0x23'),_0x401d82[_0xee02('0x7')],_0x401d82[_0xee02('0x18')],_0x401d82[_0xee02('0x1c')],_0x401d82[_0xee02('0xb')]));channels[_0x401d82[_0xee02('0x18')]][_0xee02('0xf')]=_0x401d82[_0xee02('0xf')];channels[_0x401d82[_0xee02('0x18')]][_0xee02('0x24')]=_0x401d82[_0xee02('0xb')];if(_['isNil'](channels[_0x401d82[_0xee02('0x18')]][_0xee02('0x25')])){channels[_0x401d82[_0xee02('0x18')]][_0xee02('0x25')]=utils['now']();}channels[_0x401d82[_0xee02('0x18')]][_0xee02('0x26')]=dispositions[_[_0xee02('0x27')](_0x401d82[_0xee02('0x21')])]||_0xee02('0x4');}}catch(_0x22410e){utils[_0xee02('0x28')](util[_0xee02('0x9')](_0xee02('0x1f'),_0x401d82[_0xee02('0x7')]),_0x22410e);}};exports['hangup']=function(_0x21eba1){try{if(!_[_0xee02('0x20')](channels[_0x21eba1[_0xee02('0x7')]])){utils[_0xee02('0x16')](util[_0xee02('0x9')](_0xee02('0x29'),_0x21eba1[_0xee02('0x7')]),_0x21eba1);if(_['isNil'](channels[_0x21eba1[_0xee02('0x7')]]['callerid'])){channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x2a')]=_0x21eba1[_0xee02('0x2b')]+'\x20<'+_0x21eba1['calleridnum']+'>';}utils[_0xee02('0x1a')](util[_0xee02('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x21eba1['uniqueid'],channels[_0x21eba1[_0xee02('0x7')]]['callerid'],_0x21eba1['cause-txt']));channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x2c')]=utils[_0xee02('0x1e')]();channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x2d')]=utils[_0xee02('0x2e')](channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x2c')],channels[_0x21eba1[_0xee02('0x7')]]['starttime']);channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x2f')]=channels[_0x21eba1[_0xee02('0x7')]][_0xee02('0x25')]?utils['diffTime'](channels[_0x21eba1[_0xee02('0x7')]]['endtime'],channels[_0x21eba1['uniqueid']][_0xee02('0x25')]):0x0;writeDB(channels[_0x21eba1['uniqueid']]);}}catch(_0x587b9e){utils[_0xee02('0x28')](util[_0xee02('0x9')](_0xee02('0x29'),_0x21eba1[_0xee02('0x7')]),_0x587b9e);}};exports['attendedtransfer']=function(_0x27a147){try{if(!_[_0xee02('0x20')](channels[_0x27a147['localtwolinkedid']])){utils[_0xee02('0x16')](util[_0xee02('0x9')]('[%s][calls][attendedtransfer]',_0x27a147[_0xee02('0x30')]),_0x27a147);if(channels[_0x27a147[_0xee02('0x31')]][_0xee02('0xb')]==_0x27a147[_0xee02('0x32')]){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x33'),_0x27a147[_0xee02('0x30')],_0x27a147[_0xee02('0x31')],_0x27a147[_0xee02('0x34')]));channels[_0x27a147[_0xee02('0x31')]][_0xee02('0x24')]=_0x27a147[_0xee02('0x34')];channels[_0x27a147[_0xee02('0x31')]][_0xee02('0x35')]=_0xee02('0x36');}else if(channels[_0x27a147[_0xee02('0x31')]][_0xee02('0xb')]=_0x27a147[_0xee02('0x37')]){utils['info'](util[_0xee02('0x9')](_0xee02('0x33'),_0x27a147[_0xee02('0x30')],_0x27a147[_0xee02('0x31')],_0x27a147[_0xee02('0x38')]));channels[_0x27a147[_0xee02('0x31')]]['destinationchannel']=_0x27a147['origtransfererchannel'];channels[_0x27a147[_0xee02('0x31')]][_0xee02('0x35')]=_0xee02('0x36');}}}catch(_0x4808f4){utils[_0xee02('0x28')](util[_0xee02('0x9')]('[%s][calls][attendedtransfer]',_0x27a147[_0xee02('0x30')]),_0x4808f4);}};exports['musiconholdstart']=function(_0x5f905f){try{if(!_[_0xee02('0x20')](channels[_0x5f905f[_0xee02('0x7')]])){utils['debug'](util[_0xee02('0x9')](_0xee02('0x39'),_0x5f905f['uniqueid']),_0x5f905f);channels[_0x5f905f[_0xee02('0x7')]][_0xee02('0x3a')]=utils[_0xee02('0x1e')]();utils['info'](util[_0xee02('0x9')](_0xee02('0x3b'),_0x5f905f[_0xee02('0x7')],channels[_0x5f905f['uniqueid']][_0xee02('0x3a')]));}}catch(_0x22626b){utils['error'](util['format'](_0xee02('0x39'),_0x5f905f[_0xee02('0x7')]),_0x22626b);}};exports[_0xee02('0x3c')]=function(_0x5d628d){try{if(!_[_0xee02('0x20')](channels[_0x5d628d[_0xee02('0x7')]])){utils['debug'](util[_0xee02('0x9')](_0xee02('0x3d'),_0x5d628d[_0xee02('0x7')]),_0x5d628d);if(!_[_0xee02('0x20')](channels[_0x5d628d['uniqueid']][_0xee02('0x3a')])){channels[_0x5d628d[_0xee02('0x7')]]['mohtime']+=utils[_0xee02('0x2e')](utils[_0xee02('0x1e')](),channels[_0x5d628d[_0xee02('0x7')]][_0xee02('0x3a')]);utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x3e'),_0x5d628d[_0xee02('0x7')],channels[_0x5d628d[_0xee02('0x7')]][_0xee02('0x3f')]));delete channels[_0x5d628d['uniqueid']][_0xee02('0x3a')];}}}catch(_0x13fce6){utils[_0xee02('0x28')](util[_0xee02('0x9')](_0xee02('0x3d'),_0x5d628d[_0xee02('0x7')]),_0x13fce6);}};exports['varset']=function(_0x59c813){try{if(!_[_0xee02('0x20')](channels[_0x59c813[_0xee02('0x7')]])){utils[_0xee02('0x16')](util[_0xee02('0x9')]('[%s][calls][varset]',_0x59c813['uniqueid']),_0x59c813);if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')]['xmd-originatecalleridnum'])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x41'),_0x59c813[_0xee02('0x7')],_0x59c813['value']));channels[_0x59c813[_0xee02('0x7')]]['source']=_0x59c813[_0xee02('0x42')];}if(!_['isNil'](_0x59c813[_0xee02('0x40')]['xmd-phone'])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x43'),_0x59c813['uniqueid'],_0x59c813[_0xee02('0x42')]));channels[_0x59c813[_0xee02('0x7')]][_0xee02('0x44')]=_0x59c813[_0xee02('0x42')];channels[_0x59c813[_0xee02('0x7')]][_0xee02('0x2a')]='\x22'+_0x59c813[_0xee02('0x42')]+_0xee02('0x45')+_0x59c813['value']+'>';}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x46')])||!_[_0xee02('0x20')](_0x59c813['variable'][_0xee02('0x47')])){utils['info'](util[_0xee02('0x9')](_0xee02('0x48'),_0x59c813[_0xee02('0x7')],!_['isNil'](_0x59c813[_0xee02('0x40')]['xmd-callerid-preview'])?_0xee02('0x46'):'xmd-callerid',_0x59c813[_0xee02('0x42')]));channels[_0x59c813[_0xee02('0x7')]][_0xee02('0x2a')]=_0x59c813[_0xee02('0x42')];}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x49')])||!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x4a')])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x48'),_0x59c813['uniqueid'],!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x49')])?_0xee02('0x49'):_0xee02('0x4a'),_0x59c813[_0xee02('0x42')]));channels[_0x59c813['uniqueid']]['lastapplication']='Queue';channels[_0x59c813['uniqueid']]['lastdata']=_0x59c813['value'];channels[_0x59c813[_0xee02('0x7')]]['queue']=!![];}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x4b')])){utils[_0xee02('0x1a')](util[_0xee02('0x9')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x59c813[_0xee02('0x7')],_0x59c813[_0xee02('0x42')]));channels[_0x59c813['uniqueid']][_0xee02('0x4c')]=_0x59c813[_0xee02('0x42')];}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')]['xmd-cdrtype'])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x4d'),_0x59c813[_0xee02('0x7')],_0x59c813[_0xee02('0x42')]));channels[_0x59c813[_0xee02('0x7')]][_0xee02('0x4e')]=_0x59c813[_0xee02('0x42')];}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x4f')])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x50'),_0x59c813[_0xee02('0x7')],_0x59c813['value']));channels[_0x59c813[_0xee02('0x7')]][_0xee02('0x51')]=_0x59c813[_0xee02('0x42')];}if(!_[_0xee02('0x20')](_0x59c813[_0xee02('0x40')][_0xee02('0x52')])){utils[_0xee02('0x1a')](util[_0xee02('0x9')](_0xee02('0x53'),_0x59c813[_0xee02('0x7')],_0x59c813[_0xee02('0x42')]));channels[_0x59c813['uniqueid']]['sipcallid']=_0x59c813['value'];}}}catch(_0x3f27c0){utils[_0xee02('0x28')](util[_0xee02('0x9')](_0xee02('0x54'),_0x59c813[_0xee02('0x7')]),_0x3f27c0);}};exports[_0xee02('0x55')]=function(_0x1f4ca7){try{if(!_['isNil'](channels[_0x1f4ca7[_0xee02('0x7')]])){utils[_0xee02('0x16')](util[_0xee02('0x9')](_0xee02('0x56'),_0x1f4ca7[_0xee02('0x7')]),_0x1f4ca7);utils[_0xee02('0x1a')](util['format'](_0xee02('0x57'),_0x1f4ca7[_0xee02('0x7')],_0x1f4ca7[_0xee02('0x58')],_0x1f4ca7['appdata']));if(_0x1f4ca7[_0xee02('0x58')][_0xee02('0x59')]()==_0xee02('0x5a')&&_[_0xee02('0x5b')](_0x1f4ca7[_0xee02('0x5c')]['toLowerCase'](),_0xee02('0x5d'))){var _0x377885=_0x1f4ca7[_0xee02('0x5c')][_0xee02('0x5e')]('=');var _0xb46603=_0x377885[0x0][_0xee02('0x5f')](_0x377885[0x0][_0xee02('0x60')]('(')+0x1,_0x377885[0x0][_0xee02('0x60')](')'));var _0x569c02=_0x377885[0x1];channels[_0x1f4ca7[_0xee02('0x7')]][_0xb46603]=_0x569c02;}if(!_[_0xee02('0x61')]([_0xee02('0x62'),_0xee02('0x63'),_0xee02('0x64'),_0xee02('0x5a'),_0xee02('0x65')],_0x1f4ca7['application']['toLowerCase']())){channels[_0x1f4ca7[_0xee02('0x7')]][_0xee02('0x66')]=_0x1f4ca7[_0xee02('0x58')];channels[_0x1f4ca7[_0xee02('0x7')]]['lastdata']=_0x1f4ca7[_0xee02('0x5c')];}}}catch(_0x334172){utils[_0xee02('0x28')](util['format'](_0xee02('0x56'),_0x1f4ca7[_0xee02('0x7')]),_0x334172);}};