ad3b9bd1a9658a629cecb3f0d4df6f12c60bac76
[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 _0x58e5=['[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','transcript','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Positive','Mixed','catch','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','forEach','push','all','name','SequelizeValidationError','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeRegion','transcribeName','info'];(function(_0x7d5a8b,_0x2aedef){var _0x56ac46=function(_0x55a1ab){while(--_0x55a1ab){_0x7d5a8b['push'](_0x7d5a8b['shift']());}};_0x56ac46(++_0x2aedef);}(_0x58e5,0xd1));var _0x558e=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x58e5[_0x2235bf];return _0x4c3a64;};var _=require(_0x558e('0x0'));var AWS=require(_0x558e('0x1'));var rp=require(_0x558e('0x2'));var util=require(_0x558e('0x3'));var BPromise=require(_0x558e('0x4'));var db=require(_0x558e('0x5'))['db'];var logger=require('../../config/logger')(_0x558e('0x6'));function getTranscriptionJob(_0x550dd2,_0x4959f0,_0xd66d13,_0x58497f){return new Promise(function(_0x33bcd4,_0x586bfa){var _0x2887fe=new AWS[(_0x558e('0x7'))]({'accessKeyId':_0x4959f0,'secretAccessKey':_0x550dd2,'region':_0xd66d13});_0x2887fe['getTranscriptionJob']({'TranscriptionJobName':_0x58497f},function(_0x58c368,_0x5a26b8){if(_0x58c368){return _0x586bfa(_0x58c368);}else{return _0x33bcd4(_0x5a26b8);}});});}function sentiment(_0x537f9f,_0x4d0fa3,_0x29c7ac,_0x8b89a,_0x5d1e17){return new Promise(function(_0x56342b,_0x289317){var _0x12be93=new AWS[(_0x558e('0x8'))]({'accessKeyId':_0x4d0fa3,'secretAccessKey':_0x537f9f,'region':_0x29c7ac});_0x12be93['detectSentiment']({'Text':_0x8b89a,'LanguageCode':_0x5d1e17[_0x558e('0x9')](0x0,0x2)},function(_0x4e29bd,_0xe180b0){if(_0x4e29bd){return _0x289317(_0x4e29bd);}else{return _0x56342b(_0xe180b0);}});});}function checkTranscribeJob(_0x2158f2,_0x1328b5,_0x3bd154){var _0x4a0889;return new BPromise(function(_0x407afd,_0xe70393){logger['info'](util[_0x558e('0xa')](_0x558e('0xb'),_0x2158f2['id'],_0x2158f2['transcribeName']));return getTranscriptionJob(_0x3bd154[_0x558e('0xc')],_0x3bd154['data2'],_0x1328b5[_0x558e('0xd')],_0x2158f2[_0x558e('0xe')])['then'](function(_0x21552c){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x10'),_0x2158f2['id'],_0x2158f2['transcribeName'],_0x21552c[_0x558e('0x11')][_0x558e('0x12')]));if(!_0x2158f2[_0x558e('0x13')]){switch(_0x21552c[_0x558e('0x11')][_0x558e('0x12')]){case _0x558e('0x14'):var _0x392258={'transcribeStatus':_0x21552c['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x21552c[_0x558e('0x11')][_0x558e('0x15')][_0x558e('0x16')]};logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x17'),_0x2158f2['id']));return rp({'uri':_0x21552c[_0x558e('0x11')][_0x558e('0x15')][_0x558e('0x16')],'json':!![]})[_0x558e('0x18')](function(_0x4c402d){logger[_0x558e('0xf')](util[_0x558e('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x2158f2['id']));if(_0x4c402d&&_0x4c402d['results']&&_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')]&&_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')]['length']){_0x392258[_0x558e('0x13')]='';for(var _0xb9c059=0x0;_0xb9c059<_0x4c402d['results'][_0x558e('0x1a')]['length'];_0xb9c059++){_0x392258[_0x558e('0x13')]+=_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')][_0xb9c059][_0x558e('0x1b')]+'';}}return _0x2158f2['update'](_0x392258);})['then'](function(){logger[_0x558e('0xf')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2158f2['id']));if(!_0x2158f2[_0x558e('0x1c')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x1f'));}if(!_0x1328b5[_0x558e('0x20')]||!_0x1328b5['sentimentAccountId']||!_0x1328b5[_0x558e('0x21')]||!_0x1328b5[_0x558e('0x22')]||!_0x1328b5[_0x558e('0x23')]){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x24'));}if(!_0x392258[_0x558e('0x13')]){throw new Error(_0x558e('0x25'));}if(_0x1328b5[_0x558e('0x26')]===_0x3bd154['id']){return _0x3bd154;}else{return db[_0x558e('0x27')][_0x558e('0x28')]({'where':{'id':_settings[_0x558e('0x26')]}});}})[_0x558e('0x18')](function(_0x1f8997){if(!_0x1f8997){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x1f8997[_0x558e('0xc')]||!_0x1f8997[_0x558e('0x2a')]){throw new db['Sequelize']['ValidationError'](_0x558e('0x2b'));}_0x4a0889=_0x1f8997;logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2c'),_0x2158f2['id']));return sentiment(_0x4a0889['data1'],_0x4a0889['data2'],_0x1328b5[_0x558e('0x21')],_0x392258[_0x558e('0x13')],_0x1328b5[_0x558e('0x22')]);})[_0x558e('0x18')](function(_0x44c604){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2d'),_0x2158f2['id']));return _0x2158f2[_0x558e('0x2e')]({'sentiment':_0x44c604[_0x558e('0x2f')],'sPositive':_0x44c604[_0x558e('0x30')]['Positive'],'sNegative':_0x44c604[_0x558e('0x30')][_0x558e('0x31')],'sMixed':_0x44c604['SentimentScore']['Mixed'],'sNeutral':_0x44c604['SentimentScore'][_0x558e('0x32')]});})[_0x558e('0x18')](function(){logger['info'](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});case _0x558e('0x34'):return _0x2158f2[_0x558e('0x2e')]({'transcribeStatus':'FAILED','failureReason':_0x21552c[_0x558e('0x11')][_0x558e('0x35')]})['then'](function(){logger['info'](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});default:logger['info'](util[_0x558e('0xa')](_0x558e('0x36'),_0x2158f2['id']));break;}}else{return BPromise[_0x558e('0x37')]()['then'](function(){if(!_0x2158f2[_0x558e('0x1c')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x1f'));}if(!_0x1328b5[_0x558e('0x20')]||!_0x1328b5[_0x558e('0x26')]||!_0x1328b5[_0x558e('0x21')]||!_0x1328b5[_0x558e('0x22')]||!_0x1328b5[_0x558e('0x23')]){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x24'));}if(!_0x2158f2[_0x558e('0x13')]){throw new Error(_0x558e('0x25'));}if(_0x1328b5[_0x558e('0x26')]===_0x3bd154['id']){return _0x3bd154;}else{return db[_0x558e('0x27')][_0x558e('0x28')]({'where':{'id':_settings[_0x558e('0x26')]}});}})[_0x558e('0x18')](function(_0x3079b9){if(!_0x3079b9){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x3079b9['data1']||!_0x3079b9[_0x558e('0x2a')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x4a0889=_0x3079b9;logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2c'),_0x2158f2['id']));return sentiment(_0x4a0889['data1'],_0x4a0889[_0x558e('0x2a')],_0x1328b5[_0x558e('0x21')],_0x2158f2[_0x558e('0x13')],_0x1328b5[_0x558e('0x22')]);})[_0x558e('0x18')](function(_0x1c7ec4){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2d'),_0x2158f2['id']));return _0x2158f2[_0x558e('0x2e')]({'sentiment':_0x1c7ec4[_0x558e('0x2f')],'sPositive':_0x1c7ec4[_0x558e('0x30')][_0x558e('0x38')],'sNegative':_0x1c7ec4[_0x558e('0x30')]['Negative'],'sMixed':_0x1c7ec4[_0x558e('0x30')][_0x558e('0x39')],'sNeutral':_0x1c7ec4['SentimentScore'][_0x558e('0x32')],'transcribeStatus':'COMPLETED'});})[_0x558e('0x18')](function(){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});}})[_0x558e('0x3a')](function(_0xc6ecb9){if(_0xc6ecb9){if(!_0xc6ecb9['name']||_0xc6ecb9['name']!=='SequelizeValidationError'){logger['error'](util[_0x558e('0xa')](_0x558e('0x3b'),_0x2158f2['id']),util[_0x558e('0x3c')](_0xc6ecb9,{'showHidden':![],'depth':null}));}}_0x407afd();});});}function checkTranscribe(){var _0x2b5448;var _0x57c3f0;var _0x195801;return db[_0x558e('0x3d')][_0x558e('0x3e')]({'where':{'transcribeStatus':_0x558e('0x3f')}})[_0x558e('0x18')](function(_0x1019b7){if(!_0x1019b7||!_0x1019b7[_0x558e('0x40')]){throw new db[(_0x558e('0x1d'))]['ValidationError'](_0x558e('0x41'));}_0x2b5448=_0x1019b7;return db[_0x558e('0x42')][_0x558e('0x28')]({'where':{'id':0x1}});})['then'](function(_0x1cdaa6){if(!_0x1cdaa6){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Settings\x20not\x20available');}_0x57c3f0=_0x1cdaa6;if(!_0x57c3f0['transcribe']||!_0x57c3f0[_0x558e('0x43')]||!_0x57c3f0[_0x558e('0xd')]||!_0x57c3f0[_0x558e('0x22')]||!_0x57c3f0[_0x558e('0x23')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Transcribe\x20not\x20configured');}return db['CloudProvider']['findOne']({'where':{'id':_0x57c3f0[_0x558e('0x43')]}});})[_0x558e('0x18')](function(_0x4cd46f){if(!_0x4cd46f){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x4cd46f[_0x558e('0xc')]||!_0x4cd46f['data2']){throw new db[(_0x558e('0x1d'))]['ValidationError'](_0x558e('0x2b'));}_0x195801=_0x4cd46f;var _0x4482d6=[];_0x2b5448[_0x558e('0x44')](function(_0x1d879d){_0x4482d6[_0x558e('0x45')](checkTranscribeJob(_0x1d879d,_0x57c3f0,_0x195801));});return BPromise[_0x558e('0x46')](_0x4482d6);})[_0x558e('0x3a')](function(_0x45a5de){if(_0x45a5de){if(!_0x45a5de[_0x558e('0x47')]||_0x45a5de['name']!==_0x558e('0x48')){logger[_0x558e('0x49')](util[_0x558e('0x3c')](_0x45a5de,{'showHidden':![],'depth':null}));}}});}exports[_0x558e('0x4a')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};