ac8ef7eb24f38762b38712667f149afcf0a9618f
[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 _0xfa12=['findAll','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','transcribeRegion','forEach','push','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','getTranscriptionJob','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','SentimentScore','Positive','Negative','Mixed','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Neutral','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording'];(function(_0x284cea,_0x3897b5){var _0x289a8c=function(_0x100c7b){while(--_0x100c7b){_0x284cea['push'](_0x284cea['shift']());}};_0x289a8c(++_0x3897b5);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x267fd4,_0x87962b){_0x267fd4=_0x267fd4-0x0;var _0x15bf9e=_0xfa12[_0x267fd4];return _0x15bf9e;};var _=require(_0x2fa1('0x0'));var AWS=require(_0x2fa1('0x1'));var rp=require('request-promise');var util=require(_0x2fa1('0x2'));var BPromise=require(_0x2fa1('0x3'));var db=require(_0x2fa1('0x4'))['db'];var logger=require(_0x2fa1('0x5'))('transcribe');function getTranscriptionJob(_0x2022bf,_0x358fe1,_0x16af7f,_0x2fce56){return new Promise(function(_0x4d61b0,_0x166949){var _0x25b233=new AWS['TranscribeService']({'accessKeyId':_0x358fe1,'secretAccessKey':_0x2022bf,'region':_0x16af7f});_0x25b233[_0x2fa1('0x6')]({'TranscriptionJobName':_0x2fce56},function(_0x30a897,_0x2a9dc4){if(_0x30a897){return _0x166949(_0x30a897);}else{return _0x4d61b0(_0x2a9dc4);}});});}function sentiment(_0x196a04,_0x4e0ed4,_0x3ac971,_0x27ca4f,_0x573922){return new Promise(function(_0x27f9f9,_0x3de569){var _0xcef14=new AWS[(_0x2fa1('0x7'))]({'accessKeyId':_0x4e0ed4,'secretAccessKey':_0x196a04,'region':_0x3ac971});_0xcef14[_0x2fa1('0x8')]({'Text':_0x27ca4f,'LanguageCode':_0x573922[_0x2fa1('0x9')](0x0,0x2)},function(_0x3bef10,_0x34f8cc){if(_0x3bef10){return _0x3de569(_0x3bef10);}else{return _0x27f9f9(_0x34f8cc);}});});}function checkTranscribeJob(_0x4b5c18,_0x305bb3,_0x4198e1){var _0x311441;return new BPromise(function(_0x3ccc0e,_0x27a61a){logger[_0x2fa1('0xa')](util['format'](_0x2fa1('0xb'),_0x4b5c18['id'],_0x4b5c18[_0x2fa1('0xc')]));return getTranscriptionJob(_0x4198e1[_0x2fa1('0xd')],_0x4198e1[_0x2fa1('0xe')],_0x305bb3['transcribeRegion'],_0x4b5c18[_0x2fa1('0xc')])[_0x2fa1('0xf')](function(_0x59aa4d){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x11'),_0x4b5c18['id'],_0x4b5c18[_0x2fa1('0xc')],_0x59aa4d[_0x2fa1('0x12')][_0x2fa1('0x13')]));if(!_0x4b5c18[_0x2fa1('0x14')]){switch(_0x59aa4d[_0x2fa1('0x12')]['TranscriptionJobStatus']){case _0x2fa1('0x15'):var _0x52812b={'transcribeStatus':_0x59aa4d['TranscriptionJob'][_0x2fa1('0x13')],'fileUri':_0x59aa4d[_0x2fa1('0x12')][_0x2fa1('0x16')][_0x2fa1('0x17')]};logger[_0x2fa1('0xa')](util['format'](_0x2fa1('0x18'),_0x4b5c18['id']));return rp({'uri':_0x59aa4d['TranscriptionJob'][_0x2fa1('0x16')][_0x2fa1('0x17')],'json':!![]})[_0x2fa1('0xf')](function(_0x245898){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x19'),_0x4b5c18['id']));if(_0x245898&&_0x245898[_0x2fa1('0x1a')]&&_0x245898[_0x2fa1('0x1a')][_0x2fa1('0x1b')]&&_0x245898['results'][_0x2fa1('0x1b')]['length']){_0x52812b['fileText']='';for(var _0x5e255a=0x0;_0x5e255a<_0x245898[_0x2fa1('0x1a')]['transcripts']['length'];_0x5e255a++){_0x52812b[_0x2fa1('0x14')]+=_0x245898[_0x2fa1('0x1a')][_0x2fa1('0x1b')][_0x5e255a][_0x2fa1('0x1c')]+'';}}return _0x4b5c18[_0x2fa1('0x1d')](_0x52812b);})[_0x2fa1('0xf')](function(){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x1e'),_0x4b5c18['id']));if(!_0x4b5c18[_0x2fa1('0x1f')]){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x22'));}if(!_0x305bb3[_0x2fa1('0x23')]||!_0x305bb3[_0x2fa1('0x24')]||!_0x305bb3[_0x2fa1('0x25')]||!_0x305bb3[_0x2fa1('0x26')]||!_0x305bb3[_0x2fa1('0x27')]){throw new db['Sequelize'][(_0x2fa1('0x21'))](_0x2fa1('0x28'));}if(!_0x52812b['fileText']){throw new Error(_0x2fa1('0x29'));}if(_0x305bb3[_0x2fa1('0x24')]===_0x4198e1['id']){return _0x4198e1;}else{return db[_0x2fa1('0x2a')][_0x2fa1('0x2b')]({'where':{'id':_settings[_0x2fa1('0x24')]}});}})['then'](function(_0x2b4a68){if(!_0x2b4a68){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x2c'));}if(!_0x2b4a68['data1']||!_0x2b4a68[_0x2fa1('0xe')]){throw new db[(_0x2fa1('0x20'))]['ValidationError'](_0x2fa1('0x2d'));}_0x311441=_0x2b4a68;logger['info'](util[_0x2fa1('0x10')](_0x2fa1('0x2e'),_0x4b5c18['id']));return sentiment(_0x311441[_0x2fa1('0xd')],_0x311441[_0x2fa1('0xe')],_0x305bb3[_0x2fa1('0x25')],_0x52812b[_0x2fa1('0x14')],_0x305bb3[_0x2fa1('0x26')]);})[_0x2fa1('0xf')](function(_0x5dde4b){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4b5c18['id']));return _0x4b5c18[_0x2fa1('0x1d')]({'sentiment':_0x5dde4b[_0x2fa1('0x2f')],'sPositive':_0x5dde4b[_0x2fa1('0x30')][_0x2fa1('0x31')],'sNegative':_0x5dde4b[_0x2fa1('0x30')][_0x2fa1('0x32')],'sMixed':_0x5dde4b[_0x2fa1('0x30')][_0x2fa1('0x33')],'sNeutral':_0x5dde4b['SentimentScore']['Neutral']});})['then'](function(){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4b5c18['id']));_0x3ccc0e();});case'FAILED':return _0x4b5c18[_0x2fa1('0x1d')]({'transcribeStatus':'FAILED','failureReason':_0x59aa4d[_0x2fa1('0x12')]['FailureReason']})[_0x2fa1('0xf')](function(){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x1e'),_0x4b5c18['id']));_0x3ccc0e();});default:logger['info'](util['format'](_0x2fa1('0x34'),_0x4b5c18['id']));break;}}else{return BPromise[_0x2fa1('0x35')]()[_0x2fa1('0xf')](function(){if(!_0x4b5c18[_0x2fa1('0x1f')]){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x22'));}if(!_0x305bb3[_0x2fa1('0x23')]||!_0x305bb3['sentimentAccountId']||!_0x305bb3[_0x2fa1('0x25')]||!_0x305bb3[_0x2fa1('0x26')]||!_0x305bb3['bucket']){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x28'));}if(!_0x4b5c18[_0x2fa1('0x14')]){throw new Error(_0x2fa1('0x29'));}if(_0x305bb3[_0x2fa1('0x24')]===_0x4198e1['id']){return _0x4198e1;}else{return db[_0x2fa1('0x2a')]['findOne']({'where':{'id':_settings[_0x2fa1('0x24')]}});}})[_0x2fa1('0xf')](function(_0x30f313){if(!_0x30f313){throw new db[(_0x2fa1('0x20'))]['ValidationError'](_0x2fa1('0x2c'));}if(!_0x30f313[_0x2fa1('0xd')]||!_0x30f313[_0x2fa1('0xe')]){throw new db[(_0x2fa1('0x20'))]['ValidationError'](_0x2fa1('0x2d'));}_0x311441=_0x30f313;logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x2e'),_0x4b5c18['id']));return sentiment(_0x311441[_0x2fa1('0xd')],_0x311441[_0x2fa1('0xe')],_0x305bb3[_0x2fa1('0x25')],_0x4b5c18[_0x2fa1('0x14')],_0x305bb3[_0x2fa1('0x26')]);})[_0x2fa1('0xf')](function(_0x4b4ba2){logger['info'](util['format'](_0x2fa1('0x36'),_0x4b5c18['id']));return _0x4b5c18['update']({'sentiment':_0x4b4ba2['Sentiment'],'sPositive':_0x4b4ba2['SentimentScore'][_0x2fa1('0x31')],'sNegative':_0x4b4ba2[_0x2fa1('0x30')][_0x2fa1('0x32')],'sMixed':_0x4b4ba2[_0x2fa1('0x30')]['Mixed'],'sNeutral':_0x4b4ba2[_0x2fa1('0x30')][_0x2fa1('0x37')],'transcribeStatus':_0x2fa1('0x15')});})[_0x2fa1('0xf')](function(){logger[_0x2fa1('0xa')](util[_0x2fa1('0x10')](_0x2fa1('0x1e'),_0x4b5c18['id']));_0x3ccc0e();});}})[_0x2fa1('0x38')](function(_0x4103e5){if(_0x4103e5){if(!_0x4103e5[_0x2fa1('0x39')]||_0x4103e5['name']!==_0x2fa1('0x3a')){logger[_0x2fa1('0x3b')](util[_0x2fa1('0x10')](_0x2fa1('0x3c'),_0x4b5c18['id']),util[_0x2fa1('0x3d')](_0x4103e5,{'showHidden':![],'depth':null}));}}_0x3ccc0e();});});}function checkTranscribe(){var _0x5e2dcd;var _0x298534;var _0x2410e4;return db[_0x2fa1('0x3e')][_0x2fa1('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x445011){if(!_0x445011||!_0x445011['length']){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x40'));}_0x5e2dcd=_0x445011;return db[_0x2fa1('0x41')][_0x2fa1('0x2b')]({'where':{'id':0x1}});})[_0x2fa1('0xf')](function(_0x5198b1){if(!_0x5198b1){throw new db['Sequelize']['ValidationError']('Settings\x20not\x20available');}_0x298534=_0x5198b1;if(!_0x298534['transcribe']||!_0x298534[_0x2fa1('0x42')]||!_0x298534[_0x2fa1('0x43')]||!_0x298534[_0x2fa1('0x26')]||!_0x298534[_0x2fa1('0x27')]){throw new db[(_0x2fa1('0x20'))]['ValidationError']('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x2fa1('0x2b')]({'where':{'id':_0x298534[_0x2fa1('0x42')]}});})['then'](function(_0x129b9b){if(!_0x129b9b){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))](_0x2fa1('0x2c'));}if(!_0x129b9b[_0x2fa1('0xd')]||!_0x129b9b['data2']){throw new db[(_0x2fa1('0x20'))][(_0x2fa1('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x2410e4=_0x129b9b;var _0x499840=[];_0x5e2dcd[_0x2fa1('0x44')](function(_0x2d690d){_0x499840[_0x2fa1('0x45')](checkTranscribeJob(_0x2d690d,_0x298534,_0x2410e4));});return BPromise['all'](_0x499840);})[_0x2fa1('0x38')](function(_0x38c12a){if(_0x38c12a){if(!_0x38c12a[_0x2fa1('0x39')]||_0x38c12a[_0x2fa1('0x39')]!==_0x2fa1('0x3a')){logger['error'](util[_0x2fa1('0x3d')](_0x38c12a,{'showHidden':![],'depth':null}));}}});}exports[_0x2fa1('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};