Built motion from commit (unavailable).|2.3.1
[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 _0xc7e5=['set','appdata','cdr','split','substring','lastIndexOf','destaccountcode','assign','isBefore','starttime','isAfter','endtime','Local/_attended@transfer','destinationchannel','duration','billableseconds','lastdata','lodash','util','./utils','answertime','uniqueid','channel','type','accountcode','callerid','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','isNil','linkedid','musiconholdstart','musiconholdstartAt','now','musiconholdstop','mohtime','diffTime','variable','xmd-originatecalleridnum','value','xmd-phone','xmd-callerid-preview','xmd-queue','lastapplication','queue','xmd-contactid','ContactId','routeid','newexten','application','toLowerCase'];(function(_0x1fba72,_0x3ab42f){var _0x419e98=function(_0x10ddf3){while(--_0x10ddf3){_0x1fba72['push'](_0x1fba72['shift']());}};_0x419e98(++_0x3ab42f);}(_0xc7e5,0x1c1));var _0x5c7e=function(_0x3a82b6,_0x525f8d){_0x3a82b6=_0x3a82b6-0x0;var _0x4ba1ee=_0xc7e5[_0x3a82b6];return _0x4ba1ee;};'use strict';var _=require(_0x5c7e('0x0'));var util=require(_0x5c7e('0x1'));var utils=require(_0x5c7e('0x2'));var channels={};var timeouts={};function writeDB(_0x4e1a21){return function(){_0x4e1a21[_0x5c7e('0x3')]=_0x4e1a21[_0x5c7e('0x3')]||null;utils['info'](util['format']('CALL|%s|%s|%s|%s|%s|%s|%s|%s',_0x4e1a21[_0x5c7e('0x4')],_0x4e1a21[_0x5c7e('0x5')],_0x4e1a21[_0x5c7e('0x6')],_0x4e1a21[_0x5c7e('0x7')],_0x4e1a21['source'],_0x4e1a21['destination'],_0x4e1a21[_0x5c7e('0x8')],_0x4e1a21['disposition']));if(_0x4e1a21['accountcode']){utils[_0x5c7e('0x9')](_0x4e1a21[_0x5c7e('0x7')])[_0x5c7e('0xa')](function(_0x36d18b){if(_0x36d18b){_0x4e1a21[_0x5c7e('0xb')]=_0x36d18b['id'];}utils[_0x5c7e('0xc')](_0x5c7e('0xd'),_0x4e1a21);});}else{utils[_0x5c7e('0xc')]('CreateVoiceCallReport',_0x4e1a21);}if(channels[_0x4e1a21[_0x5c7e('0x5')]]){delete channels[_0x4e1a21['channel']];}if(timeouts[_0x4e1a21[_0x5c7e('0x5')]]){delete timeouts[_0x4e1a21[_0x5c7e('0x5')]];}};}exports[_0x5c7e('0xe')]=function(_0x51e86c){if(_[_0x5c7e('0xf')](channels[_0x51e86c[_0x5c7e('0x5')]])&&_0x51e86c[_0x5c7e('0x4')]==_0x51e86c[_0x5c7e('0x10')]){channels[_0x51e86c[_0x5c7e('0x5')]]={'mohtime':0x0};if(_0x51e86c[_0x5c7e('0x7')]){channels[_0x51e86c['channel']][_0x5c7e('0x7')]=_0x51e86c[_0x5c7e('0x7')];}}};exports[_0x5c7e('0x11')]=function(_0x21e0ee){if(!_[_0x5c7e('0xf')](channels[_0x21e0ee[_0x5c7e('0x5')]])){channels[_0x21e0ee[_0x5c7e('0x5')]][_0x5c7e('0x12')]=utils[_0x5c7e('0x13')]();}};exports[_0x5c7e('0x14')]=function(_0x157fe7){if(!_[_0x5c7e('0xf')](channels[_0x157fe7['channel']])){if(!_[_0x5c7e('0xf')](channels[_0x157fe7[_0x5c7e('0x5')]]['musiconholdstartAt'])){channels[_0x157fe7[_0x5c7e('0x5')]][_0x5c7e('0x15')]+=utils[_0x5c7e('0x16')](utils[_0x5c7e('0x13')](),channels[_0x157fe7['channel']][_0x5c7e('0x12')]);delete channels[_0x157fe7[_0x5c7e('0x5')]][_0x5c7e('0x12')];}}};exports['varset']=function(_0x2f82e7){if(!_[_0x5c7e('0xf')](channels[_0x2f82e7['channel']])){if(!_['isNil'](_0x2f82e7[_0x5c7e('0x17')][_0x5c7e('0x18')])){channels[_0x2f82e7['channel']]['source']=_0x2f82e7[_0x5c7e('0x19')];}if(!_[_0x5c7e('0xf')](_0x2f82e7['variable'][_0x5c7e('0x1a')])){channels[_0x2f82e7[_0x5c7e('0x5')]]['destination']=_0x2f82e7[_0x5c7e('0x19')];}if(!_[_0x5c7e('0xf')](_0x2f82e7[_0x5c7e('0x17')][_0x5c7e('0x1b')])||!_[_0x5c7e('0xf')](_0x2f82e7[_0x5c7e('0x17')]['xmd-callerid'])){channels[_0x2f82e7[_0x5c7e('0x5')]][_0x5c7e('0x8')]=_0x2f82e7[_0x5c7e('0x19')];}if(!_[_0x5c7e('0xf')](_0x2f82e7[_0x5c7e('0x17')][_0x5c7e('0x1c')])){channels[_0x2f82e7[_0x5c7e('0x5')]][_0x5c7e('0x1d')]='Queue';channels[_0x2f82e7[_0x5c7e('0x5')]]['lastdata']=_0x2f82e7[_0x5c7e('0x19')];channels[_0x2f82e7[_0x5c7e('0x5')]][_0x5c7e('0x1e')]=!![];}if(!_[_0x5c7e('0xf')](_0x2f82e7[_0x5c7e('0x17')][_0x5c7e('0x1f')])){channels[_0x2f82e7[_0x5c7e('0x5')]][_0x5c7e('0x20')]=_0x2f82e7['value'];}if(!_[_0x5c7e('0xf')](_0x2f82e7['variable']['outboundrouteid'])){channels[_0x2f82e7[_0x5c7e('0x5')]][_0x5c7e('0x21')]=_0x2f82e7[_0x5c7e('0x19')];}}};exports[_0x5c7e('0x22')]=function(_0x3de54e){if(!_['isNil'](channels[_0x3de54e[_0x5c7e('0x5')]])){if(_0x3de54e[_0x5c7e('0x23')][_0x5c7e('0x24')]()==_0x5c7e('0x25')&&_['startsWith'](_0x3de54e[_0x5c7e('0x26')][_0x5c7e('0x24')](),_0x5c7e('0x27'))){var _0x32c90a=_0x3de54e['appdata'][_0x5c7e('0x28')]('=');var _0x3776d6=_0x32c90a[0x0][_0x5c7e('0x29')](_0x32c90a[0x0][_0x5c7e('0x2a')]('(')+0x1,_0x32c90a[0x0][_0x5c7e('0x2a')](')'));var _0x4f380d=_0x32c90a[0x1];channels[_0x3de54e['channel']][_0x3776d6]=_0x4f380d;}}};exports['agentcomplete']=function(_0x2f548a){if(!_[_0x5c7e('0xf')](channels[_0x2f548a['channel']])){channels[_0x2f548a['channel']][_0x5c7e('0x7')]=_0x2f548a[_0x5c7e('0x2b')];}};function handleCDR(_0x57f91e){if(_[_0x5c7e('0xf')](timeouts[_0x57f91e['channel']])){channels[_0x57f91e['channel']]=_[_0x5c7e('0x2c')](_0x57f91e,channels[_0x57f91e['channel']]);}else{clearTimeout(timeouts[_0x57f91e['channel']]);channels[_0x57f91e[_0x5c7e('0x5')]]=_['assign'](channels[_0x57f91e[_0x5c7e('0x5')]],{'starttime':utils[_0x5c7e('0x2d')](_0x57f91e[_0x5c7e('0x2e')],channels[_0x57f91e[_0x5c7e('0x5')]]['starttime'])?_0x57f91e[_0x5c7e('0x2e')]:channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x2e')],'answertime':utils[_0x5c7e('0x2d')](_0x57f91e['answertime'],channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x3')])?_0x57f91e[_0x5c7e('0x3')]:channels[_0x57f91e[_0x5c7e('0x5')]]['answertime']});if(utils[_0x5c7e('0x2f')](_0x57f91e['endtime'],channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x30')])){channels[_0x57f91e[_0x5c7e('0x5')]]=_[_0x5c7e('0x2c')](channels[_0x57f91e[_0x5c7e('0x5')]],{'endtime':_0x57f91e[_0x5c7e('0x30')],'destinationchannel':_['startsWith'](_0x57f91e['destinationchannel'],_0x5c7e('0x31'))?channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x32')]:_0x57f91e[_0x5c7e('0x32')]});}channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x33')]=utils[_0x5c7e('0x16')](channels[_0x57f91e['channel']][_0x5c7e('0x30')],channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x2e')]);channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x34')]=utils[_0x5c7e('0x16')](channels[_0x57f91e['channel']][_0x5c7e('0x30')],channels[_0x57f91e[_0x5c7e('0x5')]]['answertime']);if(_0x57f91e['lastapplication'][_0x5c7e('0x24')]()!='hangup'){channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x35')]=_0x57f91e['lastdata'];channels[_0x57f91e[_0x5c7e('0x5')]][_0x5c7e('0x1d')]=_0x57f91e[_0x5c7e('0x1d')];}}timeouts[_0x57f91e['channel']]=setTimeout(writeDB(channels[_0x57f91e['channel']]),0x3e8);}exports[_0x5c7e('0x27')]=function(_0x5a642f){if(!_['isNil'](channels[_0x5a642f[_0x5c7e('0x5')]])){handleCDR(_0x5a642f);}else if(!_[_0x5c7e('0xf')](channels[_0x5a642f[_0x5c7e('0x32')]])){_0x5a642f['channel']=_0x5a642f['destinationchannel'];handleCDR(_0x5a642f);}};