Built motion from commit ddca4d0d.|2.5.47
[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 _0xf88f=['prefix','join','options','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','*,*,*,*','intervals','map','IntervalId','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','includes','appType','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice',',${EXTEN},','outboundDial','appdata','priority','concat','last','catch','define','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','models','type','CDR(type)=','context','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','Set','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','CDR(type)=outbound','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','hasOwnProperty','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','trunk','timeout','url','split','length','name','phone','param'];(function(_0x5e5cec,_0x26bd5c){var _0x184eb5=function(_0xc35690){while(--_0xc35690){_0x5e5cec['push'](_0x5e5cec['shift']());}};_0x184eb5(++_0x26bd5c);}(_0xf88f,0x1bb));var _0xff88=function(_0x2939e6,_0x6caba4){_0x2939e6=_0x2939e6-0x0;var _0x4dedc0=_0xf88f[_0x2939e6];return _0x4dedc0;};'use strict';var _=require(_0xff88('0x0'));var attributes=require(_0xff88('0x1'));module[_0xff88('0x2')]=function(_0xa32dc5){var _0x1e541a=_0xa32dc5[_0xff88('0x3')];function _0x184827(_0x47b3fe){var _0x1bcee9=0x2;var _0x33aa75=[{'type':_0x47b3fe[_0xff88('0x4')],'app':'Set','appdata':_0xff88('0x5')+_0x47b3fe[_0xff88('0x4')],'context':_0x47b3fe[_0xff88('0x6')],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']},{'type':_0x47b3fe[_0xff88('0x4')],'app':_0x47b3fe[_0xff88('0x8')]?'Set':_0xff88('0x9'),'appdata':_0x47b3fe[_0xff88('0x8')]?_0xff88('0xa')+_0x47b3fe[_0xff88('0x8')]:_0xff88('0xb'),'context':_0x47b3fe[_0xff88('0x6')],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']}];if(_0x47b3fe[_0xff88('0x4')]===_0xff88('0xc')){_0x33aa75[_0xff88('0xd')]({'type':_0xff88('0xc'),'app':_0xff88('0xe'),'appdata':_0xff88('0xf')+_0x47b3fe['id'],'context':_0x47b3fe[_0xff88('0x6')],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']});}_0x33aa75['push']({'type':_0x47b3fe[_0xff88('0x4')],'app':_0xff88('0xe'),'appdata':_0xff88('0x10'),'context':_0x47b3fe['context'],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']},{'type':_0x47b3fe[_0xff88('0x4')],'app':_0xff88('0xe'),'appdata':_0xff88('0x11'),'context':_0x47b3fe[_0xff88('0x6')],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']},{'type':_0x47b3fe[_0xff88('0x4')],'app':_0xff88('0xe'),'appdata':'MONITOR_OPTIONS=ab','context':_0x47b3fe[_0xff88('0x6')],'exten':_0x47b3fe[_0xff88('0x7')],'priority':_0x1bcee9++,'VoiceExtensionId':_0x47b3fe['id']});return _0x33aa75;}function _0x5d75ff(_0x53b292){var _0x1181a1=0x2;var _0x23fbfc=[{'type':'outbound','app':_0xff88('0xe'),'appdata':_0xff88('0x12'),'context':_0x53b292['context'],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0x53b292[_0xff88('0x8')]?_0xff88('0xe'):_0xff88('0x9'),'appdata':_0x53b292[_0xff88('0x8')]?_0xff88('0xa')+_0x53b292['alias']:_0xff88('0xb'),'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':_0xff88('0x14')+(_0x53b292['cutdigits']?_0xff88('0x15')+_0x53b292[_0xff88('0x16')]+'}':_0xff88('0x17')),'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':'CDR(routeid)='+_0x53b292['id'],'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':'outbound','app':_0xff88('0x18'),'appdata':_0xff88('0x19')+(_0x1181a1+0x2)+_0xff88('0x1a')+(_0x1181a1+0x1)+')','context':_0x53b292['context'],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':'Set','appdata':_0x53b292[_0xff88('0x16')]?_0xff88('0x1b')+_0x53b292['cutdigits']+'}':_0xff88('0x1c'),'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':_0xff88('0x10'),'context':_0x53b292['context'],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':'Set','appdata':_0xff88('0x11'),'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':_0xff88('0x1d'),'context':_0x53b292['context'],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':'outboundrouteid='+_0x53b292['id'],'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']}];if(_0x53b292[_0xff88('0x1e')]('recordingFormat')&&_0x53b292['recordingFormat']!==_0xff88('0x1f')){_0x23fbfc[_0xff88('0xd')]({'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':_0xff88('0x20'),'context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292[_0xff88('0x7')],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']},{'type':_0xff88('0x13'),'app':_0xff88('0xe'),'appdata':_0xff88('0x21')+_0x53b292[_0xff88('0x22')]||'wav','context':_0x53b292[_0xff88('0x6')],'exten':_0x53b292['exten'],'priority':_0x1181a1++,'VoiceExtensionId':_0x53b292['id']});}return _0x23fbfc;}function _0x433485(_0x435779,_0x47ae90){var _0x2c22d8=[{'name':_0xff88('0x23'),'param':0x0},{'name':_0xff88('0x24'),'param':0x1},{'name':'options','param':0x2},{'name':_0xff88('0x25'),'param':0x3}];var _0x26cedd={};var _0x28ce5a=_0x47ae90[_0xff88('0x26')](',');var _0x127c5a=[];for(var _0x3eecd4=0x0;_0x3eecd4<_0x2c22d8[_0xff88('0x27')];_0x3eecd4++){switch(_0x2c22d8[_0x3eecd4][_0xff88('0x28')]){case _0xff88('0x23'):_0x26cedd[_0xff88('0x23')]=_0x28ce5a[_0x2c22d8[_0x3eecd4]['param']]['split']('/')[0x1];_0x26cedd[_0xff88('0x29')]=_0x28ce5a[_0x2c22d8[_0x3eecd4][_0xff88('0x2a')]][_0xff88('0x26')]('/')[0x2];_0x26cedd[_0xff88('0x2b')]=_0x26cedd['phone']?_0x26cedd[_0xff88('0x29')][_0xff88('0x26')]('$')[0x0]:undefined;_0x26cedd[_0xff88('0x29')]=_0x435779[_0xff88('0x16')]?(_0x26cedd[_0xff88('0x2b')]||'')+_0xff88('0x15')+_0x435779[_0xff88('0x16')]+'}':(_0x26cedd[_0xff88('0x2b')]||'')+'${EXTEN}';_0x127c5a[_0x2c22d8[_0x3eecd4][_0xff88('0x2a')]]=['SIP',_0x26cedd[_0xff88('0x23')],_0x26cedd[_0xff88('0x29')]][_0xff88('0x2c')]('/');break;case _0xff88('0x2d'):_0x26cedd['options']=_0x28ce5a[_0x2c22d8[_0x3eecd4][_0xff88('0x2a')]];if(_0x435779['recordingFormat']!==_0xff88('0x1f')){if(_0x26cedd['options'][_0xff88('0x2e')]('U(xcally-mixmonitor-context)')<0x0){_0x26cedd[_0xff88('0x2d')]+=_0xff88('0x2f');}}else{_0x26cedd[_0xff88('0x2d')]=_0x26cedd[_0xff88('0x2d')][_0xff88('0x30')](_0xff88('0x2f'),'');}_0x127c5a[_0x2c22d8[_0x3eecd4]['param']]=_0x26cedd[_0xff88('0x2d')];break;default:_0x127c5a[_0x2c22d8[_0x3eecd4][_0xff88('0x2a')]]=_0x28ce5a[_0x2c22d8[_0x3eecd4]['param']];}}return _0x127c5a['join'](',');}function _0x223c4d(_0x2dba21,_0x29d148,_0x47aa0d){return new Promise(function(_0x3d258d,_0x39643b){var _0x48acd6=[];if(_[_0xff88('0x31')](_0x29d148))return _0x3d258d(_0x48acd6);_0x1e541a[_0xff88('0x32')][_0xff88('0x33')]({'attributes':['id',_0xff88('0x34'),'IntervalId'],'raw':!![]})['then'](function(_0x322218){for(var _0x4d92a6=0x0,_0x54dd61=0x0;_0x4d92a6<_0x29d148[_0xff88('0x27')];_0x4d92a6++,_0x54dd61=0x0){var _0x4be0de=_0x29d148[_0x4d92a6];var _0x2b2ffa=[];var _0x2f61cb=[];delete _0x4be0de['id'];if(_0x4be0de['interval']!==_0xff88('0x35')){_0x4be0de[_0xff88('0x36')]=[_0x4be0de[_0xff88('0x34')]];}else{_0x4be0de[_0xff88('0x36')]=_0x4be0de['IntervalId']?_[_0xff88('0x37')](_['filter'](_0x322218,{'IntervalId':_0x4be0de[_0xff88('0x38')]}),_0xff88('0x34')):[];}_0x4be0de[_0xff88('0x6')]=_0x2dba21[_0xff88('0x6')];_0x4be0de['exten']=_0x2dba21[_0xff88('0x7')];if(_0x4be0de[_0xff88('0x4')])_0x4be0de[_0xff88('0x4')]=_0x4be0de[_0xff88('0x4')][_0xff88('0x39')]();if(_0x2dba21['type']===_0xff88('0x13')){if(_0x4be0de['hasOwnProperty'](_0xff88('0x3a'))&&_0x4be0de[_0xff88('0x3a')]&&_0x4be0de[_0xff88('0x3a')]!=='--'){_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de['type']['toLowerCase'](),'app':_0xff88('0xe'),'appdata':'CDR(tag)='+_0x4be0de[_0xff88('0x3a')],'context':_0x2dba21[_0xff88('0x6')],'exten':_0x2dba21[_0xff88('0x7')],'priority':_0x4be0de['intervals'][_0xff88('0x27')]+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});}_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de[_0xff88('0x4')]['toLowerCase'](),'app':'ExecIf','appdata':_0xff88('0x3b')+(_0x4be0de[_0xff88('0x3c')]?_0xff88('0x3d')+_0x4be0de['callerID']+')':_0xff88('0x3e')),'context':_0x2dba21[_0xff88('0x6')],'exten':_0x2dba21[_0xff88('0x7')],'priority':_0x4be0de['intervals']['length']+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});}else{if(_0x4be0de['hasOwnProperty'](_0xff88('0x3f'))){if([_0xff88('0x40'),'playback'][_0xff88('0x41')](_0x4be0de['app']['toLowerCase']())&&_0x4be0de[_0xff88('0x42')]!=='custom'){if(_0x4be0de['answer']){_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de[_0xff88('0x4')][_0xff88('0x39')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x2dba21[_0xff88('0x6')],'exten':_0x2dba21['exten'],'priority':_0x4be0de[_0xff88('0x36')]['length']+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de['type'][_0xff88('0x39')](),'app':_0xff88('0xe'),'appdata':_0xff88('0x43'),'context':_0x2dba21['context'],'exten':_0x2dba21['exten'],'priority':_0x4be0de[_0xff88('0x36')][_0xff88('0x27')]+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});}else{_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de[_0xff88('0x4')][_0xff88('0x39')](),'app':'ExecIf','appdata':_0xff88('0x44'),'context':_0x2dba21['context'],'exten':_0x2dba21[_0xff88('0x7')],'priority':_0x4be0de[_0xff88('0x36')][_0xff88('0x27')]+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});_0x2b2ffa[_0xff88('0xd')]({'type':_0x4be0de['type']['toLowerCase'](),'app':_0xff88('0xe'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x2dba21[_0xff88('0x6')],'exten':_0x2dba21['exten'],'priority':_0x4be0de['intervals']['length']+_0x47aa0d+_0x54dd61++,'VoiceExtensionId':_0x2dba21['id']});}}}}for(var _0x5acce0=0x0;_0x5acce0<_0x4be0de[_0xff88('0x36')]['length'];_0x5acce0++){var _0x574b97=_0x47aa0d+_0x4be0de[_0xff88('0x36')][_0xff88('0x27')];var _0x54daaa=_0x5acce0===_0x4be0de[_0xff88('0x36')]['length']-0x1?_0x47aa0d+_0x2b2ffa[_0xff88('0x27')]+_0x2f61cb[_0xff88('0x27')]+0x2:_0x47aa0d+_0x5acce0+0x1;_0x2b2ffa[_0xff88('0x45')](_0x5acce0,0x0,{'type':_0x2dba21['type'],'app':'GotoIfTime','appdata':_0x4be0de[_0xff88('0x36')][_0x5acce0]+'?'+_0x2dba21[_0xff88('0x6')]+_0xff88('0x46')+_0x574b97+':'+_0x2dba21[_0xff88('0x6')]+_0xff88('0x46')+_0x54daaa,'exten':_0x2dba21[_0xff88('0x7')],'context':_0x2dba21[_0xff88('0x6')],'priority':_0x47aa0d+_0x5acce0,'VoiceExtensionId':_0x2dba21['id']});}if(_0x4be0de['appType']===_0xff88('0x47'))_0x4be0de['appdata']=_0x433485(_0x2dba21,_0x4be0de[_0xff88('0x48')]);_0x4be0de[_0xff88('0x49')]=_0x2b2ffa['length']?_['last'](_0x2b2ffa)[_0xff88('0x49')]+0x1:_0x47aa0d;_0x48acd6=_[_0xff88('0x4a')](_0x48acd6,_0x2b2ffa,[_0x4be0de],_0x2f61cb);_0x47aa0d=_[_0xff88('0x4b')](_0x48acd6)[_0xff88('0x49')]+0x1;}return _0x3d258d(_0x48acd6);})[_0xff88('0x4c')](function(_0x22fc64){_0x39643b(_0x22fc64);});});}return _0xa32dc5[_0xff88('0x4d')]('VoiceExtension',attributes,{'tableName':_0xff88('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x91a468){var _0x3c73e7=this[_0xff88('0x4f')]({'plain':!![]});var _0x9a5415=_0x3c73e7[_0xff88('0x4')]===_0xff88('0x13')?_0x5d75ff(_0x3c73e7):_0x184827(_0x3c73e7);return _0x223c4d(_0x3c73e7,_0x91a468,_[_0xff88('0x4b')](_0x9a5415)[_0xff88('0x49')]+0x1)['then'](function(_0x44c2f0){var _0x3ea775=_[_0xff88('0x4a')](_0x9a5415,_0x44c2f0);_0x3ea775[_0xff88('0xd')]({'type':_0x3c73e7[_0xff88('0x4')],'app':_0xff88('0x50'),'exten':_0x3c73e7[_0xff88('0x7')],'context':_0x3c73e7['context'],'priority':_['last'](_0x3ea775)['priority']+0x1,'VoiceExtensionId':_0x3c73e7['id']});return _0x3ea775;});}}});};