Built motion from commit (unavailable).|2.6.0
[motion2.git] / server / config / schedule / transcribe.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 _0x65bb=['name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','CloudProvider','transcribeAccountId','push','all','catch','inspect','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','info','format','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','bucket','Transcript\x20not\x20available','ValidationError','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','resolve','language','findOne','Negative'];(function(_0x57cf0e,_0x2b61eb){var _0x5bb2bd=function(_0x54e1a3){while(--_0x54e1a3){_0x57cf0e['push'](_0x57cf0e['shift']());}};_0x5bb2bd(++_0x2b61eb);}(_0x65bb,0x9f));var _0xb65b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x65bb[_0x3dd15e];return _0x231fd0;};var _=require(_0xb65b('0x0'));var AWS=require(_0xb65b('0x1'));var rp=require(_0xb65b('0x2'));var util=require(_0xb65b('0x3'));var BPromise=require(_0xb65b('0x4'));var db=require(_0xb65b('0x5'))['db'];var logger=require(_0xb65b('0x6'))(_0xb65b('0x7'));function getTranscriptionJob(_0x21d2bf,_0x2ef95d,_0x5e0fe7,_0x26072e){return new Promise(function(_0x5625b1,_0x5a3124){var _0x5128aa=new AWS[(_0xb65b('0x8'))]({'accessKeyId':_0x2ef95d,'secretAccessKey':_0x21d2bf,'region':_0x5e0fe7});_0x5128aa[_0xb65b('0x9')]({'TranscriptionJobName':_0x26072e},function(_0x58ed16,_0x216d7a){if(_0x58ed16){return _0x5a3124(_0x58ed16);}else{return _0x5625b1(_0x216d7a);}});});}function sentiment(_0x26340a,_0x3bb50b,_0x40cbdb,_0x53c4aa,_0x50200){return new Promise(function(_0x1c83fb,_0x14c5b0){var _0x11b024=new AWS['Comprehend']({'accessKeyId':_0x3bb50b,'secretAccessKey':_0x26340a,'region':_0x40cbdb});_0x11b024[_0xb65b('0xa')]({'Text':_0x53c4aa,'LanguageCode':_0x50200[_0xb65b('0xb')](0x0,0x2)},function(_0x23be7b,_0x39254f){if(_0x23be7b){return _0x14c5b0(_0x23be7b);}else{return _0x1c83fb(_0x39254f);}});});}function checkTranscribeJob(_0x7fe89,_0x5319f3,_0x2a52d6){var _0x5bcfda;return new BPromise(function(_0x33a7c1,_0x962cae){logger['info'](util['format'](_0xb65b('0xc'),_0x7fe89['id'],_0x7fe89['transcribeName']));return getTranscriptionJob(_0x2a52d6[_0xb65b('0xd')],_0x2a52d6[_0xb65b('0xe')],_0x5319f3[_0xb65b('0xf')],_0x7fe89[_0xb65b('0x10')])[_0xb65b('0x11')](function(_0xdc2f6b){logger[_0xb65b('0x12')](util[_0xb65b('0x13')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x7fe89['id'],_0x7fe89['transcribeName'],_0xdc2f6b[_0xb65b('0x14')]['TranscriptionJobStatus']));if(!_0x7fe89[_0xb65b('0x15')]){switch(_0xdc2f6b[_0xb65b('0x14')][_0xb65b('0x16')]){case _0xb65b('0x17'):var _0x52fae9={'transcribeStatus':_0xdc2f6b[_0xb65b('0x14')][_0xb65b('0x16')],'fileUri':_0xdc2f6b[_0xb65b('0x14')]['Transcript'][_0xb65b('0x18')]};logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x19'),_0x7fe89['id']));return rp({'uri':_0xdc2f6b[_0xb65b('0x14')][_0xb65b('0x1a')][_0xb65b('0x18')],'json':!![]})[_0xb65b('0x11')](function(_0x3df4e2){logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x1b'),_0x7fe89['id']));if(_0x3df4e2&&_0x3df4e2[_0xb65b('0x1c')]&&_0x3df4e2[_0xb65b('0x1c')][_0xb65b('0x1d')]&&_0x3df4e2[_0xb65b('0x1c')][_0xb65b('0x1d')]['length']){_0x52fae9[_0xb65b('0x15')]='';for(var _0x592616=0x0;_0x592616<_0x3df4e2[_0xb65b('0x1c')][_0xb65b('0x1d')][_0xb65b('0x1e')];_0x592616++){_0x52fae9[_0xb65b('0x15')]+=_0x3df4e2[_0xb65b('0x1c')][_0xb65b('0x1d')][_0x592616][_0xb65b('0x1f')]+'';}}return _0x7fe89[_0xb65b('0x20')](_0x52fae9);})[_0xb65b('0x11')](function(){logger[_0xb65b('0x12')](util['format'](_0xb65b('0x21'),_0x7fe89['id']));if(!_0x7fe89[_0xb65b('0x22')]){throw new db[(_0xb65b('0x23'))]['ValidationError'](_0xb65b('0x24'));}if(!_0x5319f3[_0xb65b('0x25')]||!_0x5319f3[_0xb65b('0x26')]||!_0x5319f3[_0xb65b('0x27')]||!_0x5319f3['language']||!_0x5319f3[_0xb65b('0x28')]){throw new db[(_0xb65b('0x23'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x52fae9['fileText']){throw new Error(_0xb65b('0x29'));}if(_0x5319f3[_0xb65b('0x26')]===_0x2a52d6['id']){return _0x2a52d6;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xb65b('0x26')]}});}})[_0xb65b('0x11')](function(_0x36309d){if(!_0x36309d){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))](_0xb65b('0x2b'));}if(!_0x36309d['data1']||!_0x36309d[_0xb65b('0xe')]){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))](_0xb65b('0x2c'));}_0x5bcfda=_0x36309d;logger[_0xb65b('0x12')](util['format'](_0xb65b('0x2d'),_0x7fe89['id']));return sentiment(_0x5bcfda[_0xb65b('0xd')],_0x5bcfda[_0xb65b('0xe')],_0x5319f3[_0xb65b('0x27')],_0x52fae9['fileText'],_0x5319f3['language']);})[_0xb65b('0x11')](function(_0x1990a9){logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x2e'),_0x7fe89['id']));return _0x7fe89[_0xb65b('0x20')]({'sentiment':_0x1990a9[_0xb65b('0x2f')],'sPositive':_0x1990a9[_0xb65b('0x30')][_0xb65b('0x31')],'sNegative':_0x1990a9[_0xb65b('0x30')]['Negative'],'sMixed':_0x1990a9[_0xb65b('0x30')][_0xb65b('0x32')],'sNeutral':_0x1990a9[_0xb65b('0x30')][_0xb65b('0x33')]});})[_0xb65b('0x11')](function(){logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x21'),_0x7fe89['id']));_0x33a7c1();});case'FAILED':return _0x7fe89[_0xb65b('0x20')]({'transcribeStatus':_0xb65b('0x34'),'failureReason':_0xdc2f6b[_0xb65b('0x14')]['FailureReason']})[_0xb65b('0x11')](function(){logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x21'),_0x7fe89['id']));_0x33a7c1();});default:logger[_0xb65b('0x12')](util[_0xb65b('0x13')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x7fe89['id']));break;}}else{return BPromise[_0xb65b('0x35')]()[_0xb65b('0x11')](function(){if(!_0x7fe89[_0xb65b('0x22')]){throw new db[(_0xb65b('0x23'))]['ValidationError'](_0xb65b('0x24'));}if(!_0x5319f3[_0xb65b('0x25')]||!_0x5319f3[_0xb65b('0x26')]||!_0x5319f3[_0xb65b('0x27')]||!_0x5319f3[_0xb65b('0x36')]||!_0x5319f3[_0xb65b('0x28')]){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x7fe89['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x5319f3[_0xb65b('0x26')]===_0x2a52d6['id']){return _0x2a52d6;}else{return db['CloudProvider'][_0xb65b('0x37')]({'where':{'id':_settings[_0xb65b('0x26')]}});}})[_0xb65b('0x11')](function(_0x2745bd){if(!_0x2745bd){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x2745bd[_0xb65b('0xd')]||!_0x2745bd[_0xb65b('0xe')]){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))](_0xb65b('0x2c'));}_0x5bcfda=_0x2745bd;logger[_0xb65b('0x12')](util['format'](_0xb65b('0x2d'),_0x7fe89['id']));return sentiment(_0x5bcfda[_0xb65b('0xd')],_0x5bcfda[_0xb65b('0xe')],_0x5319f3[_0xb65b('0x27')],_0x7fe89[_0xb65b('0x15')],_0x5319f3[_0xb65b('0x36')]);})[_0xb65b('0x11')](function(_0x50b54e){logger[_0xb65b('0x12')](util[_0xb65b('0x13')](_0xb65b('0x2e'),_0x7fe89['id']));return _0x7fe89[_0xb65b('0x20')]({'sentiment':_0x50b54e[_0xb65b('0x2f')],'sPositive':_0x50b54e[_0xb65b('0x30')][_0xb65b('0x31')],'sNegative':_0x50b54e['SentimentScore'][_0xb65b('0x38')],'sMixed':_0x50b54e[_0xb65b('0x30')]['Mixed'],'sNeutral':_0x50b54e[_0xb65b('0x30')][_0xb65b('0x33')],'transcribeStatus':_0xb65b('0x17')});})['then'](function(){logger['info'](util['format'](_0xb65b('0x21'),_0x7fe89['id']));_0x33a7c1();});}})['catch'](function(_0x90ef7e){if(_0x90ef7e){if(!_0x90ef7e[_0xb65b('0x39')]||_0x90ef7e[_0xb65b('0x39')]!==_0xb65b('0x3a')){logger[_0xb65b('0x3b')](util[_0xb65b('0x13')](_0xb65b('0x3c'),_0x7fe89['id']),util['inspect'](_0x90ef7e,{'showHidden':![],'depth':null}));}}_0x33a7c1();});});}function checkTranscribe(){var _0x4e72e1;var _0x193ef1;var _0x13f699;return db[_0xb65b('0x3d')]['findAll']({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xb65b('0x11')](function(_0x525a18){if(!_0x525a18||!_0x525a18[_0xb65b('0x1e')]){throw new db['Sequelize'][(_0xb65b('0x2a'))](_0xb65b('0x3e'));}_0x4e72e1=_0x525a18;return db[_0xb65b('0x3f')]['findOne']({'where':{'id':0x1}});})[_0xb65b('0x11')](function(_0x4f6312){if(!_0x4f6312){throw new db['Sequelize'][(_0xb65b('0x2a'))](_0xb65b('0x40'));}_0x193ef1=_0x4f6312;if(!_0x193ef1[_0xb65b('0x7')]||!_0x193ef1['transcribeAccountId']||!_0x193ef1[_0xb65b('0xf')]||!_0x193ef1['language']||!_0x193ef1['bucket']){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))](_0xb65b('0x41'));}return db[_0xb65b('0x42')][_0xb65b('0x37')]({'where':{'id':_0x193ef1[_0xb65b('0x43')]}});})['then'](function(_0x90d88){if(!_0x90d88){throw new db[(_0xb65b('0x23'))][(_0xb65b('0x2a'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x90d88[_0xb65b('0xd')]||!_0x90d88[_0xb65b('0xe')]){throw new db['Sequelize'][(_0xb65b('0x2a'))](_0xb65b('0x2c'));}_0x13f699=_0x90d88;var _0x1644ba=[];_0x4e72e1['forEach'](function(_0x505965){_0x1644ba[_0xb65b('0x44')](checkTranscribeJob(_0x505965,_0x193ef1,_0x13f699));});return BPromise[_0xb65b('0x45')](_0x1644ba);})[_0xb65b('0x46')](function(_0xadff9c){if(_0xadff9c){if(!_0xadff9c[_0xb65b('0x39')]||_0xadff9c['name']!==_0xb65b('0x3a')){logger[_0xb65b('0x3b')](util[_0xb65b('0x47')](_0xadff9c,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};