278b79854ff82f8fbf6839190824d217302d7c62
[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 _0x7aaa=['get','priority','then','Hangup','lodash','exports','type','Set','CDR(type)=','context','exten','alias','NoOp','No\x20alias\x20set','inbound','CDR(routeid)=','push','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(routeAlias)=','CDR(destination)=','cutdigits','${EXTEN}','):Goto(','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','options','url','length','name','param','split','phone','prefix','${EXTEN:','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','queue','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},','appType','outboundDial','appdata','last','concat','catch','define','VoiceExtension','voice_extensions'];(function(_0x325e04,_0x441a7e){var _0x147bd3=function(_0x19979e){while(--_0x19979e){_0x325e04['push'](_0x325e04['shift']());}};_0x147bd3(++_0x441a7e);}(_0x7aaa,0x164));var _0xa7aa=function(_0x11b437,_0x47e6f7){_0x11b437=_0x11b437-0x0;var _0x2c2b82=_0x7aaa[_0x11b437];return _0x2c2b82;};'use strict';var _=require(_0xa7aa('0x0'));var attributes=require('./voiceExtension.attributes');module[_0xa7aa('0x1')]=function(_0x903656){var _0x225c5c=_0x903656['models'];function _0x1fbfd6(_0x2f507e){var _0x1d1dec=0x2;var _0x56f65d=[{'type':_0x2f507e[_0xa7aa('0x2')],'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0x4')+_0x2f507e[_0xa7aa('0x2')],'context':_0x2f507e[_0xa7aa('0x5')],'exten':_0x2f507e[_0xa7aa('0x6')],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']},{'type':_0x2f507e['type'],'app':_0x2f507e[_0xa7aa('0x7')]?_0xa7aa('0x3'):_0xa7aa('0x8'),'appdata':_0x2f507e[_0xa7aa('0x7')]?'CDR(routeAlias)='+_0x2f507e['alias']:_0xa7aa('0x9'),'context':_0x2f507e[_0xa7aa('0x5')],'exten':_0x2f507e[_0xa7aa('0x6')],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']}];if(_0x2f507e[_0xa7aa('0x2')]===_0xa7aa('0xa')){_0x56f65d['push']({'type':'inbound','app':'Set','appdata':_0xa7aa('0xb')+_0x2f507e['id'],'context':_0x2f507e['context'],'exten':_0x2f507e['exten'],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']});}_0x56f65d[_0xa7aa('0xc')]({'type':_0x2f507e[_0xa7aa('0x2')],'app':_0xa7aa('0x3'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x2f507e[_0xa7aa('0x5')],'exten':_0x2f507e['exten'],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']},{'type':_0x2f507e[_0xa7aa('0x2')],'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0xd'),'context':_0x2f507e[_0xa7aa('0x5')],'exten':_0x2f507e['exten'],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']},{'type':_0x2f507e['type'],'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0xe'),'context':_0x2f507e['context'],'exten':_0x2f507e['exten'],'priority':_0x1d1dec++,'VoiceExtensionId':_0x2f507e['id']});return _0x56f65d;}function _0x8b74c9(_0x196e4c){var _0xdf1a0b=0x2;var _0x14687c=[{'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0x10'),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c['exten'],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':_0x196e4c[_0xa7aa('0x7')]?_0xa7aa('0x3'):_0xa7aa('0x8'),'appdata':_0x196e4c[_0xa7aa('0x7')]?_0xa7aa('0x11')+_0x196e4c[_0xa7aa('0x7')]:'No\x20alias\x20set','context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':'outbound','app':'Set','appdata':_0xa7aa('0x12')+(_0x196e4c['cutdigits']?'${EXTEN:'+_0x196e4c[_0xa7aa('0x13')]+'}':_0xa7aa('0x14')),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':'CDR(routeid)='+_0x196e4c['id'],'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0xdf1a0b+0x2)+_0xa7aa('0x15')+(_0xdf1a0b+0x1)+')','context':_0x196e4c['context'],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':_0x196e4c[_0xa7aa('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x196e4c['cutdigits']+'}':_0xa7aa('0x16'),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c['exten'],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':'Set','appdata':_0xa7aa('0x17'),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0xd'),'context':_0x196e4c['context'],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0xe'),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c['exten'],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':'Set','appdata':_0xa7aa('0x18')+_0x196e4c['id'],'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']}];if(_0x196e4c[_0xa7aa('0x19')](_0xa7aa('0x1a'))&&_0x196e4c[_0xa7aa('0x1a')]!==_0xa7aa('0x1b')){_0x14687c[_0xa7aa('0xc')]({'type':_0xa7aa('0xf'),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0x1c'),'context':_0x196e4c[_0xa7aa('0x5')],'exten':_0x196e4c[_0xa7aa('0x6')],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']},{'type':_0xa7aa('0xf'),'app':'Set','appdata':_0xa7aa('0x1d')+_0x196e4c['recordingFormat']||_0xa7aa('0x1e'),'context':_0x196e4c['context'],'exten':_0x196e4c['exten'],'priority':_0xdf1a0b++,'VoiceExtensionId':_0x196e4c['id']});}return _0x14687c;}function _0x90edf4(_0x570a8c,_0x2b6233){var _0x191f4e=[{'name':_0xa7aa('0x1f'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0xa7aa('0x20'),'param':0x2},{'name':_0xa7aa('0x21'),'param':0x3}];var _0x30648b={};var _0xd80141=_0x2b6233['split'](',');var _0x56740f=[];for(var _0x4999fa=0x0;_0x4999fa<_0x191f4e[_0xa7aa('0x22')];_0x4999fa++){switch(_0x191f4e[_0x4999fa][_0xa7aa('0x23')]){case _0xa7aa('0x1f'):_0x30648b[_0xa7aa('0x1f')]=_0xd80141[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]][_0xa7aa('0x25')]('/')[0x1];_0x30648b[_0xa7aa('0x26')]=_0xd80141[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]][_0xa7aa('0x25')]('/')[0x2];_0x30648b[_0xa7aa('0x27')]=_0x30648b[_0xa7aa('0x26')]?_0x30648b[_0xa7aa('0x26')][_0xa7aa('0x25')]('$')[0x0]:undefined;_0x30648b[_0xa7aa('0x26')]=_0x570a8c['cutdigits']?(_0x30648b[_0xa7aa('0x27')]||'')+_0xa7aa('0x28')+_0x570a8c[_0xa7aa('0x13')]+'}':(_0x30648b['prefix']||'')+'${EXTEN}';_0x56740f[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]]=[_0xa7aa('0x29'),_0x30648b['trunk'],_0x30648b[_0xa7aa('0x26')]][_0xa7aa('0x2a')]('/');break;case'options':_0x30648b[_0xa7aa('0x20')]=_0xd80141[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]];if(_0x570a8c[_0xa7aa('0x1a')]!==_0xa7aa('0x1b')){if(_0x30648b[_0xa7aa('0x20')][_0xa7aa('0x2b')]('U(xcally-mixmonitor-context)')<0x0){_0x30648b[_0xa7aa('0x20')]+=_0xa7aa('0x2c');}}else{_0x30648b[_0xa7aa('0x20')]=_0x30648b[_0xa7aa('0x20')][_0xa7aa('0x2d')](_0xa7aa('0x2c'),'');}_0x56740f[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]]=_0x30648b[_0xa7aa('0x20')];break;default:_0x56740f[_0x191f4e[_0x4999fa]['param']]=_0xd80141[_0x191f4e[_0x4999fa][_0xa7aa('0x24')]];}}return _0x56740f['join'](',');}function _0x469659(_0x23011b,_0x231b97,_0x2c2829){return new Promise(function(_0x3c99c2,_0x26f8e5){var _0x1a2a5f=[];if(_[_0xa7aa('0x2e')](_0x231b97))return _0x3c99c2(_0x1a2a5f);_0x225c5c[_0xa7aa('0x2f')][_0xa7aa('0x30')]({'attributes':['id',_0xa7aa('0x31'),_0xa7aa('0x32')],'raw':!![]})['then'](function(_0x4db62d){for(var _0xf0bf25=0x0,_0x557fc3=0x0;_0xf0bf25<_0x231b97['length'];_0xf0bf25++,_0x557fc3=0x0){var _0x2ff162=_0x231b97[_0xf0bf25];var _0x572362=[];var _0x6ba0da=[];delete _0x2ff162['id'];if(_0x2ff162[_0xa7aa('0x31')]!==_0xa7aa('0x33')){_0x2ff162[_0xa7aa('0x34')]=[_0x2ff162[_0xa7aa('0x31')]];}else{_0x2ff162[_0xa7aa('0x34')]=_0x2ff162[_0xa7aa('0x32')]?_[_0xa7aa('0x35')](_[_0xa7aa('0x36')](_0x4db62d,{'IntervalId':_0x2ff162[_0xa7aa('0x32')]}),_0xa7aa('0x31')):[];}_0x2ff162[_0xa7aa('0x5')]=_0x23011b[_0xa7aa('0x5')];_0x2ff162['exten']=_0x23011b['exten'];if(_0x2ff162[_0xa7aa('0x2')])_0x2ff162['type']=_0x2ff162[_0xa7aa('0x2')][_0xa7aa('0x37')]();if(_0x23011b['type']===_0xa7aa('0xf')){if(_0x2ff162['hasOwnProperty'](_0xa7aa('0x38'))&&_0x2ff162['tag']&&_0x2ff162[_0xa7aa('0x38')]!=='--'){_0x572362[_0xa7aa('0xc')]({'type':_0x2ff162[_0xa7aa('0x2')][_0xa7aa('0x37')](),'app':'Set','appdata':_0xa7aa('0x39')+_0x2ff162['tag'],'context':_0x23011b[_0xa7aa('0x5')],'exten':_0x23011b[_0xa7aa('0x6')],'priority':_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')]+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});}_0x572362['push']({'type':_0x2ff162[_0xa7aa('0x2')][_0xa7aa('0x37')](),'app':_0xa7aa('0x3a'),'appdata':_0xa7aa('0x3b')+(_0x2ff162[_0xa7aa('0x3c')]?_0xa7aa('0x3d')+_0x2ff162[_0xa7aa('0x3c')]+')':'NoOp(No\x20number\x20available)'),'context':_0x23011b['context'],'exten':_0x23011b['exten'],'priority':_0x2ff162['intervals'][_0xa7aa('0x22')]+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});}else{if(_0x2ff162['hasOwnProperty']('answer')){if([_0xa7aa('0x3e'),_0xa7aa('0x3f')][_0xa7aa('0x40')](_0x2ff162[_0xa7aa('0x41')][_0xa7aa('0x37')]())&&_0x2ff162['appType']!==_0xa7aa('0x42')){if(_0x2ff162[_0xa7aa('0x43')]){_0x572362[_0xa7aa('0xc')]({'type':_0x2ff162['type'][_0xa7aa('0x37')](),'app':'ExecIf','appdata':_0xa7aa('0x44'),'context':_0x23011b[_0xa7aa('0x5')],'exten':_0x23011b['exten'],'priority':_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')]+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});_0x572362['push']({'type':_0x2ff162['type']['toLowerCase'](),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0x45'),'context':_0x23011b['context'],'exten':_0x23011b[_0xa7aa('0x6')],'priority':_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')]+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});}else{_0x572362['push']({'type':_0x2ff162['type'][_0xa7aa('0x37')](),'app':_0xa7aa('0x3a'),'appdata':_0xa7aa('0x46'),'context':_0x23011b[_0xa7aa('0x5')],'exten':_0x23011b[_0xa7aa('0x6')],'priority':_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')]+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});_0x572362['push']({'type':_0x2ff162[_0xa7aa('0x2')][_0xa7aa('0x37')](),'app':_0xa7aa('0x3'),'appdata':_0xa7aa('0x47'),'context':_0x23011b[_0xa7aa('0x5')],'exten':_0x23011b[_0xa7aa('0x6')],'priority':_0x2ff162[_0xa7aa('0x34')]['length']+_0x2c2829+_0x557fc3++,'VoiceExtensionId':_0x23011b['id']});}}}}for(var _0x26d0c4=0x0;_0x26d0c4<_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')];_0x26d0c4++){var _0x5c06b1=_0x2c2829+_0x2ff162['intervals'][_0xa7aa('0x22')];var _0x280295=_0x26d0c4===_0x2ff162[_0xa7aa('0x34')][_0xa7aa('0x22')]-0x1?_0x2c2829+_0x572362[_0xa7aa('0x22')]+_0x6ba0da['length']+0x2:_0x2c2829+_0x26d0c4+0x1;_0x572362[_0xa7aa('0x48')](_0x26d0c4,0x0,{'type':_0x23011b[_0xa7aa('0x2')],'app':_0xa7aa('0x49'),'appdata':_0x2ff162['intervals'][_0x26d0c4]+'?'+_0x23011b[_0xa7aa('0x5')]+_0xa7aa('0x4a')+_0x5c06b1+':'+_0x23011b[_0xa7aa('0x5')]+',${EXTEN},'+_0x280295,'exten':_0x23011b['exten'],'context':_0x23011b[_0xa7aa('0x5')],'priority':_0x2c2829+_0x26d0c4,'VoiceExtensionId':_0x23011b['id']});}if(_0x2ff162[_0xa7aa('0x4b')]===_0xa7aa('0x4c'))_0x2ff162['appdata']=_0x90edf4(_0x23011b,_0x2ff162[_0xa7aa('0x4d')]);_0x2ff162['priority']=_0x572362[_0xa7aa('0x22')]?_[_0xa7aa('0x4e')](_0x572362)['priority']+0x1:_0x2c2829;_0x1a2a5f=_[_0xa7aa('0x4f')](_0x1a2a5f,_0x572362,[_0x2ff162],_0x6ba0da);_0x2c2829=_[_0xa7aa('0x4e')](_0x1a2a5f)['priority']+0x1;}return _0x3c99c2(_0x1a2a5f);})[_0xa7aa('0x50')](function(_0x39872d){_0x26f8e5(_0x39872d);});});}return _0x903656[_0xa7aa('0x51')](_0xa7aa('0x52'),attributes,{'tableName':_0xa7aa('0x53'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x48396c){var _0x247d1e=this[_0xa7aa('0x54')]({'plain':!![]});var _0x56518b=_0x247d1e[_0xa7aa('0x2')]===_0xa7aa('0xf')?_0x8b74c9(_0x247d1e):_0x1fbfd6(_0x247d1e);return _0x469659(_0x247d1e,_0x48396c,_[_0xa7aa('0x4e')](_0x56518b)[_0xa7aa('0x55')]+0x1)[_0xa7aa('0x56')](function(_0x24cd06){var _0x2b4d88=_['concat'](_0x56518b,_0x24cd06);_0x2b4d88[_0xa7aa('0xc')]({'type':_0x247d1e[_0xa7aa('0x2')],'app':_0xa7aa('0x57'),'exten':_0x247d1e[_0xa7aa('0x6')],'context':_0x247d1e['context'],'priority':_[_0xa7aa('0x4e')](_0x2b4d88)[_0xa7aa('0x55')]+0x1,'VoiceExtensionId':_0x247d1e['id']});return _0x2b4d88;});}}});};