Built motion from commit 0900f080.|2.5.45
[motion2.git] / server / api / voiceExtension / voiceExtension.model.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 _0x79c6=['phone','param','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','hasOwnProperty','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','playback','includes','app','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','priority','concat','define','voice_extensions','get','last','lodash','exports','models','type','Set','CDR(type)=','context','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','exten','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','options','url','split','length','name'];(function(_0x4a5747,_0x47ccce){var _0x1177a9=function(_0x2a4fca){while(--_0x2a4fca){_0x4a5747['push'](_0x4a5747['shift']());}};_0x1177a9(++_0x47ccce);}(_0x79c6,0x81));var _0x679c=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x79c6[_0x9dfc10];return _0x4f938a;};'use strict';var _=require(_0x679c('0x0'));var attributes=require('./voiceExtension.attributes');module[_0x679c('0x1')]=function(_0x1de4c6){var _0x5bbe52=_0x1de4c6[_0x679c('0x2')];function _0x5a2932(_0x56d9bf){var _0x596e9c=0x2;var _0x3e24f6=[{'type':_0x56d9bf[_0x679c('0x3')],'app':_0x679c('0x4'),'appdata':_0x679c('0x5')+_0x56d9bf[_0x679c('0x3')],'context':_0x56d9bf[_0x679c('0x6')],'exten':_0x56d9bf['exten'],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']},{'type':_0x56d9bf['type'],'app':_0x56d9bf[_0x679c('0x7')]?_0x679c('0x4'):_0x679c('0x8'),'appdata':_0x56d9bf[_0x679c('0x7')]?_0x679c('0x9')+_0x56d9bf[_0x679c('0x7')]:_0x679c('0xa'),'context':_0x56d9bf['context'],'exten':_0x56d9bf['exten'],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']}];if(_0x56d9bf['type']===_0x679c('0xb')){_0x3e24f6[_0x679c('0xc')]({'type':'inbound','app':'Set','appdata':_0x679c('0xd')+_0x56d9bf['id'],'context':_0x56d9bf[_0x679c('0x6')],'exten':_0x56d9bf[_0x679c('0xe')],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']});}_0x3e24f6['push']({'type':_0x56d9bf[_0x679c('0x3')],'app':_0x679c('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x56d9bf[_0x679c('0x6')],'exten':_0x56d9bf['exten'],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']},{'type':_0x56d9bf['type'],'app':_0x679c('0x4'),'appdata':_0x679c('0xf'),'context':_0x56d9bf[_0x679c('0x6')],'exten':_0x56d9bf[_0x679c('0xe')],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']},{'type':_0x56d9bf[_0x679c('0x3')],'app':_0x679c('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x56d9bf[_0x679c('0x6')],'exten':_0x56d9bf[_0x679c('0xe')],'priority':_0x596e9c++,'VoiceExtensionId':_0x56d9bf['id']});return _0x3e24f6;}function _0x18117f(_0x3980a2){var _0x24b4f0=0x2;var _0x44eefc=[{'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0x11'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':'outbound','app':_0x3980a2[_0x679c('0x7')]?_0x679c('0x4'):_0x679c('0x8'),'appdata':_0x3980a2[_0x679c('0x7')]?_0x679c('0x9')+_0x3980a2['alias']:_0x679c('0xa'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0x12')+(_0x3980a2[_0x679c('0x13')]?_0x679c('0x14')+_0x3980a2[_0x679c('0x13')]+'}':_0x679c('0x15')),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0xd')+_0x3980a2['id'],'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':_0x679c('0x16'),'appdata':_0x679c('0x17')+(_0x24b4f0+0x2)+_0x679c('0x18')+(_0x24b4f0+0x1)+')','context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':'outbound','app':'Set','appdata':_0x3980a2[_0x679c('0x13')]?_0x679c('0x19')+_0x3980a2[_0x679c('0x13')]+'}':_0x679c('0x1a'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':_0x679c('0x4'),'appdata':_0x679c('0x1b'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':'outbound','app':'Set','appdata':_0x679c('0xf'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':'outbound','app':_0x679c('0x4'),'appdata':_0x679c('0x1c'),'context':_0x3980a2['context'],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0x1d')+_0x3980a2['id'],'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']}];if(_0x3980a2['hasOwnProperty']('recordingFormat')&&_0x3980a2[_0x679c('0x1e')]!==_0x679c('0x1f')){_0x44eefc[_0x679c('0xc')]({'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0x20'),'context':_0x3980a2['context'],'exten':_0x3980a2['exten'],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']},{'type':_0x679c('0x10'),'app':'Set','appdata':_0x679c('0x21')+_0x3980a2[_0x679c('0x1e')]||_0x679c('0x22'),'context':_0x3980a2[_0x679c('0x6')],'exten':_0x3980a2[_0x679c('0xe')],'priority':_0x24b4f0++,'VoiceExtensionId':_0x3980a2['id']});}return _0x44eefc;}function _0x1fccd8(_0x4058e5,_0x2ef042){var _0x1db1a7=[{'name':_0x679c('0x23'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x679c('0x24'),'param':0x2},{'name':_0x679c('0x25'),'param':0x3}];var _0x3170ea={};var _0x1ab032=_0x2ef042[_0x679c('0x26')](',');var _0x167568=[];for(var _0x1e2c63=0x0;_0x1e2c63<_0x1db1a7[_0x679c('0x27')];_0x1e2c63++){switch(_0x1db1a7[_0x1e2c63][_0x679c('0x28')]){case _0x679c('0x23'):_0x3170ea[_0x679c('0x23')]=_0x1ab032[_0x1db1a7[_0x1e2c63]['param']]['split']('/')[0x1];_0x3170ea[_0x679c('0x29')]=_0x1ab032[_0x1db1a7[_0x1e2c63][_0x679c('0x2a')]][_0x679c('0x26')]('/')[0x2];_0x3170ea[_0x679c('0x2b')]=_0x3170ea[_0x679c('0x29')]?_0x3170ea[_0x679c('0x29')][_0x679c('0x26')]('$')[0x0]:undefined;_0x3170ea[_0x679c('0x29')]=_0x4058e5[_0x679c('0x13')]?(_0x3170ea[_0x679c('0x2b')]||'')+_0x679c('0x14')+_0x4058e5[_0x679c('0x13')]+'}':(_0x3170ea['prefix']||'')+_0x679c('0x15');_0x167568[_0x1db1a7[_0x1e2c63][_0x679c('0x2a')]]=[_0x679c('0x2c'),_0x3170ea[_0x679c('0x23')],_0x3170ea[_0x679c('0x29')]][_0x679c('0x2d')]('/');break;case _0x679c('0x24'):_0x3170ea[_0x679c('0x24')]=_0x1ab032[_0x1db1a7[_0x1e2c63][_0x679c('0x2a')]];if(_0x4058e5['recordingFormat']!==_0x679c('0x1f')){if(_0x3170ea[_0x679c('0x24')][_0x679c('0x2e')](_0x679c('0x2f'))<0x0){_0x3170ea[_0x679c('0x24')]+='U(xcally-mixmonitor-context)';}}else{_0x3170ea[_0x679c('0x24')]=_0x3170ea['options'][_0x679c('0x30')](_0x679c('0x2f'),'');}_0x167568[_0x1db1a7[_0x1e2c63]['param']]=_0x3170ea[_0x679c('0x24')];break;default:_0x167568[_0x1db1a7[_0x1e2c63]['param']]=_0x1ab032[_0x1db1a7[_0x1e2c63]['param']];}}return _0x167568[_0x679c('0x2d')](',');}function _0x17afdb(_0x3bd052,_0x2d4dc8,_0xedfc02){return new Promise(function(_0x275d35,_0x2306b0){var _0x4249a0=[];if(_[_0x679c('0x31')](_0x2d4dc8))return _0x275d35(_0x4249a0);_0x5bbe52[_0x679c('0x32')][_0x679c('0x33')]({'attributes':['id',_0x679c('0x34'),_0x679c('0x35')],'raw':!![]})[_0x679c('0x36')](function(_0x481a11){for(var _0x229699=0x0,_0x4beaf4=0x0;_0x229699<_0x2d4dc8['length'];_0x229699++,_0x4beaf4=0x0){var _0x3c34d4=_0x2d4dc8[_0x229699];var _0xc2dfe5=[];var _0x425200=[];delete _0x3c34d4['id'];if(_0x3c34d4[_0x679c('0x34')]!==_0x679c('0x37')){_0x3c34d4[_0x679c('0x38')]=[_0x3c34d4['interval']];}else{_0x3c34d4['intervals']=_0x3c34d4[_0x679c('0x35')]?_[_0x679c('0x39')](_[_0x679c('0x3a')](_0x481a11,{'IntervalId':_0x3c34d4[_0x679c('0x35')]}),_0x679c('0x34')):[];}_0x3c34d4[_0x679c('0x6')]=_0x3bd052[_0x679c('0x6')];_0x3c34d4[_0x679c('0xe')]=_0x3bd052[_0x679c('0xe')];if(_0x3c34d4[_0x679c('0x3')])_0x3c34d4[_0x679c('0x3')]=_0x3c34d4[_0x679c('0x3')]['toLowerCase']();if(_0x3bd052[_0x679c('0x3')]===_0x679c('0x10')){if(_0x3c34d4[_0x679c('0x3b')](_0x679c('0x3c'))&&_0x3c34d4['tag']&&_0x3c34d4[_0x679c('0x3c')]!=='--'){_0xc2dfe5[_0x679c('0xc')]({'type':_0x3c34d4['type'][_0x679c('0x3d')](),'app':_0x679c('0x4'),'appdata':_0x679c('0x3e')+_0x3c34d4['tag'],'context':_0x3bd052[_0x679c('0x6')],'exten':_0x3bd052[_0x679c('0xe')],'priority':_0x3c34d4[_0x679c('0x38')][_0x679c('0x27')]+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});}_0xc2dfe5[_0x679c('0xc')]({'type':_0x3c34d4[_0x679c('0x3')][_0x679c('0x3d')](),'app':_0x679c('0x16'),'appdata':_0x679c('0x3f')+(_0x3c34d4[_0x679c('0x40')]?_0x679c('0x41')+_0x3c34d4[_0x679c('0x40')]+')':'NoOp(No\x20number\x20available)'),'context':_0x3bd052[_0x679c('0x6')],'exten':_0x3bd052['exten'],'priority':_0x3c34d4['intervals'][_0x679c('0x27')]+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});}else{if(_0x3c34d4[_0x679c('0x3b')]('answer')){if(['queue',_0x679c('0x42')][_0x679c('0x43')](_0x3c34d4[_0x679c('0x44')][_0x679c('0x3d')]())&&_0x3c34d4['appType']!==_0x679c('0x45')){if(_0x3c34d4[_0x679c('0x46')]){_0xc2dfe5[_0x679c('0xc')]({'type':_0x3c34d4[_0x679c('0x3')][_0x679c('0x3d')](),'app':_0x679c('0x16'),'appdata':_0x679c('0x47'),'context':_0x3bd052[_0x679c('0x6')],'exten':_0x3bd052['exten'],'priority':_0x3c34d4[_0x679c('0x38')]['length']+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});_0xc2dfe5[_0x679c('0xc')]({'type':_0x3c34d4[_0x679c('0x3')][_0x679c('0x3d')](),'app':_0x679c('0x4'),'appdata':_0x679c('0x48'),'context':_0x3bd052[_0x679c('0x6')],'exten':_0x3bd052[_0x679c('0xe')],'priority':_0x3c34d4['intervals'][_0x679c('0x27')]+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});}else{_0xc2dfe5['push']({'type':_0x3c34d4[_0x679c('0x3')][_0x679c('0x3d')](),'app':_0x679c('0x16'),'appdata':_0x679c('0x49'),'context':_0x3bd052[_0x679c('0x6')],'exten':_0x3bd052[_0x679c('0xe')],'priority':_0x3c34d4[_0x679c('0x38')]['length']+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});_0xc2dfe5['push']({'type':_0x3c34d4[_0x679c('0x3')][_0x679c('0x3d')](),'app':_0x679c('0x4'),'appdata':_0x679c('0x4a'),'context':_0x3bd052['context'],'exten':_0x3bd052['exten'],'priority':_0x3c34d4[_0x679c('0x38')][_0x679c('0x27')]+_0xedfc02+_0x4beaf4++,'VoiceExtensionId':_0x3bd052['id']});}}}}for(var _0x31220a=0x0;_0x31220a<_0x3c34d4[_0x679c('0x38')][_0x679c('0x27')];_0x31220a++){var _0x202b91=_0xedfc02+_0x3c34d4['intervals'][_0x679c('0x27')];var _0x596ad9=_0x31220a===_0x3c34d4['intervals'][_0x679c('0x27')]-0x1?_0xedfc02+_0xc2dfe5[_0x679c('0x27')]+_0x425200['length']+0x2:_0xedfc02+_0x31220a+0x1;_0xc2dfe5[_0x679c('0x4b')](_0x31220a,0x0,{'type':_0x3bd052[_0x679c('0x3')],'app':_0x679c('0x4c'),'appdata':_0x3c34d4[_0x679c('0x38')][_0x31220a]+'?'+_0x3bd052[_0x679c('0x6')]+_0x679c('0x4d')+_0x202b91+':'+_0x3bd052[_0x679c('0x6')]+_0x679c('0x4d')+_0x596ad9,'exten':_0x3bd052['exten'],'context':_0x3bd052[_0x679c('0x6')],'priority':_0xedfc02+_0x31220a,'VoiceExtensionId':_0x3bd052['id']});}if(_0x3c34d4['appType']==='outboundDial')_0x3c34d4[_0x679c('0x4e')]=_0x1fccd8(_0x3bd052,_0x3c34d4[_0x679c('0x4e')]);_0x3c34d4[_0x679c('0x4f')]=_0xc2dfe5['length']?_['last'](_0xc2dfe5)[_0x679c('0x4f')]+0x1:_0xedfc02;_0x4249a0=_[_0x679c('0x50')](_0x4249a0,_0xc2dfe5,[_0x3c34d4],_0x425200);_0xedfc02=_['last'](_0x4249a0)[_0x679c('0x4f')]+0x1;}return _0x275d35(_0x4249a0);})['catch'](function(_0x3a6a67){_0x2306b0(_0x3a6a67);});});}return _0x1de4c6[_0x679c('0x51')]('VoiceExtension',attributes,{'tableName':_0x679c('0x52'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x42f51c){var _0x212c3b=this[_0x679c('0x53')]({'plain':!![]});var _0x3dd52d=_0x212c3b[_0x679c('0x3')]===_0x679c('0x10')?_0x18117f(_0x212c3b):_0x5a2932(_0x212c3b);return _0x17afdb(_0x212c3b,_0x42f51c,_['last'](_0x3dd52d)[_0x679c('0x4f')]+0x1)[_0x679c('0x36')](function(_0x2ecce5){var _0x2b421e=_['concat'](_0x3dd52d,_0x2ecce5);_0x2b421e[_0x679c('0xc')]({'type':_0x212c3b[_0x679c('0x3')],'app':'Hangup','exten':_0x212c3b[_0x679c('0xe')],'context':_0x212c3b[_0x679c('0x6')],'priority':_[_0x679c('0x54')](_0x2b421e)[_0x679c('0x4f')]+0x1,'VoiceExtensionId':_0x212c3b['id']});return _0x2b421e;});}}});};