2e652b1fb308e6fac34f0489ac117d5c05eb519f
[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 _0x9189=['forEach','push','catch','error','inspect','start','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentiment','language','ValidationError','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','Sentiment\x20Analysis\x20not\x20configured','Mixed','name','SequelizeValidationError','VoiceRecording','Setting','Settings\x20not\x20available','transcribeAccountId','bucket','Transcribe\x20not\x20configured'];(function(_0x19c66d,_0xe8b995){var _0x481b75=function(_0x4b7674){while(--_0x4b7674){_0x19c66d['push'](_0x19c66d['shift']());}};_0x481b75(++_0xe8b995);}(_0x9189,0x1b0));var _0x9918=function(_0x364f11,_0x29e4f9){_0x364f11=_0x364f11-0x0;var _0x572994=_0x9189[_0x364f11];return _0x572994;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0x9918('0x0'));var util=require(_0x9918('0x1'));var BPromise=require(_0x9918('0x2'));var db=require(_0x9918('0x3'))['db'];var logger=require('../../config/logger')(_0x9918('0x4'));function getTranscriptionJob(_0x568567,_0x4cb5a2,_0xfd91d2,_0x325957){return new Promise(function(_0x4a47d4,_0x3ba4a8){var _0x3cb556=new AWS[(_0x9918('0x5'))]({'accessKeyId':_0x4cb5a2,'secretAccessKey':_0x568567,'region':_0xfd91d2});_0x3cb556['getTranscriptionJob']({'TranscriptionJobName':_0x325957},function(_0x5a0552,_0x50a534){if(_0x5a0552){return _0x3ba4a8(_0x5a0552);}else{return _0x4a47d4(_0x50a534);}});});}function sentiment(_0x46bef9,_0x29daaa,_0x553c75,_0x21f0ff,_0x5c5853){return new Promise(function(_0xdf3f27,_0x1a3395){var _0x107c89=new AWS[(_0x9918('0x6'))]({'accessKeyId':_0x29daaa,'secretAccessKey':_0x46bef9,'region':_0x553c75});_0x107c89[_0x9918('0x7')]({'Text':_0x21f0ff,'LanguageCode':_0x5c5853[_0x9918('0x8')](0x0,0x2)},function(_0x911a98,_0x5175b1){if(_0x911a98){return _0x1a3395(_0x911a98);}else{return _0xdf3f27(_0x5175b1);}});});}function checkTranscribeJob(_0x334b55,_0x1a8f69,_0x548f67){var _0x511a2c;return new BPromise(function(_0x43fc75,_0x4b1833){logger['info'](util[_0x9918('0x9')](_0x9918('0xa'),_0x334b55['id'],_0x334b55['transcribeName']));return getTranscriptionJob(_0x548f67[_0x9918('0xb')],_0x548f67['data2'],_0x1a8f69[_0x9918('0xc')],_0x334b55[_0x9918('0xd')])[_0x9918('0xe')](function(_0x420db0){logger[_0x9918('0xf')](util[_0x9918('0x9')](_0x9918('0x10'),_0x334b55['id'],_0x334b55[_0x9918('0xd')],_0x420db0[_0x9918('0x11')][_0x9918('0x12')]));if(!_0x334b55[_0x9918('0x13')]){switch(_0x420db0[_0x9918('0x11')][_0x9918('0x12')]){case _0x9918('0x14'):var _0x1b6ea2={'transcribeStatus':_0x420db0[_0x9918('0x11')][_0x9918('0x12')],'fileUri':_0x420db0[_0x9918('0x11')][_0x9918('0x15')][_0x9918('0x16')]};logger[_0x9918('0xf')](util[_0x9918('0x9')](_0x9918('0x17'),_0x334b55['id']));return rp({'uri':_0x420db0[_0x9918('0x11')][_0x9918('0x15')][_0x9918('0x16')],'json':!![]})['then'](function(_0x2dc468){logger[_0x9918('0xf')](util[_0x9918('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x334b55['id']));if(_0x2dc468&&_0x2dc468[_0x9918('0x18')]&&_0x2dc468[_0x9918('0x18')][_0x9918('0x19')]&&_0x2dc468[_0x9918('0x18')][_0x9918('0x19')][_0x9918('0x1a')]){_0x1b6ea2[_0x9918('0x13')]='';for(var _0x216cc1=0x0;_0x216cc1<_0x2dc468[_0x9918('0x18')][_0x9918('0x19')][_0x9918('0x1a')];_0x216cc1++){_0x1b6ea2[_0x9918('0x13')]+=_0x2dc468[_0x9918('0x18')]['transcripts'][_0x216cc1][_0x9918('0x1b')]+'';}}return _0x334b55[_0x9918('0x1c')](_0x1b6ea2);})[_0x9918('0xe')](function(){logger[_0x9918('0xf')](util[_0x9918('0x9')](_0x9918('0x1d'),_0x334b55['id']));if(!_0x334b55[_0x9918('0x1e')]){throw new db[(_0x9918('0x1f'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1a8f69[_0x9918('0x20')]||!_0x1a8f69['sentimentAccountId']||!_0x1a8f69['sentimentRegion']||!_0x1a8f69[_0x9918('0x21')]||!_0x1a8f69['bucket']){throw new db[(_0x9918('0x1f'))][(_0x9918('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1b6ea2['fileText']){throw new Error(_0x9918('0x23'));}if(_0x1a8f69[_0x9918('0x24')]===_0x548f67['id']){return _0x548f67;}else{return db[_0x9918('0x25')][_0x9918('0x26')]({'where':{'id':_settings[_0x9918('0x24')]}});}})['then'](function(_0x11d053){if(!_0x11d053){throw new db[(_0x9918('0x1f'))][(_0x9918('0x22'))](_0x9918('0x27'));}if(!_0x11d053[_0x9918('0xb')]||!_0x11d053['data2']){throw new db[(_0x9918('0x1f'))]['ValidationError'](_0x9918('0x28'));}_0x511a2c=_0x11d053;logger['info'](util[_0x9918('0x9')](_0x9918('0x29'),_0x334b55['id']));return sentiment(_0x511a2c[_0x9918('0xb')],_0x511a2c[_0x9918('0x2a')],_0x1a8f69[_0x9918('0x2b')],_0x1b6ea2[_0x9918('0x13')],_0x1a8f69[_0x9918('0x21')]);})[_0x9918('0xe')](function(_0x287459){logger['info'](util[_0x9918('0x9')](_0x9918('0x2c'),_0x334b55['id']));return _0x334b55[_0x9918('0x1c')]({'sentiment':_0x287459[_0x9918('0x2d')],'sPositive':_0x287459[_0x9918('0x2e')][_0x9918('0x2f')],'sNegative':_0x287459[_0x9918('0x2e')][_0x9918('0x30')],'sMixed':_0x287459['SentimentScore']['Mixed'],'sNeutral':_0x287459[_0x9918('0x2e')][_0x9918('0x31')]});})[_0x9918('0xe')](function(){logger[_0x9918('0xf')](util['format'](_0x9918('0x1d'),_0x334b55['id']));_0x43fc75();});case'FAILED':return _0x334b55[_0x9918('0x1c')]({'transcribeStatus':_0x9918('0x32'),'failureReason':_0x420db0[_0x9918('0x11')][_0x9918('0x33')]})['then'](function(){logger['info'](util[_0x9918('0x9')](_0x9918('0x1d'),_0x334b55['id']));_0x43fc75();});default:logger['info'](util[_0x9918('0x9')](_0x9918('0x34'),_0x334b55['id']));break;}}else{return BPromise[_0x9918('0x35')]()[_0x9918('0xe')](function(){if(!_0x334b55[_0x9918('0x1e')]){throw new db['Sequelize'][(_0x9918('0x22'))](_0x9918('0x36'));}if(!_0x1a8f69[_0x9918('0x20')]||!_0x1a8f69[_0x9918('0x24')]||!_0x1a8f69[_0x9918('0x2b')]||!_0x1a8f69[_0x9918('0x21')]||!_0x1a8f69['bucket']){throw new db[(_0x9918('0x1f'))][(_0x9918('0x22'))](_0x9918('0x37'));}if(!_0x334b55[_0x9918('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x1a8f69[_0x9918('0x24')]===_0x548f67['id']){return _0x548f67;}else{return db[_0x9918('0x25')][_0x9918('0x26')]({'where':{'id':_settings[_0x9918('0x24')]}});}})['then'](function(_0x852651){if(!_0x852651){throw new db['Sequelize'][(_0x9918('0x22'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x852651[_0x9918('0xb')]||!_0x852651[_0x9918('0x2a')]){throw new db['Sequelize'][(_0x9918('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x511a2c=_0x852651;logger[_0x9918('0xf')](util[_0x9918('0x9')](_0x9918('0x29'),_0x334b55['id']));return sentiment(_0x511a2c[_0x9918('0xb')],_0x511a2c[_0x9918('0x2a')],_0x1a8f69[_0x9918('0x2b')],_0x334b55['fileText'],_0x1a8f69[_0x9918('0x21')]);})[_0x9918('0xe')](function(_0x4db569){logger[_0x9918('0xf')](util[_0x9918('0x9')](_0x9918('0x2c'),_0x334b55['id']));return _0x334b55[_0x9918('0x1c')]({'sentiment':_0x4db569[_0x9918('0x2d')],'sPositive':_0x4db569['SentimentScore'][_0x9918('0x2f')],'sNegative':_0x4db569[_0x9918('0x2e')][_0x9918('0x30')],'sMixed':_0x4db569[_0x9918('0x2e')][_0x9918('0x38')],'sNeutral':_0x4db569[_0x9918('0x2e')][_0x9918('0x31')],'transcribeStatus':_0x9918('0x14')});})['then'](function(){logger[_0x9918('0xf')](util[_0x9918('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x334b55['id']));_0x43fc75();});}})['catch'](function(_0x49086c){if(_0x49086c){if(!_0x49086c[_0x9918('0x39')]||_0x49086c[_0x9918('0x39')]!==_0x9918('0x3a')){logger['error'](util[_0x9918('0x9')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x334b55['id']),util['inspect'](_0x49086c,{'showHidden':![],'depth':null}));}}_0x43fc75();});});}function checkTranscribe(){var _0xbb3800;var _0x5209a7;var _0x5ca79e;return db[_0x9918('0x3b')]['findAll']({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x9918('0xe')](function(_0x3f94bf){if(!_0x3f94bf||!_0x3f94bf[_0x9918('0x1a')]){throw new db['Sequelize']['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0xbb3800=_0x3f94bf;return db[_0x9918('0x3c')][_0x9918('0x26')]({'where':{'id':0x1}});})[_0x9918('0xe')](function(_0x3a1106){if(!_0x3a1106){throw new db[(_0x9918('0x1f'))][(_0x9918('0x22'))](_0x9918('0x3d'));}_0x5209a7=_0x3a1106;if(!_0x5209a7[_0x9918('0x4')]||!_0x5209a7[_0x9918('0x3e')]||!_0x5209a7[_0x9918('0xc')]||!_0x5209a7[_0x9918('0x21')]||!_0x5209a7[_0x9918('0x3f')]){throw new db['Sequelize'][(_0x9918('0x22'))](_0x9918('0x40'));}return db[_0x9918('0x25')]['findOne']({'where':{'id':_0x5209a7[_0x9918('0x3e')]}});})[_0x9918('0xe')](function(_0x458c00){if(!_0x458c00){throw new db[(_0x9918('0x1f'))][(_0x9918('0x22'))](_0x9918('0x27'));}if(!_0x458c00[_0x9918('0xb')]||!_0x458c00['data2']){throw new db['Sequelize'][(_0x9918('0x22'))](_0x9918('0x28'));}_0x5ca79e=_0x458c00;var _0x4ee8dd=[];_0xbb3800[_0x9918('0x41')](function(_0x401abf){_0x4ee8dd[_0x9918('0x42')](checkTranscribeJob(_0x401abf,_0x5209a7,_0x5ca79e));});return BPromise['all'](_0x4ee8dd);})[_0x9918('0x43')](function(_0x1ec4f0){if(_0x1ec4f0){if(!_0x1ec4f0[_0x9918('0x39')]||_0x1ec4f0[_0x9918('0x39')]!=='SequelizeValidationError'){logger[_0x9918('0x44')](util[_0x9918('0x45')](_0x1ec4f0,{'showHidden':![],'depth':null}));}}});}exports[_0x9918('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};