2784c397e6a65496d4f97b0997af6f942e372ca8
[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 _0xb77f=['[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','Transcript\x20not\x20available','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','catch','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','info','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','Sentiment','SentimentScore','Negative','Neutral','FAILED','FailureReason'];(function(_0x3d73ba,_0x356e23){var _0x47e406=function(_0x90df31){while(--_0x90df31){_0x3d73ba['push'](_0x3d73ba['shift']());}};_0x47e406(++_0x356e23);}(_0xb77f,0x1b1));var _0xfb77=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb77f[_0x14add3];return _0x4a174f;};var _=require('lodash');var AWS=require(_0xfb77('0x0'));var rp=require('request-promise');var util=require(_0xfb77('0x1'));var BPromise=require(_0xfb77('0x2'));var db=require(_0xfb77('0x3'))['db'];var logger=require(_0xfb77('0x4'))(_0xfb77('0x5'));function getTranscriptionJob(_0x1647cc,_0x4373e6,_0x538043,_0x34c1af){return new Promise(function(_0x54addc,_0x1137e9){var _0x47e7c1=new AWS[(_0xfb77('0x6'))]({'accessKeyId':_0x4373e6,'secretAccessKey':_0x1647cc,'region':_0x538043});_0x47e7c1[_0xfb77('0x7')]({'TranscriptionJobName':_0x34c1af},function(_0x24db6a,_0x3dbc8e){if(_0x24db6a){return _0x1137e9(_0x24db6a);}else{return _0x54addc(_0x3dbc8e);}});});}function sentiment(_0x32935f,_0x3feb82,_0x3b521e,_0x10cbfb,_0x52b28b){return new Promise(function(_0x190868,_0x26c819){var _0x1c907a=new AWS[(_0xfb77('0x8'))]({'accessKeyId':_0x3feb82,'secretAccessKey':_0x32935f,'region':_0x3b521e});_0x1c907a[_0xfb77('0x9')]({'Text':_0x10cbfb,'LanguageCode':_0x52b28b['substring'](0x0,0x2)},function(_0x57c6b2,_0x2bec0f){if(_0x57c6b2){return _0x26c819(_0x57c6b2);}else{return _0x190868(_0x2bec0f);}});});}function checkTranscribeJob(_0x333bf6,_0x33e2ed,_0x2bbd8d){var _0x3ad98a;return new BPromise(function(_0x90f1da,_0x4687a0){logger['info'](util['format'](_0xfb77('0xa'),_0x333bf6['id'],_0x333bf6[_0xfb77('0xb')]));return getTranscriptionJob(_0x2bbd8d['data1'],_0x2bbd8d[_0xfb77('0xc')],_0x33e2ed[_0xfb77('0xd')],_0x333bf6['transcribeName'])[_0xfb77('0xe')](function(_0x4a98e3){logger[_0xfb77('0xf')](util[_0xfb77('0x10')](_0xfb77('0x11'),_0x333bf6['id'],_0x333bf6['transcribeName'],_0x4a98e3[_0xfb77('0x12')][_0xfb77('0x13')]));if(!_0x333bf6[_0xfb77('0x14')]){switch(_0x4a98e3[_0xfb77('0x12')]['TranscriptionJobStatus']){case _0xfb77('0x15'):var _0x482bb7={'transcribeStatus':_0x4a98e3[_0xfb77('0x12')][_0xfb77('0x13')],'fileUri':_0x4a98e3[_0xfb77('0x12')]['Transcript']['TranscriptFileUri']};logger['info'](util[_0xfb77('0x10')](_0xfb77('0x16'),_0x333bf6['id']));return rp({'uri':_0x4a98e3[_0xfb77('0x12')][_0xfb77('0x17')]['TranscriptFileUri'],'json':!![]})['then'](function(_0xd41288){logger['info'](util[_0xfb77('0x10')](_0xfb77('0x18'),_0x333bf6['id']));if(_0xd41288&&_0xd41288[_0xfb77('0x19')]&&_0xd41288[_0xfb77('0x19')][_0xfb77('0x1a')]&&_0xd41288[_0xfb77('0x19')][_0xfb77('0x1a')][_0xfb77('0x1b')]){_0x482bb7['fileText']='';for(var _0x595287=0x0;_0x595287<_0xd41288['results'][_0xfb77('0x1a')][_0xfb77('0x1b')];_0x595287++){_0x482bb7[_0xfb77('0x14')]+=_0xd41288[_0xfb77('0x19')][_0xfb77('0x1a')][_0x595287][_0xfb77('0x1c')]+'';}}return _0x333bf6[_0xfb77('0x1d')](_0x482bb7);})[_0xfb77('0xe')](function(){logger[_0xfb77('0xf')](util[_0xfb77('0x10')](_0xfb77('0x1e'),_0x333bf6['id']));if(!_0x333bf6['tempSentiment']){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x33e2ed[_0xfb77('0x21')]||!_0x33e2ed[_0xfb77('0x22')]||!_0x33e2ed[_0xfb77('0x23')]||!_0x33e2ed[_0xfb77('0x24')]||!_0x33e2ed[_0xfb77('0x25')]){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x26'));}if(!_0x482bb7[_0xfb77('0x14')]){throw new Error('Transcript\x20not\x20available');}if(_0x33e2ed[_0xfb77('0x22')]===_0x2bbd8d['id']){return _0x2bbd8d;}else{return db[_0xfb77('0x27')][_0xfb77('0x28')]({'where':{'id':_settings[_0xfb77('0x22')]}});}})[_0xfb77('0xe')](function(_0x5a9460){if(!_0x5a9460){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x29'));}if(!_0x5a9460[_0xfb77('0x2a')]||!_0x5a9460[_0xfb77('0xc')]){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x2b'));}_0x3ad98a=_0x5a9460;logger[_0xfb77('0xf')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x333bf6['id']));return sentiment(_0x3ad98a[_0xfb77('0x2a')],_0x3ad98a[_0xfb77('0xc')],_0x33e2ed[_0xfb77('0x23')],_0x482bb7[_0xfb77('0x14')],_0x33e2ed[_0xfb77('0x24')]);})['then'](function(_0x58d947){logger[_0xfb77('0xf')](util[_0xfb77('0x10')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x333bf6['id']));return _0x333bf6['update']({'sentiment':_0x58d947[_0xfb77('0x2c')],'sPositive':_0x58d947[_0xfb77('0x2d')]['Positive'],'sNegative':_0x58d947['SentimentScore'][_0xfb77('0x2e')],'sMixed':_0x58d947[_0xfb77('0x2d')]['Mixed'],'sNeutral':_0x58d947[_0xfb77('0x2d')][_0xfb77('0x2f')]});})[_0xfb77('0xe')](function(){logger[_0xfb77('0xf')](util[_0xfb77('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x333bf6['id']));_0x90f1da();});case _0xfb77('0x30'):return _0x333bf6[_0xfb77('0x1d')]({'transcribeStatus':'FAILED','failureReason':_0x4a98e3[_0xfb77('0x12')][_0xfb77('0x31')]})[_0xfb77('0xe')](function(){logger[_0xfb77('0xf')](util[_0xfb77('0x10')](_0xfb77('0x1e'),_0x333bf6['id']));_0x90f1da();});default:logger[_0xfb77('0xf')](util['format'](_0xfb77('0x32'),_0x333bf6['id']));break;}}else{return BPromise[_0xfb77('0x33')]()[_0xfb77('0xe')](function(){if(!_0x333bf6[_0xfb77('0x34')]){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x35'));}if(!_0x33e2ed[_0xfb77('0x21')]||!_0x33e2ed[_0xfb77('0x22')]||!_0x33e2ed[_0xfb77('0x23')]||!_0x33e2ed[_0xfb77('0x24')]||!_0x33e2ed[_0xfb77('0x25')]){throw new db['Sequelize'][(_0xfb77('0x20'))](_0xfb77('0x26'));}if(!_0x333bf6['fileText']){throw new Error(_0xfb77('0x36'));}if(_0x33e2ed[_0xfb77('0x22')]===_0x2bbd8d['id']){return _0x2bbd8d;}else{return db['CloudProvider'][_0xfb77('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xfb77('0xe')](function(_0x442a88){if(!_0x442a88){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x29'));}if(!_0x442a88[_0xfb77('0x2a')]||!_0x442a88[_0xfb77('0xc')]){throw new db['Sequelize'][(_0xfb77('0x20'))](_0xfb77('0x2b'));}_0x3ad98a=_0x442a88;logger[_0xfb77('0xf')](util[_0xfb77('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x333bf6['id']));return sentiment(_0x3ad98a[_0xfb77('0x2a')],_0x3ad98a['data2'],_0x33e2ed[_0xfb77('0x23')],_0x333bf6[_0xfb77('0x14')],_0x33e2ed[_0xfb77('0x24')]);})[_0xfb77('0xe')](function(_0x59c0a0){logger[_0xfb77('0xf')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x333bf6['id']));return _0x333bf6[_0xfb77('0x1d')]({'sentiment':_0x59c0a0[_0xfb77('0x2c')],'sPositive':_0x59c0a0[_0xfb77('0x2d')]['Positive'],'sNegative':_0x59c0a0['SentimentScore'][_0xfb77('0x2e')],'sMixed':_0x59c0a0[_0xfb77('0x2d')]['Mixed'],'sNeutral':_0x59c0a0['SentimentScore'][_0xfb77('0x2f')],'transcribeStatus':_0xfb77('0x15')});})[_0xfb77('0xe')](function(){logger[_0xfb77('0xf')](util['format'](_0xfb77('0x1e'),_0x333bf6['id']));_0x90f1da();});}})['catch'](function(_0x2e0097){if(_0x2e0097){if(!_0x2e0097[_0xfb77('0x37')]||_0x2e0097[_0xfb77('0x37')]!==_0xfb77('0x38')){logger[_0xfb77('0x39')](util[_0xfb77('0x10')](_0xfb77('0x3a'),_0x333bf6['id']),util[_0xfb77('0x3b')](_0x2e0097,{'showHidden':![],'depth':null}));}}_0x90f1da();});});}function checkTranscribe(){var _0x20e4c7;var _0x3c9ed9;var _0x16174c;return db[_0xfb77('0x3c')][_0xfb77('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xfb77('0xe')](function(_0x2073fc){if(!_0x2073fc||!_0x2073fc['length']){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x3e'));}_0x20e4c7=_0x2073fc;return db['Setting'][_0xfb77('0x28')]({'where':{'id':0x1}});})[_0xfb77('0xe')](function(_0x207a6b){if(!_0x207a6b){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x3f'));}_0x3c9ed9=_0x207a6b;if(!_0x3c9ed9[_0xfb77('0x5')]||!_0x3c9ed9[_0xfb77('0x40')]||!_0x3c9ed9[_0xfb77('0xd')]||!_0x3c9ed9['language']||!_0x3c9ed9[_0xfb77('0x25')]){throw new db['Sequelize']['ValidationError'](_0xfb77('0x41'));}return db[_0xfb77('0x27')][_0xfb77('0x28')]({'where':{'id':_0x3c9ed9['transcribeAccountId']}});})[_0xfb77('0xe')](function(_0x13273e){if(!_0x13273e){throw new db['Sequelize'][(_0xfb77('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x13273e[_0xfb77('0x2a')]||!_0x13273e['data2']){throw new db[(_0xfb77('0x1f'))][(_0xfb77('0x20'))](_0xfb77('0x2b'));}_0x16174c=_0x13273e;var _0x57d557=[];_0x20e4c7[_0xfb77('0x42')](function(_0x1d1651){_0x57d557[_0xfb77('0x43')](checkTranscribeJob(_0x1d1651,_0x3c9ed9,_0x16174c));});return BPromise['all'](_0x57d557);})[_0xfb77('0x44')](function(_0x119bba){if(_0x119bba){if(!_0x119bba[_0xfb77('0x37')]||_0x119bba[_0xfb77('0x37')]!=='SequelizeValidationError'){logger['error'](util[_0xfb77('0x3b')](_0x119bba,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};