dc6d9a241d5e6895d95ff2807a3e1343f2fbbdcb
[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 _0xf400=['data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','sentimentAccountId','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','CloudProvider','Cloud\x20Provider\x20not\x20configured','catch','name','SequelizeValidationError','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','error','lodash','request-promise','bluebird','TranscribeService','getTranscriptionJob','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1'];(function(_0xf94caf,_0x30f519){var _0x2a4012=function(_0x536bb8){while(--_0x536bb8){_0xf94caf['push'](_0xf94caf['shift']());}};_0x2a4012(++_0x30f519);}(_0xf400,0x7f));var _0x0f40=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xf400[_0x134c2e];return _0x2825db;};var _=require(_0x0f40('0x0'));var AWS=require('aws-sdk');var rp=require(_0x0f40('0x1'));var util=require('util');var BPromise=require(_0x0f40('0x2'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x561e89,_0x2c881f,_0x3fd461,_0x5cdc82){return new Promise(function(_0x87e9f9,_0x4a04a6){var _0x1b69fc=new AWS[(_0x0f40('0x3'))]({'accessKeyId':_0x2c881f,'secretAccessKey':_0x561e89,'region':_0x3fd461});_0x1b69fc[_0x0f40('0x4')]({'TranscriptionJobName':_0x5cdc82},function(_0x4b6711,_0x3179b2){if(_0x4b6711){return _0x4a04a6(_0x4b6711);}else{return _0x87e9f9(_0x3179b2);}});});}function sentiment(_0x3bc57e,_0x2acec4,_0x4102fb,_0x5e6182,_0x4c063a){return new Promise(function(_0x18772a,_0x1170af){var _0x1dcb4d=new AWS['Comprehend']({'accessKeyId':_0x2acec4,'secretAccessKey':_0x3bc57e,'region':_0x4102fb});_0x1dcb4d['detectSentiment']({'Text':_0x5e6182,'LanguageCode':_0x4c063a[_0x0f40('0x5')](0x0,0x2)},function(_0x491dfe,_0x19b22b){if(_0x491dfe){return _0x1170af(_0x491dfe);}else{return _0x18772a(_0x19b22b);}});});}function checkTranscribeJob(_0x1aaf63,_0x36415d,_0x47b608){var _0x5424da;return new BPromise(function(_0x107fdb,_0x457ced){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x8'),_0x1aaf63['id'],_0x1aaf63[_0x0f40('0x9')]));return getTranscriptionJob(_0x47b608[_0x0f40('0xa')],_0x47b608[_0x0f40('0xb')],_0x36415d[_0x0f40('0xc')],_0x1aaf63[_0x0f40('0x9')])[_0x0f40('0xd')](function(_0x5beb2e){logger['info'](util['format'](_0x0f40('0xe'),_0x1aaf63['id'],_0x1aaf63[_0x0f40('0x9')],_0x5beb2e['TranscriptionJob'][_0x0f40('0xf')]));if(!_0x1aaf63[_0x0f40('0x10')]){switch(_0x5beb2e['TranscriptionJob'][_0x0f40('0xf')]){case _0x0f40('0x11'):var _0x5457c8={'transcribeStatus':_0x5beb2e['TranscriptionJob'][_0x0f40('0xf')],'fileUri':_0x5beb2e['TranscriptionJob'][_0x0f40('0x12')][_0x0f40('0x13')]};logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x14'),_0x1aaf63['id']));return rp({'uri':_0x5beb2e['TranscriptionJob'][_0x0f40('0x12')][_0x0f40('0x13')],'json':!![]})[_0x0f40('0xd')](function(_0x6f1ef3){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x15'),_0x1aaf63['id']));if(_0x6f1ef3&&_0x6f1ef3[_0x0f40('0x16')]&&_0x6f1ef3[_0x0f40('0x16')][_0x0f40('0x17')]&&_0x6f1ef3['results'][_0x0f40('0x17')][_0x0f40('0x18')]){_0x5457c8[_0x0f40('0x10')]='';for(var _0x5d3ef7=0x0;_0x5d3ef7<_0x6f1ef3['results'][_0x0f40('0x17')]['length'];_0x5d3ef7++){_0x5457c8[_0x0f40('0x10')]+=_0x6f1ef3[_0x0f40('0x16')][_0x0f40('0x17')][_0x5d3ef7][_0x0f40('0x19')]+'';}}return _0x1aaf63[_0x0f40('0x1a')](_0x5457c8);})[_0x0f40('0xd')](function(){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x1b'),_0x1aaf63['id']));if(!_0x1aaf63[_0x0f40('0x1c')]){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x1f'));}if(!_0x36415d[_0x0f40('0x20')]||!_0x36415d['sentimentAccountId']||!_0x36415d[_0x0f40('0x21')]||!_0x36415d[_0x0f40('0x22')]||!_0x36415d['bucket']){throw new db['Sequelize']['ValidationError'](_0x0f40('0x23'));}if(!_0x5457c8[_0x0f40('0x10')]){throw new Error(_0x0f40('0x24'));}if(_0x36415d['sentimentAccountId']===_0x47b608['id']){return _0x47b608;}else{return db['CloudProvider'][_0x0f40('0x25')]({'where':{'id':_settings[_0x0f40('0x26')]}});}})[_0x0f40('0xd')](function(_0x320679){if(!_0x320679){throw new db['Sequelize'][(_0x0f40('0x1e'))](_0x0f40('0x27'));}if(!_0x320679['data1']||!_0x320679[_0x0f40('0xb')]){throw new db[(_0x0f40('0x1d'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x5424da=_0x320679;logger['info'](util[_0x0f40('0x7')](_0x0f40('0x28'),_0x1aaf63['id']));return sentiment(_0x5424da[_0x0f40('0xa')],_0x5424da[_0x0f40('0xb')],_0x36415d[_0x0f40('0x21')],_0x5457c8['fileText'],_0x36415d['language']);})[_0x0f40('0xd')](function(_0x89942a){logger['info'](util[_0x0f40('0x7')](_0x0f40('0x29'),_0x1aaf63['id']));return _0x1aaf63[_0x0f40('0x1a')]({'sentiment':_0x89942a[_0x0f40('0x2a')],'sPositive':_0x89942a[_0x0f40('0x2b')][_0x0f40('0x2c')],'sNegative':_0x89942a['SentimentScore'][_0x0f40('0x2d')],'sMixed':_0x89942a[_0x0f40('0x2b')][_0x0f40('0x2e')],'sNeutral':_0x89942a[_0x0f40('0x2b')][_0x0f40('0x2f')]});})[_0x0f40('0xd')](function(){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x1b'),_0x1aaf63['id']));_0x107fdb();});case _0x0f40('0x30'):return _0x1aaf63[_0x0f40('0x1a')]({'transcribeStatus':'FAILED','failureReason':_0x5beb2e['TranscriptionJob']['FailureReason']})[_0x0f40('0xd')](function(){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x1b'),_0x1aaf63['id']));_0x107fdb();});default:logger['info'](util[_0x0f40('0x7')](_0x0f40('0x31'),_0x1aaf63['id']));break;}}else{return BPromise[_0x0f40('0x32')]()[_0x0f40('0xd')](function(){if(!_0x1aaf63[_0x0f40('0x1c')]){throw new db['Sequelize']['ValidationError'](_0x0f40('0x1f'));}if(!_0x36415d[_0x0f40('0x20')]||!_0x36415d[_0x0f40('0x26')]||!_0x36415d[_0x0f40('0x21')]||!_0x36415d[_0x0f40('0x22')]||!_0x36415d[_0x0f40('0x33')]){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x23'));}if(!_0x1aaf63[_0x0f40('0x10')]){throw new Error(_0x0f40('0x24'));}if(_0x36415d[_0x0f40('0x26')]===_0x47b608['id']){return _0x47b608;}else{return db[_0x0f40('0x34')]['findOne']({'where':{'id':_settings[_0x0f40('0x26')]}});}})[_0x0f40('0xd')](function(_0x459207){if(!_0x459207){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x27'));}if(!_0x459207[_0x0f40('0xa')]||!_0x459207[_0x0f40('0xb')]){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x35'));}_0x5424da=_0x459207;logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x28'),_0x1aaf63['id']));return sentiment(_0x5424da[_0x0f40('0xa')],_0x5424da[_0x0f40('0xb')],_0x36415d[_0x0f40('0x21')],_0x1aaf63[_0x0f40('0x10')],_0x36415d[_0x0f40('0x22')]);})['then'](function(_0x2945c3){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x29'),_0x1aaf63['id']));return _0x1aaf63[_0x0f40('0x1a')]({'sentiment':_0x2945c3[_0x0f40('0x2a')],'sPositive':_0x2945c3['SentimentScore'][_0x0f40('0x2c')],'sNegative':_0x2945c3[_0x0f40('0x2b')][_0x0f40('0x2d')],'sMixed':_0x2945c3[_0x0f40('0x2b')][_0x0f40('0x2e')],'sNeutral':_0x2945c3['SentimentScore']['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x0f40('0xd')](function(){logger[_0x0f40('0x6')](util[_0x0f40('0x7')](_0x0f40('0x1b'),_0x1aaf63['id']));_0x107fdb();});}})[_0x0f40('0x36')](function(_0x292c0d){if(_0x292c0d){if(!_0x292c0d[_0x0f40('0x37')]||_0x292c0d[_0x0f40('0x37')]!==_0x0f40('0x38')){logger['error'](util[_0x0f40('0x7')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x1aaf63['id']),util[_0x0f40('0x39')](_0x292c0d,{'showHidden':![],'depth':null}));}}_0x107fdb();});});}function checkTranscribe(){var _0x44135f;var _0x2e42fc;var _0x430831;return db[_0x0f40('0x3a')][_0x0f40('0x3b')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x0f40('0xd')](function(_0x7d6cdf){if(!_0x7d6cdf||!_0x7d6cdf['length']){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x3c'));}_0x44135f=_0x7d6cdf;return db[_0x0f40('0x3d')][_0x0f40('0x25')]({'where':{'id':0x1}});})['then'](function(_0x26b86a){if(!_0x26b86a){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x3e'));}_0x2e42fc=_0x26b86a;if(!_0x2e42fc['transcribe']||!_0x2e42fc[_0x0f40('0x3f')]||!_0x2e42fc[_0x0f40('0xc')]||!_0x2e42fc[_0x0f40('0x22')]||!_0x2e42fc['bucket']){throw new db[(_0x0f40('0x1d'))]['ValidationError'](_0x0f40('0x40'));}return db[_0x0f40('0x34')]['findOne']({'where':{'id':_0x2e42fc[_0x0f40('0x3f')]}});})[_0x0f40('0xd')](function(_0x328a13){if(!_0x328a13){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x27'));}if(!_0x328a13[_0x0f40('0xa')]||!_0x328a13[_0x0f40('0xb')]){throw new db[(_0x0f40('0x1d'))][(_0x0f40('0x1e'))](_0x0f40('0x35'));}_0x430831=_0x328a13;var _0x36e860=[];_0x44135f[_0x0f40('0x41')](function(_0x3f8fe3){_0x36e860[_0x0f40('0x42')](checkTranscribeJob(_0x3f8fe3,_0x2e42fc,_0x430831));});return BPromise[_0x0f40('0x43')](_0x36e860);})['catch'](function(_0x26851c){if(_0x26851c){if(!_0x26851c[_0x0f40('0x37')]||_0x26851c[_0x0f40('0x37')]!=='SequelizeValidationError'){logger[_0x0f40('0x44')](util[_0x0f40('0x39')](_0x26851c,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};