51739ea55a01124d1d9785f3260b3f03e5abb917
[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 _0x8e69=['tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','answer','queue','playback','includes','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','outboundDial','appdata','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','priority','concat','last','catch','define','voice_extensions','then','Hangup','./voiceExtension.attributes','exports','models','Set','CDR(type)=','type','context','inbound','push','CDR(routeid)=','exten','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','name','param','split','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','length','*,*,*,*','intervals','map','filter','toLowerCase'];(function(_0x3b8e27,_0x5cd428){var _0x120592=function(_0x92c062){while(--_0x92c062){_0x3b8e27['push'](_0x3b8e27['shift']());}};_0x120592(++_0x5cd428);}(_0x8e69,0x111));var _0x98e6=function(_0x4365ea,_0x1d67f6){_0x4365ea=_0x4365ea-0x0;var _0x362b63=_0x8e69[_0x4365ea];return _0x362b63;};'use strict';var _=require('lodash');var attributes=require(_0x98e6('0x0'));module[_0x98e6('0x1')]=function(_0x3ba70e){var _0x24b05c=_0x3ba70e[_0x98e6('0x2')];function _0x27e5d9(_0x1fb38f){var _0x5680c1=0x2;var _0x3b92a3=[{'type':_0x1fb38f['type'],'app':_0x98e6('0x3'),'appdata':_0x98e6('0x4')+_0x1fb38f[_0x98e6('0x5')],'context':_0x1fb38f[_0x98e6('0x6')],'exten':_0x1fb38f['exten'],'priority':_0x5680c1++,'VoiceExtensionId':_0x1fb38f['id']}];if(_0x1fb38f['type']===_0x98e6('0x7')){_0x3b92a3[_0x98e6('0x8')]({'type':_0x98e6('0x7'),'app':'Set','appdata':_0x98e6('0x9')+_0x1fb38f['id'],'context':_0x1fb38f[_0x98e6('0x6')],'exten':_0x1fb38f[_0x98e6('0xa')],'priority':_0x5680c1++,'VoiceExtensionId':_0x1fb38f['id']});}_0x3b92a3[_0x98e6('0x8')]({'type':_0x1fb38f[_0x98e6('0x5')],'app':_0x98e6('0x3'),'appdata':_0x98e6('0xb'),'context':_0x1fb38f[_0x98e6('0x6')],'exten':_0x1fb38f[_0x98e6('0xa')],'priority':_0x5680c1++,'VoiceExtensionId':_0x1fb38f['id']},{'type':_0x1fb38f[_0x98e6('0x5')],'app':'Set','appdata':_0x98e6('0xc'),'context':_0x1fb38f[_0x98e6('0x6')],'exten':_0x1fb38f[_0x98e6('0xa')],'priority':_0x5680c1++,'VoiceExtensionId':_0x1fb38f['id']},{'type':_0x1fb38f[_0x98e6('0x5')],'app':_0x98e6('0x3'),'appdata':_0x98e6('0xd'),'context':_0x1fb38f[_0x98e6('0x6')],'exten':_0x1fb38f[_0x98e6('0xa')],'priority':_0x5680c1++,'VoiceExtensionId':_0x1fb38f['id']});return _0x3b92a3;}function _0x8a5291(_0x4cd069){var _0x3fa873=0x2;var _0x1fa0b5=[{'type':'outbound','app':_0x98e6('0x3'),'appdata':_0x98e6('0xe'),'context':_0x4cd069['context'],'exten':_0x4cd069['exten'],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x10')+(_0x4cd069[_0x98e6('0x11')]?_0x98e6('0x12')+_0x4cd069[_0x98e6('0x11')]+'}':_0x98e6('0x13')),'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':'Set','appdata':_0x98e6('0x9')+_0x4cd069['id'],'context':_0x4cd069['context'],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x14'),'appdata':_0x98e6('0x15')+(_0x3fa873+0x2)+_0x98e6('0x16')+(_0x3fa873+0x1)+')','context':_0x4cd069['context'],'exten':_0x4cd069['exten'],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x4cd069['cutdigits']?_0x98e6('0x17')+_0x4cd069[_0x98e6('0x11')]+'}':'CDR(prefix)=noprefix','context':_0x4cd069['context'],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':'Set','appdata':_0x98e6('0xb'),'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069['exten'],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x98e6('0xc'),'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069['exten'],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':'outbound','app':_0x98e6('0x3'),'appdata':_0x98e6('0xd'),'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x18')+_0x4cd069['id'],'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']}];if(_0x4cd069[_0x98e6('0x19')](_0x98e6('0x1a'))&&_0x4cd069[_0x98e6('0x1a')]!==_0x98e6('0x1b')){_0x1fa0b5[_0x98e6('0x8')]({'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x1c'),'context':_0x4cd069['context'],'exten':_0x4cd069['exten'],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']},{'type':_0x98e6('0xf'),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x1d')+_0x4cd069[_0x98e6('0x1a')]||_0x98e6('0x1e'),'context':_0x4cd069[_0x98e6('0x6')],'exten':_0x4cd069[_0x98e6('0xa')],'priority':_0x3fa873++,'VoiceExtensionId':_0x4cd069['id']});}return _0x1fa0b5;}function _0x41f573(_0x4920cf,_0x5a2357){var _0x1eed08=[{'name':_0x98e6('0x1f'),'param':0x0},{'name':_0x98e6('0x20'),'param':0x1},{'name':_0x98e6('0x21'),'param':0x2},{'name':_0x98e6('0x22'),'param':0x3}];var _0x5d0232={};var _0xc02e73=_0x5a2357['split'](',');var _0x3f55db=[];for(var _0xb11748=0x0;_0xb11748<_0x1eed08['length'];_0xb11748++){switch(_0x1eed08[_0xb11748][_0x98e6('0x23')]){case'trunk':_0x5d0232[_0x98e6('0x1f')]=_0xc02e73[_0x1eed08[_0xb11748][_0x98e6('0x24')]][_0x98e6('0x25')]('/')[0x1];_0x5d0232[_0x98e6('0x26')]=_0xc02e73[_0x1eed08[_0xb11748]['param']][_0x98e6('0x25')]('/')[0x2];_0x5d0232['prefix']=_0x5d0232[_0x98e6('0x26')]?_0x5d0232[_0x98e6('0x26')][_0x98e6('0x25')]('$')[0x0]:undefined;_0x5d0232['phone']=_0x4920cf[_0x98e6('0x11')]?(_0x5d0232['prefix']||'')+_0x98e6('0x12')+_0x4920cf[_0x98e6('0x11')]+'}':(_0x5d0232[_0x98e6('0x27')]||'')+'${EXTEN}';_0x3f55db[_0x1eed08[_0xb11748]['param']]=[_0x98e6('0x28'),_0x5d0232[_0x98e6('0x1f')],_0x5d0232[_0x98e6('0x26')]][_0x98e6('0x29')]('/');break;case _0x98e6('0x21'):_0x5d0232[_0x98e6('0x21')]=_0xc02e73[_0x1eed08[_0xb11748][_0x98e6('0x24')]];if(_0x4920cf[_0x98e6('0x1a')]!==_0x98e6('0x1b')){if(_0x5d0232[_0x98e6('0x21')][_0x98e6('0x2a')](_0x98e6('0x2b'))<0x0){_0x5d0232[_0x98e6('0x21')]+='U(xcally-mixmonitor-context)';}}else{_0x5d0232['options']=_0x5d0232[_0x98e6('0x21')]['replace'](_0x98e6('0x2b'),'');}_0x3f55db[_0x1eed08[_0xb11748][_0x98e6('0x24')]]=_0x5d0232['options'];break;default:_0x3f55db[_0x1eed08[_0xb11748]['param']]=_0xc02e73[_0x1eed08[_0xb11748][_0x98e6('0x24')]];}}return _0x3f55db[_0x98e6('0x29')](',');}function _0x32d45a(_0x5b5460,_0x3a6db2,_0x112535){return new Promise(function(_0x54a824,_0x4627a4){var _0x28abf7=[];if(_[_0x98e6('0x2c')](_0x3a6db2))return _0x54a824(_0x28abf7);_0x24b05c[_0x98e6('0x2d')][_0x98e6('0x2e')]({'attributes':['id',_0x98e6('0x2f'),_0x98e6('0x30')],'raw':!![]})['then'](function(_0xd2545f){for(var _0x69c979=0x0,_0x284f8b=0x0;_0x69c979<_0x3a6db2[_0x98e6('0x31')];_0x69c979++,_0x284f8b=0x0){var _0x5e9414=_0x3a6db2[_0x69c979];var _0x545796=[];var _0xc4d87b=[];delete _0x5e9414['id'];if(_0x5e9414[_0x98e6('0x2f')]!==_0x98e6('0x32')){_0x5e9414['intervals']=[_0x5e9414[_0x98e6('0x2f')]];}else{_0x5e9414[_0x98e6('0x33')]=_0x5e9414['IntervalId']?_[_0x98e6('0x34')](_[_0x98e6('0x35')](_0xd2545f,{'IntervalId':_0x5e9414[_0x98e6('0x30')]}),_0x98e6('0x2f')):[];}_0x5e9414['context']=_0x5b5460[_0x98e6('0x6')];_0x5e9414[_0x98e6('0xa')]=_0x5b5460[_0x98e6('0xa')];if(_0x5e9414['type'])_0x5e9414[_0x98e6('0x5')]=_0x5e9414[_0x98e6('0x5')][_0x98e6('0x36')]();if(_0x5b5460[_0x98e6('0x5')]===_0x98e6('0xf')){if(_0x5e9414[_0x98e6('0x19')]('tag')&&_0x5e9414[_0x98e6('0x37')]&&_0x5e9414[_0x98e6('0x37')]!=='--'){_0x545796['push']({'type':_0x5e9414[_0x98e6('0x5')]['toLowerCase'](),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x38')+_0x5e9414[_0x98e6('0x37')],'context':_0x5b5460['context'],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});}_0x545796[_0x98e6('0x8')]({'type':_0x5e9414[_0x98e6('0x5')][_0x98e6('0x36')](),'app':_0x98e6('0x14'),'appdata':_0x98e6('0x39')+(_0x5e9414[_0x98e6('0x3a')]?'Set(CALLERID(all)='+_0x5e9414[_0x98e6('0x3a')]+')':'NoOp(No\x20number\x20available)'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});}else{if(_0x5e9414[_0x98e6('0x19')](_0x98e6('0x3b'))){if([_0x98e6('0x3c'),_0x98e6('0x3d')][_0x98e6('0x3e')](_0x5e9414[_0x98e6('0x3f')][_0x98e6('0x36')]())&&_0x5e9414[_0x98e6('0x40')]!=='custom'){if(_0x5e9414['answer']){_0x545796[_0x98e6('0x8')]({'type':_0x5e9414['type'][_0x98e6('0x36')](),'app':_0x98e6('0x14'),'appdata':_0x98e6('0x41'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});_0x545796[_0x98e6('0x8')]({'type':_0x5e9414[_0x98e6('0x5')]['toLowerCase'](),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x42'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460['exten'],'priority':_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});}else{_0x545796[_0x98e6('0x8')]({'type':_0x5e9414[_0x98e6('0x5')]['toLowerCase'](),'app':_0x98e6('0x14'),'appdata':_0x98e6('0x43'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')]['length']+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});_0x545796['push']({'type':_0x5e9414['type'][_0x98e6('0x36')](),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x44'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});}}}}for(var _0x18669f=0x0;_0x18669f<_0x5e9414[_0x98e6('0x33')]['length'];_0x18669f++){var _0x396cd9=_0x112535+_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')];var _0x480d1b=_0x18669f===_0x5e9414[_0x98e6('0x33')][_0x98e6('0x31')]-0x1?_0x112535+_0x545796[_0x98e6('0x31')]+_0xc4d87b[_0x98e6('0x31')]+0x2:_0x112535+_0x18669f+0x1;_0x545796['splice'](_0x18669f,0x0,{'type':_0x5b5460[_0x98e6('0x5')],'app':'GotoIfTime','appdata':_0x5e9414[_0x98e6('0x33')][_0x18669f]+'?'+_0x5b5460[_0x98e6('0x6')]+_0x98e6('0x45')+_0x396cd9+':'+_0x5b5460[_0x98e6('0x6')]+_0x98e6('0x45')+_0x480d1b,'exten':_0x5b5460['exten'],'context':_0x5b5460[_0x98e6('0x6')],'priority':_0x112535+_0x18669f,'VoiceExtensionId':_0x5b5460['id']});}if(_0x5e9414[_0x98e6('0x40')]===_0x98e6('0x46')){_0x5e9414[_0x98e6('0x47')]=_0x41f573(_0x5b5460,_0x5e9414[_0x98e6('0x47')]);}if(_0x5e9414[_0x98e6('0x40')]===_0x98e6('0x48')){_0x545796[_0x98e6('0x8')]({'type':_0x5e9414[_0x98e6('0x5')][_0x98e6('0x36')](),'app':_0x98e6('0x3'),'appdata':_0x98e6('0x49'),'context':_0x5b5460[_0x98e6('0x6')],'exten':_0x5b5460[_0x98e6('0xa')],'priority':_0x5e9414[_0x98e6('0x33')]['length']+_0x112535+_0x284f8b++,'VoiceExtensionId':_0x5b5460['id']});}_0x5e9414[_0x98e6('0x4a')]=_0x545796[_0x98e6('0x31')]?_['last'](_0x545796)[_0x98e6('0x4a')]+0x1:_0x112535;_0x28abf7=_[_0x98e6('0x4b')](_0x28abf7,_0x545796,[_0x5e9414],_0xc4d87b);_0x112535=_[_0x98e6('0x4c')](_0x28abf7)[_0x98e6('0x4a')]+0x1;}return _0x54a824(_0x28abf7);})[_0x98e6('0x4d')](function(_0x4b05aa){_0x4627a4(_0x4b05aa);});});}return _0x3ba70e[_0x98e6('0x4e')]('VoiceExtension',attributes,{'tableName':_0x98e6('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x11b0a8){var _0x47eac5=this['get']({'plain':!![]});var _0x149f8d=_0x47eac5[_0x98e6('0x5')]===_0x98e6('0xf')?_0x8a5291(_0x47eac5):_0x27e5d9(_0x47eac5);return _0x32d45a(_0x47eac5,_0x11b0a8,_[_0x98e6('0x4c')](_0x149f8d)[_0x98e6('0x4a')]+0x1)[_0x98e6('0x50')](function(_0x154a29){var _0x1bf6d2=_[_0x98e6('0x4b')](_0x149f8d,_0x154a29);_0x1bf6d2[_0x98e6('0x8')]({'type':_0x47eac5[_0x98e6('0x5')],'app':_0x98e6('0x51'),'exten':_0x47eac5[_0x98e6('0xa')],'context':_0x47eac5['context'],'priority':_['last'](_0x1bf6d2)[_0x98e6('0x4a')]+0x1,'VoiceExtensionId':_0x47eac5['id']});return _0x1bf6d2;});}}});};