Built motion from commit fe909640.|2.6.8
[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 _0x1052=['exports','models','Set','type','context','alias','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','timeout','options','url','split','length','name','trunk','param','phone','prefix','${EXTEN:','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','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)','hasOwnProperty','playback','includes','app','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','define','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes'];(function(_0xddf7ba,_0x27f369){var _0x5dd286=function(_0x42bf3d){while(--_0x42bf3d){_0xddf7ba['push'](_0xddf7ba['shift']());}};_0x5dd286(++_0x27f369);}(_0x1052,0xf4));var _0x2105=function(_0x4503df,_0xfec122){_0x4503df=_0x4503df-0x0;var _0x3f1b2b=_0x1052[_0x4503df];return _0x3f1b2b;};'use strict';var _=require(_0x2105('0x0'));var attributes=require(_0x2105('0x1'));module[_0x2105('0x2')]=function(_0xed0bfa){var _0x1644e8=_0xed0bfa[_0x2105('0x3')];function _0x265e12(_0x119f3a){var _0x1e106c=0x2;var _0x5c1e84=[{'type':_0x119f3a['type'],'app':_0x2105('0x4'),'appdata':'CDR(type)='+_0x119f3a[_0x2105('0x5')],'context':_0x119f3a[_0x2105('0x6')],'exten':_0x119f3a['exten'],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']},{'type':_0x119f3a[_0x2105('0x5')],'app':_0x119f3a[_0x2105('0x7')]?_0x2105('0x4'):'NoOp','appdata':_0x119f3a['alias']?_0x2105('0x8')+_0x119f3a[_0x2105('0x7')]:_0x2105('0x9'),'context':_0x119f3a['context'],'exten':_0x119f3a[_0x2105('0xa')],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']}];if(_0x119f3a[_0x2105('0x5')]===_0x2105('0xb')){_0x5c1e84[_0x2105('0xc')]({'type':'inbound','app':'Set','appdata':_0x2105('0xd')+_0x119f3a['id'],'context':_0x119f3a[_0x2105('0x6')],'exten':_0x119f3a[_0x2105('0xa')],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']});}_0x5c1e84[_0x2105('0xc')]({'type':_0x119f3a[_0x2105('0x5')],'app':_0x2105('0x4'),'appdata':_0x2105('0xe'),'context':_0x119f3a[_0x2105('0x6')],'exten':_0x119f3a[_0x2105('0xa')],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']},{'type':_0x119f3a[_0x2105('0x5')],'app':'Set','appdata':_0x2105('0xf'),'context':_0x119f3a[_0x2105('0x6')],'exten':_0x119f3a[_0x2105('0xa')],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']},{'type':_0x119f3a[_0x2105('0x5')],'app':'Set','appdata':_0x2105('0x10'),'context':_0x119f3a[_0x2105('0x6')],'exten':_0x119f3a[_0x2105('0xa')],'priority':_0x1e106c++,'VoiceExtensionId':_0x119f3a['id']});return _0x5c1e84;}function _0x75d875(_0x1ae8c8){var _0x499942=0x2;var _0x3e5d70=[{'type':_0x2105('0x11'),'app':'Set','appdata':_0x2105('0x12'),'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':_0x1ae8c8[_0x2105('0x7')]?_0x2105('0x4'):'NoOp','appdata':_0x1ae8c8['alias']?_0x2105('0x8')+_0x1ae8c8[_0x2105('0x7')]:_0x2105('0x9'),'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':'Set','appdata':_0x2105('0x13')+(_0x1ae8c8[_0x2105('0x14')]?'${EXTEN:'+_0x1ae8c8[_0x2105('0x14')]+'}':_0x2105('0x15')),'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':'outbound','app':_0x2105('0x4'),'appdata':'CDR(routeid)='+_0x1ae8c8['id'],'context':_0x1ae8c8['context'],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':_0x2105('0x16'),'appdata':_0x2105('0x17')+(_0x499942+0x2)+'):Goto('+(_0x499942+0x1)+')','context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':_0x2105('0x4'),'appdata':_0x1ae8c8[_0x2105('0x14')]?_0x2105('0x18')+_0x1ae8c8[_0x2105('0x14')]+'}':_0x2105('0x19'),'context':_0x1ae8c8['context'],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':'outbound','app':_0x2105('0x4'),'appdata':_0x2105('0xe'),'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':_0x2105('0x4'),'appdata':_0x2105('0x10'),'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':'Set','appdata':_0x2105('0x1a')+_0x1ae8c8['id'],'context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']}];if(_0x1ae8c8['hasOwnProperty']('recordingFormat')&&_0x1ae8c8[_0x2105('0x1b')]!==_0x2105('0x1c')){_0x3e5d70[_0x2105('0xc')]({'type':_0x2105('0x11'),'app':_0x2105('0x4'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x1ae8c8['context'],'exten':_0x1ae8c8['exten'],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']},{'type':_0x2105('0x11'),'app':_0x2105('0x4'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x1ae8c8['recordingFormat']||'wav','context':_0x1ae8c8[_0x2105('0x6')],'exten':_0x1ae8c8[_0x2105('0xa')],'priority':_0x499942++,'VoiceExtensionId':_0x1ae8c8['id']});}return _0x3e5d70;}function _0x5ed25e(_0x380379,_0x8394cd){var _0x2eb5e9=[{'name':'trunk','param':0x0},{'name':_0x2105('0x1d'),'param':0x1},{'name':_0x2105('0x1e'),'param':0x2},{'name':_0x2105('0x1f'),'param':0x3}];var _0x5ade1c={};var _0x32c9f1=_0x8394cd[_0x2105('0x20')](',');var _0x5cc639=[];for(var _0x19a72a=0x0;_0x19a72a<_0x2eb5e9[_0x2105('0x21')];_0x19a72a++){switch(_0x2eb5e9[_0x19a72a][_0x2105('0x22')]){case'trunk':_0x5ade1c[_0x2105('0x23')]=_0x32c9f1[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]][_0x2105('0x20')]('/')[0x1];_0x5ade1c[_0x2105('0x25')]=_0x32c9f1[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]]['split']('/')[0x2];_0x5ade1c[_0x2105('0x26')]=_0x5ade1c[_0x2105('0x25')]?_0x5ade1c['phone'][_0x2105('0x20')]('$')[0x0]:undefined;_0x5ade1c[_0x2105('0x25')]=_0x380379[_0x2105('0x14')]?(_0x5ade1c[_0x2105('0x26')]||'')+_0x2105('0x27')+_0x380379[_0x2105('0x14')]+'}':(_0x5ade1c['prefix']||'')+_0x2105('0x15');_0x5cc639[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]]=[_0x2105('0x28'),_0x5ade1c['trunk'],_0x5ade1c[_0x2105('0x25')]][_0x2105('0x29')]('/');break;case _0x2105('0x1e'):_0x5ade1c['options']=_0x32c9f1[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]];if(_0x380379[_0x2105('0x1b')]!==_0x2105('0x1c')){if(_0x5ade1c['options'][_0x2105('0x2a')](_0x2105('0x2b'))<0x0){_0x5ade1c[_0x2105('0x1e')]+=_0x2105('0x2b');}}else{_0x5ade1c[_0x2105('0x1e')]=_0x5ade1c['options'][_0x2105('0x2c')](_0x2105('0x2b'),'');}_0x5cc639[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]]=_0x5ade1c[_0x2105('0x1e')];break;default:_0x5cc639[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]]=_0x32c9f1[_0x2eb5e9[_0x19a72a][_0x2105('0x24')]];}}return _0x5cc639['join'](',');}function _0x394ae6(_0x208a95,_0x3edbd8,_0x59708b){return new Promise(function(_0x2f7b37,_0xb64bd8){var _0xf1ae1a=[];if(_[_0x2105('0x2d')](_0x3edbd8))return _0x2f7b37(_0xf1ae1a);_0x1644e8['Interval'][_0x2105('0x2e')]({'attributes':['id',_0x2105('0x2f'),_0x2105('0x30')],'raw':!![]})[_0x2105('0x31')](function(_0x322bac){for(var _0xc1665f=0x0,_0x43977f=0x0;_0xc1665f<_0x3edbd8[_0x2105('0x21')];_0xc1665f++,_0x43977f=0x0){var _0x4ef51b=_0x3edbd8[_0xc1665f];var _0x465b87=[];var _0x1a4d8c=[];delete _0x4ef51b['id'];if(_0x4ef51b[_0x2105('0x2f')]!==_0x2105('0x32')){_0x4ef51b['intervals']=[_0x4ef51b[_0x2105('0x2f')]];}else{_0x4ef51b[_0x2105('0x33')]=_0x4ef51b[_0x2105('0x30')]?_[_0x2105('0x34')](_[_0x2105('0x35')](_0x322bac,{'IntervalId':_0x4ef51b[_0x2105('0x30')]}),_0x2105('0x2f')):[];}_0x4ef51b[_0x2105('0x6')]=_0x208a95[_0x2105('0x6')];_0x4ef51b[_0x2105('0xa')]=_0x208a95[_0x2105('0xa')];if(_0x4ef51b['type'])_0x4ef51b['type']=_0x4ef51b[_0x2105('0x5')]['toLowerCase']();if(_0x208a95['type']===_0x2105('0x11')){if(_0x4ef51b['hasOwnProperty'](_0x2105('0x36'))&&_0x4ef51b[_0x2105('0x36')]&&_0x4ef51b[_0x2105('0x36')]!=='--'){_0x465b87[_0x2105('0xc')]({'type':_0x4ef51b[_0x2105('0x5')]['toLowerCase'](),'app':'Set','appdata':_0x2105('0x37')+_0x4ef51b['tag'],'context':_0x208a95[_0x2105('0x6')],'exten':_0x208a95[_0x2105('0xa')],'priority':_0x4ef51b[_0x2105('0x33')]['length']+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});}_0x465b87['push']({'type':_0x4ef51b['type'][_0x2105('0x38')](),'app':_0x2105('0x16'),'appdata':_0x2105('0x39')+(_0x4ef51b[_0x2105('0x3a')]?_0x2105('0x3b')+_0x4ef51b[_0x2105('0x3a')]+')':_0x2105('0x3c')),'context':_0x208a95[_0x2105('0x6')],'exten':_0x208a95[_0x2105('0xa')],'priority':_0x4ef51b[_0x2105('0x33')][_0x2105('0x21')]+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});}else{if(_0x4ef51b[_0x2105('0x3d')]('answer')){if(['queue',_0x2105('0x3e')][_0x2105('0x3f')](_0x4ef51b[_0x2105('0x40')][_0x2105('0x38')]())&&_0x4ef51b[_0x2105('0x41')]!==_0x2105('0x42')){if(_0x4ef51b[_0x2105('0x43')]){_0x465b87[_0x2105('0xc')]({'type':_0x4ef51b[_0x2105('0x5')]['toLowerCase'](),'app':_0x2105('0x16'),'appdata':_0x2105('0x44'),'context':_0x208a95[_0x2105('0x6')],'exten':_0x208a95['exten'],'priority':_0x4ef51b[_0x2105('0x33')][_0x2105('0x21')]+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});_0x465b87[_0x2105('0xc')]({'type':_0x4ef51b[_0x2105('0x5')][_0x2105('0x38')](),'app':_0x2105('0x4'),'appdata':_0x2105('0x45'),'context':_0x208a95[_0x2105('0x6')],'exten':_0x208a95[_0x2105('0xa')],'priority':_0x4ef51b[_0x2105('0x33')][_0x2105('0x21')]+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});}else{_0x465b87[_0x2105('0xc')]({'type':_0x4ef51b[_0x2105('0x5')][_0x2105('0x38')](),'app':_0x2105('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x208a95['context'],'exten':_0x208a95['exten'],'priority':_0x4ef51b[_0x2105('0x33')]['length']+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});_0x465b87[_0x2105('0xc')]({'type':_0x4ef51b[_0x2105('0x5')][_0x2105('0x38')](),'app':_0x2105('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x208a95[_0x2105('0x6')],'exten':_0x208a95['exten'],'priority':_0x4ef51b[_0x2105('0x33')]['length']+_0x59708b+_0x43977f++,'VoiceExtensionId':_0x208a95['id']});}}}}for(var _0x121a8a=0x0;_0x121a8a<_0x4ef51b['intervals']['length'];_0x121a8a++){var _0x3a872b=_0x59708b+_0x4ef51b[_0x2105('0x33')][_0x2105('0x21')];var _0x27d59c=_0x121a8a===_0x4ef51b[_0x2105('0x33')][_0x2105('0x21')]-0x1?_0x59708b+_0x465b87[_0x2105('0x21')]+_0x1a4d8c[_0x2105('0x21')]+0x2:_0x59708b+_0x121a8a+0x1;_0x465b87[_0x2105('0x46')](_0x121a8a,0x0,{'type':_0x208a95[_0x2105('0x5')],'app':_0x2105('0x47'),'appdata':_0x4ef51b[_0x2105('0x33')][_0x121a8a]+'?'+_0x208a95[_0x2105('0x6')]+_0x2105('0x48')+_0x3a872b+':'+_0x208a95[_0x2105('0x6')]+',${EXTEN},'+_0x27d59c,'exten':_0x208a95[_0x2105('0xa')],'context':_0x208a95[_0x2105('0x6')],'priority':_0x59708b+_0x121a8a,'VoiceExtensionId':_0x208a95['id']});}if(_0x4ef51b[_0x2105('0x41')]===_0x2105('0x49'))_0x4ef51b[_0x2105('0x4a')]=_0x5ed25e(_0x208a95,_0x4ef51b[_0x2105('0x4a')]);_0x4ef51b[_0x2105('0x4b')]=_0x465b87[_0x2105('0x21')]?_[_0x2105('0x4c')](_0x465b87)['priority']+0x1:_0x59708b;_0xf1ae1a=_[_0x2105('0x4d')](_0xf1ae1a,_0x465b87,[_0x4ef51b],_0x1a4d8c);_0x59708b=_[_0x2105('0x4c')](_0xf1ae1a)[_0x2105('0x4b')]+0x1;}return _0x2f7b37(_0xf1ae1a);})['catch'](function(_0x5da90c){_0xb64bd8(_0x5da90c);});});}return _0xed0bfa[_0x2105('0x4e')]('VoiceExtension',attributes,{'tableName':_0x2105('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x347d56){var _0x5d288a=this[_0x2105('0x50')]({'plain':!![]});var _0x4a118b=_0x5d288a[_0x2105('0x5')]===_0x2105('0x11')?_0x75d875(_0x5d288a):_0x265e12(_0x5d288a);return _0x394ae6(_0x5d288a,_0x347d56,_[_0x2105('0x4c')](_0x4a118b)[_0x2105('0x4b')]+0x1)[_0x2105('0x31')](function(_0x22d489){var _0xb95fad=_[_0x2105('0x4d')](_0x4a118b,_0x22d489);_0xb95fad[_0x2105('0xc')]({'type':_0x5d288a[_0x2105('0x5')],'app':_0x2105('0x51'),'exten':_0x5d288a['exten'],'context':_0x5d288a[_0x2105('0x6')],'priority':_[_0x2105('0x4c')](_0xb95fad)['priority']+0x1,'VoiceExtensionId':_0x5d288a['id']});return _0xb95fad;});}}});};