1ab9292b95e1e878e77767ba55b92b469f6ed380
[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 _0xa1a9=['Set','alias','No\x20alias\x20set','context','inbound','CDR(routeid)=','push','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','name','param','phone','prefix','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','toLowerCase','hasOwnProperty','tag','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','queue','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','Hangup','lodash','models','type','CDR(type)=','exten'];(function(_0x3b0912,_0x39d739){var _0xa8f339=function(_0x6a31ab){while(--_0x6a31ab){_0x3b0912['push'](_0x3b0912['shift']());}};_0xa8f339(++_0x39d739);}(_0xa1a9,0x9b));var _0x9a1a=function(_0x5d0aeb,_0x16dc9d){_0x5d0aeb=_0x5d0aeb-0x0;var _0x3e55d2=_0xa1a9[_0x5d0aeb];return _0x3e55d2;};'use strict';var _=require(_0x9a1a('0x0'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x1e1445){var _0x5dbe14=_0x1e1445[_0x9a1a('0x1')];function _0x2197b8(_0x53bf5c){var _0x5cb71d=0x2;var _0x54cc32=[{'type':_0x53bf5c[_0x9a1a('0x2')],'app':'Set','appdata':_0x9a1a('0x3')+_0x53bf5c[_0x9a1a('0x2')],'context':_0x53bf5c['context'],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']},{'type':_0x53bf5c['type'],'app':_0x53bf5c['alias']?_0x9a1a('0x5'):'NoOp','appdata':_0x53bf5c[_0x9a1a('0x6')]?'CDR(routeAlias)='+_0x53bf5c[_0x9a1a('0x6')]:_0x9a1a('0x7'),'context':_0x53bf5c[_0x9a1a('0x8')],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']}];if(_0x53bf5c[_0x9a1a('0x2')]===_0x9a1a('0x9')){_0x54cc32['push']({'type':_0x9a1a('0x9'),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xa')+_0x53bf5c['id'],'context':_0x53bf5c[_0x9a1a('0x8')],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']});}_0x54cc32[_0x9a1a('0xb')]({'type':_0x53bf5c[_0x9a1a('0x2')],'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xc'),'context':_0x53bf5c[_0x9a1a('0x8')],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']},{'type':_0x53bf5c['type'],'app':_0x9a1a('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x53bf5c[_0x9a1a('0x8')],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']},{'type':_0x53bf5c['type'],'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xd'),'context':_0x53bf5c[_0x9a1a('0x8')],'exten':_0x53bf5c[_0x9a1a('0x4')],'priority':_0x5cb71d++,'VoiceExtensionId':_0x53bf5c['id']});return _0x54cc32;}function _0xbcc4da(_0x42a72d){var _0x43b017=0x2;var _0x4b4a09=[{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xf'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x42a72d[_0x9a1a('0x6')]?'Set':_0x9a1a('0x10'),'appdata':_0x42a72d[_0x9a1a('0x6')]?'CDR(routeAlias)='+_0x42a72d[_0x9a1a('0x6')]:_0x9a1a('0x7'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d['exten'],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':'outbound','app':_0x9a1a('0x5'),'appdata':_0x9a1a('0x11')+(_0x42a72d[_0x9a1a('0x12')]?_0x9a1a('0x13')+_0x42a72d[_0x9a1a('0x12')]+'}':_0x9a1a('0x14')),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xa')+_0x42a72d['id'],'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':'outbound','app':'ExecIf','appdata':_0x9a1a('0x15')+(_0x43b017+0x2)+_0x9a1a('0x16')+(_0x43b017+0x1)+')','context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':_0x42a72d[_0x9a1a('0x12')]?_0x9a1a('0x17')+_0x42a72d[_0x9a1a('0x12')]+'}':_0x9a1a('0x18'),'context':_0x42a72d['context'],'exten':_0x42a72d['exten'],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d['exten'],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0x19'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0xd'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':_0x9a1a('0xe'),'app':_0x9a1a('0x5'),'appdata':'outboundrouteid='+_0x42a72d['id'],'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']}];if(_0x42a72d['hasOwnProperty'](_0x9a1a('0x1a'))&&_0x42a72d['recordingFormat']!==_0x9a1a('0x1b')){_0x4b4a09['push']({'type':'outbound','app':'Set','appdata':_0x9a1a('0x1c'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']},{'type':'outbound','app':_0x9a1a('0x5'),'appdata':_0x9a1a('0x1d')+_0x42a72d[_0x9a1a('0x1a')]||_0x9a1a('0x1e'),'context':_0x42a72d[_0x9a1a('0x8')],'exten':_0x42a72d[_0x9a1a('0x4')],'priority':_0x43b017++,'VoiceExtensionId':_0x42a72d['id']});}return _0x4b4a09;}function _0x2e0181(_0x1e3ba9,_0x54658b){var _0x6884dd=[{'name':_0x9a1a('0x1f'),'param':0x0},{'name':_0x9a1a('0x20'),'param':0x1},{'name':_0x9a1a('0x21'),'param':0x2},{'name':_0x9a1a('0x22'),'param':0x3}];var _0x60a1b={};var _0xc6eb56=_0x54658b[_0x9a1a('0x23')](',');var _0x39ae90=[];for(var _0x2ccfb9=0x0;_0x2ccfb9<_0x6884dd[_0x9a1a('0x24')];_0x2ccfb9++){switch(_0x6884dd[_0x2ccfb9][_0x9a1a('0x25')]){case _0x9a1a('0x1f'):_0x60a1b[_0x9a1a('0x1f')]=_0xc6eb56[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]][_0x9a1a('0x23')]('/')[0x1];_0x60a1b[_0x9a1a('0x27')]=_0xc6eb56[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]][_0x9a1a('0x23')]('/')[0x2];_0x60a1b[_0x9a1a('0x28')]=_0x60a1b[_0x9a1a('0x27')]?_0x60a1b[_0x9a1a('0x27')][_0x9a1a('0x23')]('$')[0x0]:undefined;_0x60a1b[_0x9a1a('0x27')]=_0x1e3ba9[_0x9a1a('0x12')]?(_0x60a1b['prefix']||'')+_0x9a1a('0x13')+_0x1e3ba9[_0x9a1a('0x12')]+'}':(_0x60a1b[_0x9a1a('0x28')]||'')+_0x9a1a('0x14');_0x39ae90[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]]=['SIP',_0x60a1b['trunk'],_0x60a1b['phone']]['join']('/');break;case _0x9a1a('0x21'):_0x60a1b[_0x9a1a('0x21')]=_0xc6eb56[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]];if(_0x1e3ba9[_0x9a1a('0x1a')]!==_0x9a1a('0x1b')){if(_0x60a1b[_0x9a1a('0x21')][_0x9a1a('0x29')](_0x9a1a('0x2a'))<0x0){_0x60a1b[_0x9a1a('0x21')]+=_0x9a1a('0x2a');}}else{_0x60a1b[_0x9a1a('0x21')]=_0x60a1b[_0x9a1a('0x21')][_0x9a1a('0x2b')](_0x9a1a('0x2a'),'');}_0x39ae90[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]]=_0x60a1b[_0x9a1a('0x21')];break;default:_0x39ae90[_0x6884dd[_0x2ccfb9][_0x9a1a('0x26')]]=_0xc6eb56[_0x6884dd[_0x2ccfb9]['param']];}}return _0x39ae90[_0x9a1a('0x2c')](',');}function _0x20b40f(_0x128851,_0x31be7e,_0x5bd579){return new Promise(function(_0x2d0123,_0x38b287){var _0x5cbf88=[];if(_[_0x9a1a('0x2d')](_0x31be7e))return _0x2d0123(_0x5cbf88);_0x5dbe14[_0x9a1a('0x2e')][_0x9a1a('0x2f')]({'attributes':['id',_0x9a1a('0x30'),_0x9a1a('0x31')],'raw':!![]})[_0x9a1a('0x32')](function(_0x5ba3cb){for(var _0x2c72b5=0x0,_0x585ae1=0x0;_0x2c72b5<_0x31be7e[_0x9a1a('0x24')];_0x2c72b5++,_0x585ae1=0x0){var _0x25fece=_0x31be7e[_0x2c72b5];var _0xc48395=[];var _0x338cbf=[];delete _0x25fece['id'];if(_0x25fece[_0x9a1a('0x30')]!==_0x9a1a('0x33')){_0x25fece[_0x9a1a('0x34')]=[_0x25fece[_0x9a1a('0x30')]];}else{_0x25fece[_0x9a1a('0x34')]=_0x25fece[_0x9a1a('0x31')]?_['map'](_['filter'](_0x5ba3cb,{'IntervalId':_0x25fece[_0x9a1a('0x31')]}),_0x9a1a('0x30')):[];}_0x25fece[_0x9a1a('0x8')]=_0x128851[_0x9a1a('0x8')];_0x25fece[_0x9a1a('0x4')]=_0x128851[_0x9a1a('0x4')];if(_0x25fece[_0x9a1a('0x2')])_0x25fece[_0x9a1a('0x2')]=_0x25fece[_0x9a1a('0x2')][_0x9a1a('0x35')]();if(_0x128851[_0x9a1a('0x2')]===_0x9a1a('0xe')){if(_0x25fece[_0x9a1a('0x36')](_0x9a1a('0x37'))&&_0x25fece[_0x9a1a('0x37')]&&_0x25fece[_0x9a1a('0x37')]!=='--'){_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece[_0x9a1a('0x2')][_0x9a1a('0x35')](),'app':_0x9a1a('0x5'),'appdata':'CDR(tag)='+_0x25fece['tag'],'context':_0x128851[_0x9a1a('0x8')],'exten':_0x128851[_0x9a1a('0x4')],'priority':_0x25fece['intervals'][_0x9a1a('0x24')]+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});}_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece[_0x9a1a('0x2')][_0x9a1a('0x35')](),'app':_0x9a1a('0x38'),'appdata':_0x9a1a('0x39')+(_0x25fece['callerID']?_0x9a1a('0x3a')+_0x25fece[_0x9a1a('0x3b')]+')':_0x9a1a('0x3c')),'context':_0x128851[_0x9a1a('0x8')],'exten':_0x128851['exten'],'priority':_0x25fece['intervals'][_0x9a1a('0x24')]+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});}else{if(_0x25fece['hasOwnProperty'](_0x9a1a('0x3d'))){if([_0x9a1a('0x3e'),'playback']['includes'](_0x25fece['app'][_0x9a1a('0x35')]())&&_0x25fece[_0x9a1a('0x3f')]!==_0x9a1a('0x40')){if(_0x25fece[_0x9a1a('0x3d')]){_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece[_0x9a1a('0x2')]['toLowerCase'](),'app':_0x9a1a('0x38'),'appdata':_0x9a1a('0x41'),'context':_0x128851[_0x9a1a('0x8')],'exten':_0x128851[_0x9a1a('0x4')],'priority':_0x25fece[_0x9a1a('0x34')][_0x9a1a('0x24')]+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece[_0x9a1a('0x2')][_0x9a1a('0x35')](),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0x42'),'context':_0x128851[_0x9a1a('0x8')],'exten':_0x128851[_0x9a1a('0x4')],'priority':_0x25fece[_0x9a1a('0x34')]['length']+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});}else{_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece['type'][_0x9a1a('0x35')](),'app':_0x9a1a('0x38'),'appdata':_0x9a1a('0x43'),'context':_0x128851[_0x9a1a('0x8')],'exten':_0x128851[_0x9a1a('0x4')],'priority':_0x25fece[_0x9a1a('0x34')][_0x9a1a('0x24')]+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});_0xc48395[_0x9a1a('0xb')]({'type':_0x25fece['type'][_0x9a1a('0x35')](),'app':_0x9a1a('0x5'),'appdata':_0x9a1a('0x44'),'context':_0x128851['context'],'exten':_0x128851[_0x9a1a('0x4')],'priority':_0x25fece[_0x9a1a('0x34')][_0x9a1a('0x24')]+_0x5bd579+_0x585ae1++,'VoiceExtensionId':_0x128851['id']});}}}}for(var _0x52523d=0x0;_0x52523d<_0x25fece['intervals'][_0x9a1a('0x24')];_0x52523d++){var _0x7dc8d0=_0x5bd579+_0x25fece['intervals'][_0x9a1a('0x24')];var _0x6176b8=_0x52523d===_0x25fece[_0x9a1a('0x34')][_0x9a1a('0x24')]-0x1?_0x5bd579+_0xc48395['length']+_0x338cbf[_0x9a1a('0x24')]+0x2:_0x5bd579+_0x52523d+0x1;_0xc48395['splice'](_0x52523d,0x0,{'type':_0x128851['type'],'app':_0x9a1a('0x45'),'appdata':_0x25fece[_0x9a1a('0x34')][_0x52523d]+'?'+_0x128851[_0x9a1a('0x8')]+_0x9a1a('0x46')+_0x7dc8d0+':'+_0x128851[_0x9a1a('0x8')]+_0x9a1a('0x46')+_0x6176b8,'exten':_0x128851[_0x9a1a('0x4')],'context':_0x128851[_0x9a1a('0x8')],'priority':_0x5bd579+_0x52523d,'VoiceExtensionId':_0x128851['id']});}if(_0x25fece[_0x9a1a('0x3f')]===_0x9a1a('0x47'))_0x25fece[_0x9a1a('0x48')]=_0x2e0181(_0x128851,_0x25fece['appdata']);_0x25fece[_0x9a1a('0x49')]=_0xc48395[_0x9a1a('0x24')]?_[_0x9a1a('0x4a')](_0xc48395)[_0x9a1a('0x49')]+0x1:_0x5bd579;_0x5cbf88=_[_0x9a1a('0x4b')](_0x5cbf88,_0xc48395,[_0x25fece],_0x338cbf);_0x5bd579=_['last'](_0x5cbf88)[_0x9a1a('0x49')]+0x1;}return _0x2d0123(_0x5cbf88);})[_0x9a1a('0x4c')](function(_0x1872f9){_0x38b287(_0x1872f9);});});}return _0x1e1445[_0x9a1a('0x4d')](_0x9a1a('0x4e'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x277152){var _0x50a8ee=this['get']({'plain':!![]});var _0x1a3719=_0x50a8ee[_0x9a1a('0x2')]===_0x9a1a('0xe')?_0xbcc4da(_0x50a8ee):_0x2197b8(_0x50a8ee);return _0x20b40f(_0x50a8ee,_0x277152,_[_0x9a1a('0x4a')](_0x1a3719)['priority']+0x1)[_0x9a1a('0x32')](function(_0x17e882){var _0x24e76b=_['concat'](_0x1a3719,_0x17e882);_0x24e76b[_0x9a1a('0xb')]({'type':_0x50a8ee['type'],'app':_0x9a1a('0x4f'),'exten':_0x50a8ee['exten'],'context':_0x50a8ee[_0x9a1a('0x8')],'priority':_[_0x9a1a('0x4a')](_0x24e76b)[_0x9a1a('0x49')]+0x1,'VoiceExtensionId':_0x50a8ee['id']});return _0x24e76b;});}}});};