Built motion from commit (unavailable).|2.5.14
[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 _0xa0e0=['SentimentScore','Positive','Negative','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','bucket','findOne','Neutral','catch','name','SequelizeValidationError','error','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment'];(function(_0x1a5687,_0xc2188f){var _0x257d5c=function(_0x4a1783){while(--_0x4a1783){_0x1a5687['push'](_0x1a5687['shift']());}};_0x257d5c(++_0xc2188f);}(_0xa0e0,0xab));var _0x0a0e=function(_0x18d1a4,_0x37bcd7){_0x18d1a4=_0x18d1a4-0x0;var _0x4217dc=_0xa0e0[_0x18d1a4];return _0x4217dc;};var _=require(_0x0a0e('0x0'));var AWS=require(_0x0a0e('0x1'));var rp=require(_0x0a0e('0x2'));var util=require(_0x0a0e('0x3'));var BPromise=require(_0x0a0e('0x4'));var db=require(_0x0a0e('0x5'))['db'];var logger=require(_0x0a0e('0x6'))(_0x0a0e('0x7'));function getTranscriptionJob(_0x4ff127,_0x2ed85d,_0x3e1d2d,_0x1d2552){return new Promise(function(_0x5b7898,_0x27260c){var _0x2cf34e=new AWS[(_0x0a0e('0x8'))]({'accessKeyId':_0x2ed85d,'secretAccessKey':_0x4ff127,'region':_0x3e1d2d});_0x2cf34e[_0x0a0e('0x9')]({'TranscriptionJobName':_0x1d2552},function(_0x2da2ba,_0x43d97c){if(_0x2da2ba){return _0x27260c(_0x2da2ba);}else{return _0x5b7898(_0x43d97c);}});});}function sentiment(_0x1882c5,_0x215891,_0x53d006,_0x5304c6,_0xf83a70){return new Promise(function(_0x39c576,_0x408892){var _0x11632e=new AWS[(_0x0a0e('0xa'))]({'accessKeyId':_0x215891,'secretAccessKey':_0x1882c5,'region':_0x53d006});_0x11632e[_0x0a0e('0xb')]({'Text':_0x5304c6,'LanguageCode':_0xf83a70[_0x0a0e('0xc')](0x0,0x2)},function(_0x4e85dd,_0x9bdf91){if(_0x4e85dd){return _0x408892(_0x4e85dd);}else{return _0x39c576(_0x9bdf91);}});});}function checkTranscribeJob(_0x73c32a,_0xb481b9,_0x4453af){var _0x4a5c26;return new BPromise(function(_0x2fb42d,_0x5d08c0){logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x73c32a['id'],_0x73c32a[_0x0a0e('0xf')]));return getTranscriptionJob(_0x4453af[_0x0a0e('0x10')],_0x4453af[_0x0a0e('0x11')],_0xb481b9[_0x0a0e('0x12')],_0x73c32a[_0x0a0e('0xf')])[_0x0a0e('0x13')](function(_0x504595){logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')](_0x0a0e('0x14'),_0x73c32a['id'],_0x73c32a[_0x0a0e('0xf')],_0x504595[_0x0a0e('0x15')][_0x0a0e('0x16')]));if(!_0x73c32a[_0x0a0e('0x17')]){switch(_0x504595['TranscriptionJob'][_0x0a0e('0x16')]){case _0x0a0e('0x18'):var _0x7dfb={'transcribeStatus':_0x504595[_0x0a0e('0x15')][_0x0a0e('0x16')],'fileUri':_0x504595[_0x0a0e('0x15')]['Transcript'][_0x0a0e('0x19')]};logger['info'](util[_0x0a0e('0xe')](_0x0a0e('0x1a'),_0x73c32a['id']));return rp({'uri':_0x504595[_0x0a0e('0x15')]['Transcript'][_0x0a0e('0x19')],'json':!![]})['then'](function(_0x12af8c){logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x73c32a['id']));if(_0x12af8c&&_0x12af8c[_0x0a0e('0x1b')]&&_0x12af8c[_0x0a0e('0x1b')][_0x0a0e('0x1c')]&&_0x12af8c['results'][_0x0a0e('0x1c')][_0x0a0e('0x1d')]){_0x7dfb[_0x0a0e('0x17')]='';for(var _0x7a5367=0x0;_0x7a5367<_0x12af8c[_0x0a0e('0x1b')]['transcripts'][_0x0a0e('0x1d')];_0x7a5367++){_0x7dfb[_0x0a0e('0x17')]+=_0x12af8c[_0x0a0e('0x1b')][_0x0a0e('0x1c')][_0x7a5367][_0x0a0e('0x1e')]+'';}}return _0x73c32a[_0x0a0e('0x1f')](_0x7dfb);})[_0x0a0e('0x13')](function(){logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x73c32a['id']));if(!_0x73c32a[_0x0a0e('0x20')]){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x23'));}if(!_0xb481b9[_0x0a0e('0x24')]||!_0xb481b9[_0x0a0e('0x25')]||!_0xb481b9[_0x0a0e('0x26')]||!_0xb481b9[_0x0a0e('0x27')]||!_0xb481b9['bucket']){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x28'));}if(!_0x7dfb[_0x0a0e('0x17')]){throw new Error(_0x0a0e('0x29'));}if(_0xb481b9[_0x0a0e('0x25')]===_0x4453af['id']){return _0x4453af;}else{return db[_0x0a0e('0x2a')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x554c6c){if(!_0x554c6c){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x2b'));}if(!_0x554c6c[_0x0a0e('0x10')]||!_0x554c6c[_0x0a0e('0x11')]){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x2c'));}_0x4a5c26=_0x554c6c;logger['info'](util[_0x0a0e('0xe')](_0x0a0e('0x2d'),_0x73c32a['id']));return sentiment(_0x4a5c26[_0x0a0e('0x10')],_0x4a5c26['data2'],_0xb481b9[_0x0a0e('0x26')],_0x7dfb[_0x0a0e('0x17')],_0xb481b9['language']);})[_0x0a0e('0x13')](function(_0x37fb58){logger['info'](util[_0x0a0e('0xe')](_0x0a0e('0x2e'),_0x73c32a['id']));return _0x73c32a[_0x0a0e('0x1f')]({'sentiment':_0x37fb58[_0x0a0e('0x2f')],'sPositive':_0x37fb58[_0x0a0e('0x30')][_0x0a0e('0x31')],'sNegative':_0x37fb58[_0x0a0e('0x30')][_0x0a0e('0x32')],'sMixed':_0x37fb58['SentimentScore'][_0x0a0e('0x33')],'sNeutral':_0x37fb58[_0x0a0e('0x30')]['Neutral']});})[_0x0a0e('0x13')](function(){logger[_0x0a0e('0xd')](util['format'](_0x0a0e('0x34'),_0x73c32a['id']));_0x2fb42d();});case _0x0a0e('0x35'):return _0x73c32a[_0x0a0e('0x1f')]({'transcribeStatus':_0x0a0e('0x35'),'failureReason':_0x504595[_0x0a0e('0x15')][_0x0a0e('0x36')]})[_0x0a0e('0x13')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x73c32a['id']));_0x2fb42d();});default:logger['info'](util[_0x0a0e('0xe')](_0x0a0e('0x37'),_0x73c32a['id']));break;}}else{return BPromise['resolve']()[_0x0a0e('0x13')](function(){if(!_0x73c32a[_0x0a0e('0x20')]){throw new db[(_0x0a0e('0x21'))]['ValidationError'](_0x0a0e('0x23'));}if(!_0xb481b9[_0x0a0e('0x24')]||!_0xb481b9[_0x0a0e('0x25')]||!_0xb481b9[_0x0a0e('0x26')]||!_0xb481b9[_0x0a0e('0x27')]||!_0xb481b9[_0x0a0e('0x38')]){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x28'));}if(!_0x73c32a[_0x0a0e('0x17')]){throw new Error(_0x0a0e('0x29'));}if(_0xb481b9[_0x0a0e('0x25')]===_0x4453af['id']){return _0x4453af;}else{return db[_0x0a0e('0x2a')][_0x0a0e('0x39')]({'where':{'id':_settings[_0x0a0e('0x25')]}});}})[_0x0a0e('0x13')](function(_0x15ff5c){if(!_0x15ff5c){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x2b'));}if(!_0x15ff5c['data1']||!_0x15ff5c['data2']){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x4a5c26=_0x15ff5c;logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')](_0x0a0e('0x2d'),_0x73c32a['id']));return sentiment(_0x4a5c26[_0x0a0e('0x10')],_0x4a5c26[_0x0a0e('0x11')],_0xb481b9['sentimentRegion'],_0x73c32a[_0x0a0e('0x17')],_0xb481b9['language']);})['then'](function(_0x4dc20b){logger[_0x0a0e('0xd')](util[_0x0a0e('0xe')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x73c32a['id']));return _0x73c32a[_0x0a0e('0x1f')]({'sentiment':_0x4dc20b[_0x0a0e('0x2f')],'sPositive':_0x4dc20b['SentimentScore'][_0x0a0e('0x31')],'sNegative':_0x4dc20b[_0x0a0e('0x30')][_0x0a0e('0x32')],'sMixed':_0x4dc20b['SentimentScore'][_0x0a0e('0x33')],'sNeutral':_0x4dc20b['SentimentScore'][_0x0a0e('0x3a')],'transcribeStatus':_0x0a0e('0x18')});})['then'](function(){logger[_0x0a0e('0xd')](util['format'](_0x0a0e('0x34'),_0x73c32a['id']));_0x2fb42d();});}})[_0x0a0e('0x3b')](function(_0x334c30){if(_0x334c30){if(!_0x334c30[_0x0a0e('0x3c')]||_0x334c30[_0x0a0e('0x3c')]!==_0x0a0e('0x3d')){logger[_0x0a0e('0x3e')](util[_0x0a0e('0xe')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x73c32a['id']),util[_0x0a0e('0x3f')](_0x334c30,{'showHidden':![],'depth':null}));}}_0x2fb42d();});});}function checkTranscribe(){var _0x327116;var _0x8a499f;var _0x130899;return db['VoiceRecording'][_0x0a0e('0x40')]({'where':{'transcribeStatus':_0x0a0e('0x41')}})[_0x0a0e('0x13')](function(_0x4cf368){if(!_0x4cf368||!_0x4cf368[_0x0a0e('0x1d')]){throw new db['Sequelize'][(_0x0a0e('0x22'))](_0x0a0e('0x42'));}_0x327116=_0x4cf368;return db['Setting'][_0x0a0e('0x39')]({'where':{'id':0x1}});})[_0x0a0e('0x13')](function(_0x499037){if(!_0x499037){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x43'));}_0x8a499f=_0x499037;if(!_0x8a499f['transcribe']||!_0x8a499f[_0x0a0e('0x44')]||!_0x8a499f[_0x0a0e('0x12')]||!_0x8a499f['language']||!_0x8a499f[_0x0a0e('0x38')]){throw new db[(_0x0a0e('0x21'))][(_0x0a0e('0x22'))](_0x0a0e('0x45'));}return db[_0x0a0e('0x2a')][_0x0a0e('0x39')]({'where':{'id':_0x8a499f[_0x0a0e('0x44')]}});})[_0x0a0e('0x13')](function(_0x21d864){if(!_0x21d864){throw new db['Sequelize']['ValidationError'](_0x0a0e('0x2b'));}if(!_0x21d864[_0x0a0e('0x10')]||!_0x21d864[_0x0a0e('0x11')]){throw new db['Sequelize'][(_0x0a0e('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x130899=_0x21d864;var _0x154148=[];_0x327116[_0x0a0e('0x46')](function(_0x36efd9){_0x154148['push'](checkTranscribeJob(_0x36efd9,_0x8a499f,_0x130899));});return BPromise[_0x0a0e('0x47')](_0x154148);})[_0x0a0e('0x3b')](function(_0x59f223){if(_0x59f223){if(!_0x59f223[_0x0a0e('0x3c')]||_0x59f223['name']!=='SequelizeValidationError'){logger[_0x0a0e('0x3e')](util[_0x0a0e('0x3f')](_0x59f223,{'showHidden':![],'depth':null}));}}});}exports[_0x0a0e('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};