676026409f8cc65f71f734b5b7b89d5cf37bd4fc
[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 _0x777d=['Positive','FAILED','update','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','CloudProvider','Negative','Mixed','Neutral','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','Settings\x20not\x20available','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','catch','start','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','Comprehend','detectSentiment','substring','info','format','transcribeName','data2','transcribeRegion','then','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x777d,0xe9));var _0xd777=function(_0x4370c7,_0x5dbfb0){_0x4370c7=_0x4370c7-0x0;var _0xce78a9=_0x777d[_0x4370c7];return _0xce78a9;};var _=require('lodash');var AWS=require(_0xd777('0x0'));var rp=require(_0xd777('0x1'));var util=require(_0xd777('0x2'));var BPromise=require('bluebird');var db=require(_0xd777('0x3'))['db'];var logger=require(_0xd777('0x4'))('transcribe');function getTranscriptionJob(_0x5e0f79,_0x514817,_0x40b685,_0x590b33){return new Promise(function(_0x253dc1,_0x51e918){var _0xc7c954=new AWS['TranscribeService']({'accessKeyId':_0x514817,'secretAccessKey':_0x5e0f79,'region':_0x40b685});_0xc7c954['getTranscriptionJob']({'TranscriptionJobName':_0x590b33},function(_0x49d55d,_0x197296){if(_0x49d55d){return _0x51e918(_0x49d55d);}else{return _0x253dc1(_0x197296);}});});}function sentiment(_0x109514,_0x26c453,_0x25450d,_0x15b49e,_0x261e0d){return new Promise(function(_0x28fedc,_0x234862){var _0x45afb5=new AWS[(_0xd777('0x5'))]({'accessKeyId':_0x26c453,'secretAccessKey':_0x109514,'region':_0x25450d});_0x45afb5[_0xd777('0x6')]({'Text':_0x15b49e,'LanguageCode':_0x261e0d[_0xd777('0x7')](0x0,0x2)},function(_0x1e018c,_0x5411c5){if(_0x1e018c){return _0x234862(_0x1e018c);}else{return _0x28fedc(_0x5411c5);}});});}function checkTranscribeJob(_0x59dc27,_0x25f574,_0x560778){var _0x2cc3e7;return new BPromise(function(_0x24d39b,_0x11bac0){logger[_0xd777('0x8')](util[_0xd777('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x59dc27['id'],_0x59dc27[_0xd777('0xa')]));return getTranscriptionJob(_0x560778['data1'],_0x560778[_0xd777('0xb')],_0x25f574[_0xd777('0xc')],_0x59dc27[_0xd777('0xa')])[_0xd777('0xd')](function(_0x25e3f2){logger['info'](util[_0xd777('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x59dc27['id'],_0x59dc27[_0xd777('0xa')],_0x25e3f2['TranscriptionJob'][_0xd777('0xe')]));if(!_0x59dc27[_0xd777('0xf')]){switch(_0x25e3f2[_0xd777('0x10')][_0xd777('0xe')]){case _0xd777('0x11'):var _0x201175={'transcribeStatus':_0x25e3f2['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x25e3f2[_0xd777('0x10')]['Transcript'][_0xd777('0x12')]};logger['info'](util['format']('[RECORDING:%d]\x20Get\x20transcript',_0x59dc27['id']));return rp({'uri':_0x25e3f2[_0xd777('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})['then'](function(_0x48d18c){logger['info'](util[_0xd777('0x9')](_0xd777('0x13'),_0x59dc27['id']));if(_0x48d18c&&_0x48d18c[_0xd777('0x14')]&&_0x48d18c[_0xd777('0x14')][_0xd777('0x15')]&&_0x48d18c[_0xd777('0x14')][_0xd777('0x15')][_0xd777('0x16')]){_0x201175[_0xd777('0xf')]='';for(var _0x3e637a=0x0;_0x3e637a<_0x48d18c[_0xd777('0x14')]['transcripts'][_0xd777('0x16')];_0x3e637a++){_0x201175[_0xd777('0xf')]+=_0x48d18c[_0xd777('0x14')][_0xd777('0x15')][_0x3e637a][_0xd777('0x17')]+'';}}return _0x59dc27['update'](_0x201175);})[_0xd777('0xd')](function(){logger['info'](util['format'](_0xd777('0x18'),_0x59dc27['id']));if(!_0x59dc27[_0xd777('0x19')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x25f574[_0xd777('0x1c')]||!_0x25f574[_0xd777('0x1d')]||!_0x25f574[_0xd777('0x1e')]||!_0x25f574[_0xd777('0x1f')]||!_0x25f574[_0xd777('0x20')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x21'));}if(!_0x201175['fileText']){throw new Error(_0xd777('0x22'));}if(_0x25f574['sentimentAccountId']===_0x560778['id']){return _0x560778;}else{return db['CloudProvider'][_0xd777('0x23')]({'where':{'id':_settings[_0xd777('0x1d')]}});}})[_0xd777('0xd')](function(_0x144103){if(!_0x144103){throw new db['Sequelize']['ValidationError'](_0xd777('0x24'));}if(!_0x144103[_0xd777('0x25')]||!_0x144103[_0xd777('0xb')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x26'));}_0x2cc3e7=_0x144103;logger['info'](util['format'](_0xd777('0x27'),_0x59dc27['id']));return sentiment(_0x2cc3e7[_0xd777('0x25')],_0x2cc3e7[_0xd777('0xb')],_0x25f574[_0xd777('0x1e')],_0x201175[_0xd777('0xf')],_0x25f574[_0xd777('0x1f')]);})[_0xd777('0xd')](function(_0x1f870c){logger['info'](util['format'](_0xd777('0x28'),_0x59dc27['id']));return _0x59dc27['update']({'sentiment':_0x1f870c[_0xd777('0x29')],'sPositive':_0x1f870c[_0xd777('0x2a')][_0xd777('0x2b')],'sNegative':_0x1f870c[_0xd777('0x2a')]['Negative'],'sMixed':_0x1f870c[_0xd777('0x2a')]['Mixed'],'sNeutral':_0x1f870c[_0xd777('0x2a')]['Neutral']});})['then'](function(){logger['info'](util['format'](_0xd777('0x18'),_0x59dc27['id']));_0x24d39b();});case _0xd777('0x2c'):return _0x59dc27[_0xd777('0x2d')]({'transcribeStatus':'FAILED','failureReason':_0x25e3f2['TranscriptionJob']['FailureReason']})[_0xd777('0xd')](function(){logger[_0xd777('0x8')](util[_0xd777('0x9')](_0xd777('0x18'),_0x59dc27['id']));_0x24d39b();});default:logger[_0xd777('0x8')](util[_0xd777('0x9')](_0xd777('0x2e'),_0x59dc27['id']));break;}}else{return BPromise[_0xd777('0x2f')]()[_0xd777('0xd')](function(){if(!_0x59dc27[_0xd777('0x19')]){throw new db['Sequelize'][(_0xd777('0x1b'))](_0xd777('0x30'));}if(!_0x25f574[_0xd777('0x1c')]||!_0x25f574[_0xd777('0x1d')]||!_0x25f574[_0xd777('0x1e')]||!_0x25f574[_0xd777('0x1f')]||!_0x25f574[_0xd777('0x20')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x21'));}if(!_0x59dc27[_0xd777('0xf')]){throw new Error(_0xd777('0x22'));}if(_0x25f574['sentimentAccountId']===_0x560778['id']){return _0x560778;}else{return db[_0xd777('0x31')]['findOne']({'where':{'id':_settings[_0xd777('0x1d')]}});}})[_0xd777('0xd')](function(_0xc6297b){if(!_0xc6297b){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x24'));}if(!_0xc6297b['data1']||!_0xc6297b[_0xd777('0xb')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))]('Cloud\x20Provider\x20not\x20configured');}_0x2cc3e7=_0xc6297b;logger[_0xd777('0x8')](util[_0xd777('0x9')](_0xd777('0x27'),_0x59dc27['id']));return sentiment(_0x2cc3e7[_0xd777('0x25')],_0x2cc3e7[_0xd777('0xb')],_0x25f574[_0xd777('0x1e')],_0x59dc27[_0xd777('0xf')],_0x25f574['language']);})[_0xd777('0xd')](function(_0x2c442d){logger['info'](util['format'](_0xd777('0x28'),_0x59dc27['id']));return _0x59dc27[_0xd777('0x2d')]({'sentiment':_0x2c442d[_0xd777('0x29')],'sPositive':_0x2c442d[_0xd777('0x2a')][_0xd777('0x2b')],'sNegative':_0x2c442d[_0xd777('0x2a')][_0xd777('0x32')],'sMixed':_0x2c442d[_0xd777('0x2a')][_0xd777('0x33')],'sNeutral':_0x2c442d[_0xd777('0x2a')][_0xd777('0x34')],'transcribeStatus':'COMPLETED'});})[_0xd777('0xd')](function(){logger[_0xd777('0x8')](util[_0xd777('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x59dc27['id']));_0x24d39b();});}})['catch'](function(_0x38f53b){if(_0x38f53b){if(!_0x38f53b[_0xd777('0x35')]||_0x38f53b[_0xd777('0x35')]!==_0xd777('0x36')){logger[_0xd777('0x37')](util[_0xd777('0x9')](_0xd777('0x38'),_0x59dc27['id']),util[_0xd777('0x39')](_0x38f53b,{'showHidden':![],'depth':null}));}}_0x24d39b();});});}function checkTranscribe(){var _0x518a44;var _0x2ee4f9;var _0x559232;return db['VoiceRecording'][_0xd777('0x3a')]({'where':{'transcribeStatus':_0xd777('0x3b')}})['then'](function(_0x34e9aa){if(!_0x34e9aa||!_0x34e9aa[_0xd777('0x16')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))]('No\x20transcribe\x20job\x20to\x20check');}_0x518a44=_0x34e9aa;return db['Setting'][_0xd777('0x23')]({'where':{'id':0x1}});})['then'](function(_0x45b806){if(!_0x45b806){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x3c'));}_0x2ee4f9=_0x45b806;if(!_0x2ee4f9[_0xd777('0x3d')]||!_0x2ee4f9['transcribeAccountId']||!_0x2ee4f9[_0xd777('0xc')]||!_0x2ee4f9[_0xd777('0x1f')]||!_0x2ee4f9[_0xd777('0x20')]){throw new db['Sequelize'][(_0xd777('0x1b'))](_0xd777('0x3e'));}return db['CloudProvider'][_0xd777('0x23')]({'where':{'id':_0x2ee4f9[_0xd777('0x3f')]}});})[_0xd777('0xd')](function(_0x52e9db){if(!_0x52e9db){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x24'));}if(!_0x52e9db[_0xd777('0x25')]||!_0x52e9db[_0xd777('0xb')]){throw new db[(_0xd777('0x1a'))][(_0xd777('0x1b'))](_0xd777('0x26'));}_0x559232=_0x52e9db;var _0x406e0e=[];_0x518a44[_0xd777('0x40')](function(_0x15eba2){_0x406e0e[_0xd777('0x41')](checkTranscribeJob(_0x15eba2,_0x2ee4f9,_0x559232));});return BPromise[_0xd777('0x42')](_0x406e0e);})[_0xd777('0x43')](function(_0x1d052a){if(_0x1d052a){if(!_0x1d052a[_0xd777('0x35')]||_0x1d052a[_0xd777('0x35')]!==_0xd777('0x36')){logger[_0xd777('0x37')](util[_0xd777('0x39')](_0x1d052a,{'showHidden':![],'depth':null}));}}});}exports[_0xd777('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};