f091e213fa5218f8cd251a3e1ed56f6184717337
[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 _0x13b6=['[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','SequelizeValidationError','lodash','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','findOne','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','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Transcript\x20not\x20available','CloudProvider','catch','name','error'];(function(_0x368e09,_0x2c1517){var _0x14b7df=function(_0x5002af){while(--_0x5002af){_0x368e09['push'](_0x368e09['shift']());}};_0x14b7df(++_0x2c1517);}(_0x13b6,0x97));var _0x613b=function(_0x200c86,_0x468001){_0x200c86=_0x200c86-0x0;var _0xed178c=_0x13b6[_0x200c86];return _0xed178c;};var _=require(_0x613b('0x0'));var AWS=require('aws-sdk');var rp=require(_0x613b('0x1'));var util=require(_0x613b('0x2'));var BPromise=require(_0x613b('0x3'));var db=require(_0x613b('0x4'))['db'];var logger=require('../../config/logger')(_0x613b('0x5'));function getTranscriptionJob(_0x1dc7f9,_0x451191,_0x50fb84,_0x44d5d8){return new Promise(function(_0x1c746e,_0x312a27){var _0x593a18=new AWS[(_0x613b('0x6'))]({'accessKeyId':_0x451191,'secretAccessKey':_0x1dc7f9,'region':_0x50fb84});_0x593a18['getTranscriptionJob']({'TranscriptionJobName':_0x44d5d8},function(_0xf83c34,_0x4abb96){if(_0xf83c34){return _0x312a27(_0xf83c34);}else{return _0x1c746e(_0x4abb96);}});});}function sentiment(_0x5a7415,_0x1cef76,_0x37dbc7,_0x2fac8d,_0x402c15){return new Promise(function(_0x40cd30,_0x5989f7){var _0x51a45f=new AWS[(_0x613b('0x7'))]({'accessKeyId':_0x1cef76,'secretAccessKey':_0x5a7415,'region':_0x37dbc7});_0x51a45f['detectSentiment']({'Text':_0x2fac8d,'LanguageCode':_0x402c15[_0x613b('0x8')](0x0,0x2)},function(_0x579400,_0x59829f){if(_0x579400){return _0x5989f7(_0x579400);}else{return _0x40cd30(_0x59829f);}});});}function checkTranscribeJob(_0x2f6cd6,_0x408b5f,_0x1567cd){var _0x4afa45;return new BPromise(function(_0x1d31f8,_0x2931ee){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0xb'),_0x2f6cd6['id'],_0x2f6cd6[_0x613b('0xc')]));return getTranscriptionJob(_0x1567cd[_0x613b('0xd')],_0x1567cd[_0x613b('0xe')],_0x408b5f[_0x613b('0xf')],_0x2f6cd6[_0x613b('0xc')])['then'](function(_0xa74b30){logger[_0x613b('0x9')](util[_0x613b('0xa')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x2f6cd6['id'],_0x2f6cd6['transcribeName'],_0xa74b30[_0x613b('0x10')]['TranscriptionJobStatus']));if(!_0x2f6cd6[_0x613b('0x11')]){switch(_0xa74b30['TranscriptionJob'][_0x613b('0x12')]){case _0x613b('0x13'):var _0x34cd14={'transcribeStatus':_0xa74b30[_0x613b('0x10')][_0x613b('0x12')],'fileUri':_0xa74b30[_0x613b('0x10')][_0x613b('0x14')]['TranscriptFileUri']};logger[_0x613b('0x9')](util[_0x613b('0xa')]('[RECORDING:%d]\x20Get\x20transcript',_0x2f6cd6['id']));return rp({'uri':_0xa74b30['TranscriptionJob'][_0x613b('0x14')][_0x613b('0x15')],'json':!![]})[_0x613b('0x16')](function(_0x425ebb){logger[_0x613b('0x9')](util['format'](_0x613b('0x17'),_0x2f6cd6['id']));if(_0x425ebb&&_0x425ebb['results']&&_0x425ebb[_0x613b('0x18')][_0x613b('0x19')]&&_0x425ebb[_0x613b('0x18')][_0x613b('0x19')]['length']){_0x34cd14[_0x613b('0x11')]='';for(var _0x4eb354=0x0;_0x4eb354<_0x425ebb[_0x613b('0x18')]['transcripts'][_0x613b('0x1a')];_0x4eb354++){_0x34cd14[_0x613b('0x11')]+=_0x425ebb[_0x613b('0x18')][_0x613b('0x19')][_0x4eb354][_0x613b('0x1b')]+'';}}return _0x2f6cd6[_0x613b('0x1c')](_0x34cd14);})[_0x613b('0x16')](function(){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x1d'),_0x2f6cd6['id']));if(!_0x2f6cd6[_0x613b('0x1e')]){throw new db[(_0x613b('0x1f'))]['ValidationError'](_0x613b('0x20'));}if(!_0x408b5f[_0x613b('0x21')]||!_0x408b5f[_0x613b('0x22')]||!_0x408b5f[_0x613b('0x23')]||!_0x408b5f[_0x613b('0x24')]||!_0x408b5f[_0x613b('0x25')]){throw new db[(_0x613b('0x1f'))]['ValidationError'](_0x613b('0x26'));}if(!_0x34cd14[_0x613b('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x408b5f[_0x613b('0x22')]===_0x1567cd['id']){return _0x1567cd;}else{return db['CloudProvider'][_0x613b('0x27')]({'where':{'id':_settings[_0x613b('0x22')]}});}})['then'](function(_0x3306ee){if(!_0x3306ee){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x29'));}if(!_0x3306ee[_0x613b('0xd')]||!_0x3306ee[_0x613b('0xe')]){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x2a'));}_0x4afa45=_0x3306ee;logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x2b'),_0x2f6cd6['id']));return sentiment(_0x4afa45[_0x613b('0xd')],_0x4afa45['data2'],_0x408b5f[_0x613b('0x23')],_0x34cd14[_0x613b('0x11')],_0x408b5f[_0x613b('0x24')]);})[_0x613b('0x16')](function(_0x5e577e){logger['info'](util[_0x613b('0xa')](_0x613b('0x2c'),_0x2f6cd6['id']));return _0x2f6cd6[_0x613b('0x1c')]({'sentiment':_0x5e577e[_0x613b('0x2d')],'sPositive':_0x5e577e[_0x613b('0x2e')][_0x613b('0x2f')],'sNegative':_0x5e577e[_0x613b('0x2e')]['Negative'],'sMixed':_0x5e577e[_0x613b('0x2e')][_0x613b('0x30')],'sNeutral':_0x5e577e[_0x613b('0x2e')][_0x613b('0x31')]});})[_0x613b('0x16')](function(){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x1d'),_0x2f6cd6['id']));_0x1d31f8();});case _0x613b('0x32'):return _0x2f6cd6[_0x613b('0x1c')]({'transcribeStatus':_0x613b('0x32'),'failureReason':_0xa74b30[_0x613b('0x10')][_0x613b('0x33')]})[_0x613b('0x16')](function(){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x1d'),_0x2f6cd6['id']));_0x1d31f8();});default:logger[_0x613b('0x9')](util['format'](_0x613b('0x34'),_0x2f6cd6['id']));break;}}else{return BPromise[_0x613b('0x35')]()[_0x613b('0x16')](function(){if(!_0x2f6cd6[_0x613b('0x1e')]){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x20'));}if(!_0x408b5f[_0x613b('0x21')]||!_0x408b5f[_0x613b('0x22')]||!_0x408b5f[_0x613b('0x23')]||!_0x408b5f[_0x613b('0x24')]||!_0x408b5f['bucket']){throw new db[(_0x613b('0x1f'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x2f6cd6[_0x613b('0x11')]){throw new Error(_0x613b('0x36'));}if(_0x408b5f[_0x613b('0x22')]===_0x1567cd['id']){return _0x1567cd;}else{return db[_0x613b('0x37')]['findOne']({'where':{'id':_settings[_0x613b('0x22')]}});}})['then'](function(_0x33671a){if(!_0x33671a){throw new db[(_0x613b('0x1f'))]['ValidationError'](_0x613b('0x29'));}if(!_0x33671a['data1']||!_0x33671a['data2']){throw new db['Sequelize']['ValidationError'](_0x613b('0x2a'));}_0x4afa45=_0x33671a;logger['info'](util[_0x613b('0xa')](_0x613b('0x2b'),_0x2f6cd6['id']));return sentiment(_0x4afa45['data1'],_0x4afa45[_0x613b('0xe')],_0x408b5f[_0x613b('0x23')],_0x2f6cd6[_0x613b('0x11')],_0x408b5f[_0x613b('0x24')]);})['then'](function(_0x5c184a){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x2c'),_0x2f6cd6['id']));return _0x2f6cd6['update']({'sentiment':_0x5c184a['Sentiment'],'sPositive':_0x5c184a[_0x613b('0x2e')][_0x613b('0x2f')],'sNegative':_0x5c184a[_0x613b('0x2e')]['Negative'],'sMixed':_0x5c184a['SentimentScore'][_0x613b('0x30')],'sNeutral':_0x5c184a[_0x613b('0x2e')][_0x613b('0x31')],'transcribeStatus':_0x613b('0x13')});})[_0x613b('0x16')](function(){logger[_0x613b('0x9')](util[_0x613b('0xa')](_0x613b('0x1d'),_0x2f6cd6['id']));_0x1d31f8();});}})[_0x613b('0x38')](function(_0x2b856e){if(_0x2b856e){if(!_0x2b856e[_0x613b('0x39')]||_0x2b856e[_0x613b('0x39')]!=='SequelizeValidationError'){logger[_0x613b('0x3a')](util[_0x613b('0xa')](_0x613b('0x3b'),_0x2f6cd6['id']),util[_0x613b('0x3c')](_0x2b856e,{'showHidden':![],'depth':null}));}}_0x1d31f8();});});}function checkTranscribe(){var _0x20f32b;var _0x5dcb8e;var _0x1e6226;return db[_0x613b('0x3d')][_0x613b('0x3e')]({'where':{'transcribeStatus':_0x613b('0x3f')}})[_0x613b('0x16')](function(_0x31f2d1){if(!_0x31f2d1||!_0x31f2d1[_0x613b('0x1a')]){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x40'));}_0x20f32b=_0x31f2d1;return db[_0x613b('0x41')][_0x613b('0x27')]({'where':{'id':0x1}});})[_0x613b('0x16')](function(_0x77daf3){if(!_0x77daf3){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x42'));}_0x5dcb8e=_0x77daf3;if(!_0x5dcb8e[_0x613b('0x5')]||!_0x5dcb8e[_0x613b('0x43')]||!_0x5dcb8e['transcribeRegion']||!_0x5dcb8e[_0x613b('0x24')]||!_0x5dcb8e[_0x613b('0x25')]){throw new db[(_0x613b('0x1f'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x613b('0x37')][_0x613b('0x27')]({'where':{'id':_0x5dcb8e[_0x613b('0x43')]}});})['then'](function(_0x23116e){if(!_0x23116e){throw new db[(_0x613b('0x1f'))]['ValidationError'](_0x613b('0x29'));}if(!_0x23116e[_0x613b('0xd')]||!_0x23116e[_0x613b('0xe')]){throw new db[(_0x613b('0x1f'))][(_0x613b('0x28'))](_0x613b('0x2a'));}_0x1e6226=_0x23116e;var _0x5ef07a=[];_0x20f32b[_0x613b('0x44')](function(_0x2bab8f){_0x5ef07a['push'](checkTranscribeJob(_0x2bab8f,_0x5dcb8e,_0x1e6226));});return BPromise['all'](_0x5ef07a);})[_0x613b('0x38')](function(_0x56a788){if(_0x56a788){if(!_0x56a788['name']||_0x56a788[_0x613b('0x39')]!==_0x613b('0x45')){logger[_0x613b('0x3a')](util[_0x613b('0x3c')](_0x56a788,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};