f40af20d46371f82666fde346d8b3f17febba27c
[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 _0x29e0=['recordingFormat','none','U(xcally-mixmonitor-context)','replace','join','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','CDR(tag)=','toLowerCase','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','includes','app','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice',',${EXTEN},','outboundDial','appdata','priority','last','concat','VoiceExtension','voice_extensions','Hangup','lodash','./voiceExtension.attributes','exports','models','type','context','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','Set','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','timeout','options','url','split','length','name','param','phone','prefix'];(function(_0x48d917,_0x2e2281){var _0x49f324=function(_0x18a96c){while(--_0x18a96c){_0x48d917['push'](_0x48d917['shift']());}};_0x49f324(++_0x2e2281);}(_0x29e0,0x1c8));var _0x029e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x029e('0x0'));var attributes=require(_0x029e('0x1'));module[_0x029e('0x2')]=function(_0x2712d2){var _0xe65a=_0x2712d2[_0x029e('0x3')];function _0x43f715(_0x208ff7){var _0x16358b=0x2;var _0x37ce30=[{'type':_0x208ff7[_0x029e('0x4')],'app':'Set','appdata':'CDR(type)='+_0x208ff7[_0x029e('0x4')],'context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7[_0x029e('0x6')],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']},{'type':_0x208ff7['type'],'app':_0x208ff7[_0x029e('0x7')]?'Set':_0x029e('0x8'),'appdata':_0x208ff7[_0x029e('0x7')]?_0x029e('0x9')+_0x208ff7[_0x029e('0x7')]:_0x029e('0xa'),'context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7['exten'],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']}];if(_0x208ff7[_0x029e('0x4')]===_0x029e('0xb')){_0x37ce30[_0x029e('0xc')]({'type':_0x029e('0xb'),'app':'Set','appdata':_0x029e('0xd')+_0x208ff7['id'],'context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7[_0x029e('0x6')],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']});}_0x37ce30[_0x029e('0xc')]({'type':_0x208ff7[_0x029e('0x4')],'app':_0x029e('0xe'),'appdata':_0x029e('0xf'),'context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7[_0x029e('0x6')],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']},{'type':_0x208ff7['type'],'app':_0x029e('0xe'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7[_0x029e('0x6')],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']},{'type':_0x208ff7[_0x029e('0x4')],'app':_0x029e('0xe'),'appdata':_0x029e('0x10'),'context':_0x208ff7[_0x029e('0x5')],'exten':_0x208ff7[_0x029e('0x6')],'priority':_0x16358b++,'VoiceExtensionId':_0x208ff7['id']});return _0x37ce30;}function _0x50e658(_0x5b1ba0){var _0x13f334=0x2;var _0x30a042=[{'type':'outbound','app':_0x029e('0xe'),'appdata':_0x029e('0x11'),'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0['exten'],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x5b1ba0[_0x029e('0x7')]?_0x029e('0xe'):_0x029e('0x8'),'appdata':_0x5b1ba0[_0x029e('0x7')]?'CDR(routeAlias)='+_0x5b1ba0[_0x029e('0x7')]:'No\x20alias\x20set','context':_0x5b1ba0['context'],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':'outbound','app':_0x029e('0xe'),'appdata':_0x029e('0x13')+(_0x5b1ba0[_0x029e('0x14')]?_0x029e('0x15')+_0x5b1ba0[_0x029e('0x14')]+'}':_0x029e('0x16')),'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0['exten'],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':'outbound','app':_0x029e('0xe'),'appdata':_0x029e('0xd')+_0x5b1ba0['id'],'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0x17'),'appdata':_0x029e('0x18')+(_0x13f334+0x2)+'):Goto('+(_0x13f334+0x1)+')','context':_0x5b1ba0['context'],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0xe'),'appdata':_0x5b1ba0['cutdigits']?_0x029e('0x19')+_0x5b1ba0['cutdigits']+'}':_0x029e('0x1a'),'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0['exten'],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':'Set','appdata':_0x029e('0xf'),'context':_0x5b1ba0['context'],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0xe'),'appdata':_0x029e('0x1b'),'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0['exten'],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0xe'),'appdata':_0x029e('0x10'),'context':_0x5b1ba0['context'],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0xe'),'appdata':_0x029e('0x1c')+_0x5b1ba0['id'],'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']}];if(_0x5b1ba0[_0x029e('0x1d')]('recordingFormat')&&_0x5b1ba0['recordingFormat']!=='none'){_0x30a042[_0x029e('0xc')]({'type':'outbound','app':'Set','appdata':_0x029e('0x1e'),'context':_0x5b1ba0[_0x029e('0x5')],'exten':_0x5b1ba0['exten'],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']},{'type':_0x029e('0x12'),'app':_0x029e('0xe'),'appdata':_0x029e('0x1f')+_0x5b1ba0['recordingFormat']||'wav','context':_0x5b1ba0['context'],'exten':_0x5b1ba0[_0x029e('0x6')],'priority':_0x13f334++,'VoiceExtensionId':_0x5b1ba0['id']});}return _0x30a042;}function _0x527340(_0x2bca44,_0x4fe894){var _0x1f6bd6=[{'name':_0x029e('0x20'),'param':0x0},{'name':_0x029e('0x21'),'param':0x1},{'name':_0x029e('0x22'),'param':0x2},{'name':_0x029e('0x23'),'param':0x3}];var _0x34796f={};var _0x397d25=_0x4fe894[_0x029e('0x24')](',');var _0x3841f6=[];for(var _0x4ef85d=0x0;_0x4ef85d<_0x1f6bd6[_0x029e('0x25')];_0x4ef85d++){switch(_0x1f6bd6[_0x4ef85d][_0x029e('0x26')]){case _0x029e('0x20'):_0x34796f[_0x029e('0x20')]=_0x397d25[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]]['split']('/')[0x1];_0x34796f[_0x029e('0x28')]=_0x397d25[_0x1f6bd6[_0x4ef85d]['param']][_0x029e('0x24')]('/')[0x2];_0x34796f[_0x029e('0x29')]=_0x34796f[_0x029e('0x28')]?_0x34796f[_0x029e('0x28')][_0x029e('0x24')]('$')[0x0]:undefined;_0x34796f[_0x029e('0x28')]=_0x2bca44[_0x029e('0x14')]?(_0x34796f[_0x029e('0x29')]||'')+_0x029e('0x15')+_0x2bca44[_0x029e('0x14')]+'}':(_0x34796f['prefix']||'')+'${EXTEN}';_0x3841f6[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]]=['SIP',_0x34796f['trunk'],_0x34796f[_0x029e('0x28')]]['join']('/');break;case _0x029e('0x22'):_0x34796f[_0x029e('0x22')]=_0x397d25[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]];if(_0x2bca44[_0x029e('0x2a')]!==_0x029e('0x2b')){if(_0x34796f['options']['indexOf'](_0x029e('0x2c'))<0x0){_0x34796f['options']+='U(xcally-mixmonitor-context)';}}else{_0x34796f[_0x029e('0x22')]=_0x34796f[_0x029e('0x22')][_0x029e('0x2d')](_0x029e('0x2c'),'');}_0x3841f6[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]]=_0x34796f['options'];break;default:_0x3841f6[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]]=_0x397d25[_0x1f6bd6[_0x4ef85d][_0x029e('0x27')]];}}return _0x3841f6[_0x029e('0x2e')](',');}function _0x1a1578(_0x5e82e8,_0x5207b6,_0x23466b){return new Promise(function(_0x33ee02,_0x2f7c7f){var _0x3e3d5b=[];if(_['isEmpty'](_0x5207b6))return _0x33ee02(_0x3e3d5b);_0xe65a[_0x029e('0x2f')][_0x029e('0x30')]({'attributes':['id',_0x029e('0x31'),_0x029e('0x32')],'raw':!![]})[_0x029e('0x33')](function(_0x18e16c){for(var _0x2f5a10=0x0,_0x262a1f=0x0;_0x2f5a10<_0x5207b6['length'];_0x2f5a10++,_0x262a1f=0x0){var _0x281c1b=_0x5207b6[_0x2f5a10];var _0x4893ff=[];var _0x3aa244=[];delete _0x281c1b['id'];if(_0x281c1b['interval']!==_0x029e('0x34')){_0x281c1b[_0x029e('0x35')]=[_0x281c1b[_0x029e('0x31')]];}else{_0x281c1b[_0x029e('0x35')]=_0x281c1b[_0x029e('0x32')]?_[_0x029e('0x36')](_[_0x029e('0x37')](_0x18e16c,{'IntervalId':_0x281c1b[_0x029e('0x32')]}),_0x029e('0x31')):[];}_0x281c1b[_0x029e('0x5')]=_0x5e82e8['context'];_0x281c1b[_0x029e('0x6')]=_0x5e82e8[_0x029e('0x6')];if(_0x281c1b[_0x029e('0x4')])_0x281c1b[_0x029e('0x4')]=_0x281c1b['type']['toLowerCase']();if(_0x5e82e8[_0x029e('0x4')]===_0x029e('0x12')){if(_0x281c1b[_0x029e('0x1d')](_0x029e('0x38'))&&_0x281c1b['tag']&&_0x281c1b['tag']!=='--'){_0x4893ff['push']({'type':_0x281c1b[_0x029e('0x4')]['toLowerCase'](),'app':'Set','appdata':_0x029e('0x39')+_0x281c1b['tag'],'context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8[_0x029e('0x6')],'priority':_0x281c1b[_0x029e('0x35')][_0x029e('0x25')]+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});}_0x4893ff[_0x029e('0xc')]({'type':_0x281c1b['type'][_0x029e('0x3a')](),'app':_0x029e('0x17'),'appdata':_0x029e('0x3b')+(_0x281c1b[_0x029e('0x3c')]?_0x029e('0x3d')+_0x281c1b['callerID']+')':_0x029e('0x3e')),'context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8[_0x029e('0x6')],'priority':_0x281c1b[_0x029e('0x35')][_0x029e('0x25')]+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});}else{if(_0x281c1b[_0x029e('0x1d')]('answer')){if([_0x029e('0x3f'),_0x029e('0x40')][_0x029e('0x41')](_0x281c1b[_0x029e('0x42')]['toLowerCase']())&&_0x281c1b[_0x029e('0x43')]!==_0x029e('0x44')){if(_0x281c1b[_0x029e('0x45')]){_0x4893ff['push']({'type':_0x281c1b[_0x029e('0x4')][_0x029e('0x3a')](),'app':_0x029e('0x17'),'appdata':_0x029e('0x46'),'context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8[_0x029e('0x6')],'priority':_0x281c1b['intervals'][_0x029e('0x25')]+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});_0x4893ff[_0x029e('0xc')]({'type':_0x281c1b[_0x029e('0x4')]['toLowerCase'](),'app':_0x029e('0xe'),'appdata':_0x029e('0x47'),'context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8['exten'],'priority':_0x281c1b[_0x029e('0x35')][_0x029e('0x25')]+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});}else{_0x4893ff[_0x029e('0xc')]({'type':_0x281c1b['type'][_0x029e('0x3a')](),'app':_0x029e('0x17'),'appdata':_0x029e('0x48'),'context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8['exten'],'priority':_0x281c1b[_0x029e('0x35')]['length']+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});_0x4893ff[_0x029e('0xc')]({'type':_0x281c1b[_0x029e('0x4')][_0x029e('0x3a')](),'app':_0x029e('0xe'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x5e82e8[_0x029e('0x5')],'exten':_0x5e82e8['exten'],'priority':_0x281c1b[_0x029e('0x35')][_0x029e('0x25')]+_0x23466b+_0x262a1f++,'VoiceExtensionId':_0x5e82e8['id']});}}}}for(var _0x2617b2=0x0;_0x2617b2<_0x281c1b[_0x029e('0x35')][_0x029e('0x25')];_0x2617b2++){var _0x15e5d2=_0x23466b+_0x281c1b[_0x029e('0x35')][_0x029e('0x25')];var _0x2cb289=_0x2617b2===_0x281c1b[_0x029e('0x35')][_0x029e('0x25')]-0x1?_0x23466b+_0x4893ff['length']+_0x3aa244[_0x029e('0x25')]+0x2:_0x23466b+_0x2617b2+0x1;_0x4893ff[_0x029e('0x49')](_0x2617b2,0x0,{'type':_0x5e82e8[_0x029e('0x4')],'app':'GotoIfTime','appdata':_0x281c1b[_0x029e('0x35')][_0x2617b2]+'?'+_0x5e82e8['context']+_0x029e('0x4a')+_0x15e5d2+':'+_0x5e82e8[_0x029e('0x5')]+',${EXTEN},'+_0x2cb289,'exten':_0x5e82e8[_0x029e('0x6')],'context':_0x5e82e8[_0x029e('0x5')],'priority':_0x23466b+_0x2617b2,'VoiceExtensionId':_0x5e82e8['id']});}if(_0x281c1b['appType']===_0x029e('0x4b'))_0x281c1b[_0x029e('0x4c')]=_0x527340(_0x5e82e8,_0x281c1b[_0x029e('0x4c')]);_0x281c1b[_0x029e('0x4d')]=_0x4893ff[_0x029e('0x25')]?_[_0x029e('0x4e')](_0x4893ff)[_0x029e('0x4d')]+0x1:_0x23466b;_0x3e3d5b=_[_0x029e('0x4f')](_0x3e3d5b,_0x4893ff,[_0x281c1b],_0x3aa244);_0x23466b=_['last'](_0x3e3d5b)['priority']+0x1;}return _0x33ee02(_0x3e3d5b);})['catch'](function(_0x2db526){_0x2f7c7f(_0x2db526);});});}return _0x2712d2['define'](_0x029e('0x50'),attributes,{'tableName':_0x029e('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x180e7f){var _0x1e6400=this['get']({'plain':!![]});var _0x4f075f=_0x1e6400[_0x029e('0x4')]===_0x029e('0x12')?_0x50e658(_0x1e6400):_0x43f715(_0x1e6400);return _0x1a1578(_0x1e6400,_0x180e7f,_[_0x029e('0x4e')](_0x4f075f)['priority']+0x1)['then'](function(_0x327d68){var _0x54a590=_[_0x029e('0x4f')](_0x4f075f,_0x327d68);_0x54a590[_0x029e('0xc')]({'type':_0x1e6400[_0x029e('0x4')],'app':_0x029e('0x52'),'exten':_0x1e6400['exten'],'context':_0x1e6400['context'],'priority':_[_0x029e('0x4e')](_0x54a590)[_0x029e('0x4d')]+0x1,'VoiceExtensionId':_0x1e6400['id']});return _0x54a590;});}}});};