Built motion from commit (unavailable).|2.5.4
[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 _0x8833=['info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','bucket','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','findOne','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','TranscribeService','detectSentiment','substring'];(function(_0x54daf5,_0x528643){var _0xf70158=function(_0x4902d6){while(--_0x4902d6){_0x54daf5['push'](_0x54daf5['shift']());}};_0xf70158(++_0x528643);}(_0x8833,0x8d));var _0x3883=function(_0x1bae7d,_0x5760f4){_0x1bae7d=_0x1bae7d-0x0;var _0x2687aa=_0x8833[_0x1bae7d];return _0x2687aa;};var _=require(_0x3883('0x0'));var AWS=require(_0x3883('0x1'));var rp=require(_0x3883('0x2'));var util=require(_0x3883('0x3'));var BPromise=require(_0x3883('0x4'));var db=require(_0x3883('0x5'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x202ffc,_0x30d2f1,_0x192981,_0x3019a8){return new Promise(function(_0x359d82,_0x3df880){var _0x5979a7=new AWS[(_0x3883('0x6'))]({'accessKeyId':_0x30d2f1,'secretAccessKey':_0x202ffc,'region':_0x192981});_0x5979a7['getTranscriptionJob']({'TranscriptionJobName':_0x3019a8},function(_0x272d7b,_0x482084){if(_0x272d7b){return _0x3df880(_0x272d7b);}else{return _0x359d82(_0x482084);}});});}function sentiment(_0x337410,_0x95858f,_0x157c8a,_0x466178,_0x4fdfad){return new Promise(function(_0x88d633,_0x4441d3){var _0x53907f=new AWS['Comprehend']({'accessKeyId':_0x95858f,'secretAccessKey':_0x337410,'region':_0x157c8a});_0x53907f[_0x3883('0x7')]({'Text':_0x466178,'LanguageCode':_0x4fdfad[_0x3883('0x8')](0x0,0x2)},function(_0x58e760,_0x30bdac){if(_0x58e760){return _0x4441d3(_0x58e760);}else{return _0x88d633(_0x30bdac);}});});}function checkTranscribeJob(_0x45f443,_0x599388,_0x1acad1){var _0x53629f;return new BPromise(function(_0x150bfb,_0x26c1d0){logger[_0x3883('0x9')](util[_0x3883('0xa')](_0x3883('0xb'),_0x45f443['id'],_0x45f443[_0x3883('0xc')]));return getTranscriptionJob(_0x1acad1[_0x3883('0xd')],_0x1acad1[_0x3883('0xe')],_0x599388[_0x3883('0xf')],_0x45f443['transcribeName'])[_0x3883('0x10')](function(_0x2bcb39){logger['info'](util[_0x3883('0xa')](_0x3883('0x11'),_0x45f443['id'],_0x45f443[_0x3883('0xc')],_0x2bcb39[_0x3883('0x12')][_0x3883('0x13')]));if(!_0x45f443[_0x3883('0x14')]){switch(_0x2bcb39[_0x3883('0x12')]['TranscriptionJobStatus']){case _0x3883('0x15'):var _0x4b1df0={'transcribeStatus':_0x2bcb39[_0x3883('0x12')][_0x3883('0x13')],'fileUri':_0x2bcb39['TranscriptionJob']['Transcript']['TranscriptFileUri']};logger[_0x3883('0x9')](util[_0x3883('0xa')](_0x3883('0x16'),_0x45f443['id']));return rp({'uri':_0x2bcb39[_0x3883('0x12')][_0x3883('0x17')][_0x3883('0x18')],'json':!![]})[_0x3883('0x10')](function(_0x3c1944){logger[_0x3883('0x9')](util[_0x3883('0xa')](_0x3883('0x19'),_0x45f443['id']));if(_0x3c1944&&_0x3c1944[_0x3883('0x1a')]&&_0x3c1944[_0x3883('0x1a')]['transcripts']&&_0x3c1944[_0x3883('0x1a')]['transcripts']['length']){_0x4b1df0[_0x3883('0x14')]='';for(var _0x5e3461=0x0;_0x5e3461<_0x3c1944[_0x3883('0x1a')][_0x3883('0x1b')][_0x3883('0x1c')];_0x5e3461++){_0x4b1df0[_0x3883('0x14')]+=_0x3c1944[_0x3883('0x1a')][_0x3883('0x1b')][_0x5e3461][_0x3883('0x1d')]+'';}}return _0x45f443['update'](_0x4b1df0);})[_0x3883('0x10')](function(){logger['info'](util[_0x3883('0xa')](_0x3883('0x1e'),_0x45f443['id']));if(!_0x45f443[_0x3883('0x1f')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x22'));}if(!_0x599388['sentiment']||!_0x599388[_0x3883('0x23')]||!_0x599388[_0x3883('0x24')]||!_0x599388[_0x3883('0x25')]||!_0x599388['bucket']){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x26'));}if(!_0x4b1df0[_0x3883('0x14')]){throw new Error(_0x3883('0x27'));}if(_0x599388[_0x3883('0x23')]===_0x1acad1['id']){return _0x1acad1;}else{return db[_0x3883('0x28')]['findOne']({'where':{'id':_settings[_0x3883('0x23')]}});}})[_0x3883('0x10')](function(_0x39b535){if(!_0x39b535){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x29'));}if(!_0x39b535['data1']||!_0x39b535[_0x3883('0xe')]){throw new db[(_0x3883('0x20'))]['ValidationError'](_0x3883('0x2a'));}_0x53629f=_0x39b535;logger[_0x3883('0x9')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x45f443['id']));return sentiment(_0x53629f[_0x3883('0xd')],_0x53629f[_0x3883('0xe')],_0x599388['sentimentRegion'],_0x4b1df0[_0x3883('0x14')],_0x599388[_0x3883('0x25')]);})[_0x3883('0x10')](function(_0x13192a){logger[_0x3883('0x9')](util[_0x3883('0xa')](_0x3883('0x2b'),_0x45f443['id']));return _0x45f443[_0x3883('0x2c')]({'sentiment':_0x13192a['Sentiment'],'sPositive':_0x13192a[_0x3883('0x2d')][_0x3883('0x2e')],'sNegative':_0x13192a[_0x3883('0x2d')][_0x3883('0x2f')],'sMixed':_0x13192a[_0x3883('0x2d')][_0x3883('0x30')],'sNeutral':_0x13192a['SentimentScore'][_0x3883('0x31')]});})[_0x3883('0x10')](function(){logger['info'](util[_0x3883('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x45f443['id']));_0x150bfb();});case _0x3883('0x32'):return _0x45f443['update']({'transcribeStatus':_0x3883('0x32'),'failureReason':_0x2bcb39[_0x3883('0x12')]['FailureReason']})[_0x3883('0x10')](function(){logger[_0x3883('0x9')](util[_0x3883('0xa')](_0x3883('0x1e'),_0x45f443['id']));_0x150bfb();});default:logger[_0x3883('0x9')](util['format'](_0x3883('0x33'),_0x45f443['id']));break;}}else{return BPromise[_0x3883('0x34')]()['then'](function(){if(!_0x45f443[_0x3883('0x1f')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x22'));}if(!_0x599388[_0x3883('0x35')]||!_0x599388['sentimentAccountId']||!_0x599388['sentimentRegion']||!_0x599388[_0x3883('0x25')]||!_0x599388[_0x3883('0x36')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x26'));}if(!_0x45f443['fileText']){throw new Error(_0x3883('0x27'));}if(_0x599388[_0x3883('0x23')]===_0x1acad1['id']){return _0x1acad1;}else{return db[_0x3883('0x28')]['findOne']({'where':{'id':_settings[_0x3883('0x23')]}});}})[_0x3883('0x10')](function(_0x574fcc){if(!_0x574fcc){throw new db[(_0x3883('0x20'))]['ValidationError'](_0x3883('0x29'));}if(!_0x574fcc['data1']||!_0x574fcc[_0x3883('0xe')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x2a'));}_0x53629f=_0x574fcc;logger[_0x3883('0x9')](util['format'](_0x3883('0x37'),_0x45f443['id']));return sentiment(_0x53629f[_0x3883('0xd')],_0x53629f[_0x3883('0xe')],_0x599388[_0x3883('0x24')],_0x45f443[_0x3883('0x14')],_0x599388[_0x3883('0x25')]);})[_0x3883('0x10')](function(_0x531173){logger['info'](util[_0x3883('0xa')](_0x3883('0x2b'),_0x45f443['id']));return _0x45f443[_0x3883('0x2c')]({'sentiment':_0x531173[_0x3883('0x38')],'sPositive':_0x531173[_0x3883('0x2d')][_0x3883('0x2e')],'sNegative':_0x531173[_0x3883('0x2d')][_0x3883('0x2f')],'sMixed':_0x531173[_0x3883('0x2d')][_0x3883('0x30')],'sNeutral':_0x531173['SentimentScore'][_0x3883('0x31')],'transcribeStatus':_0x3883('0x15')});})['then'](function(){logger['info'](util['format'](_0x3883('0x1e'),_0x45f443['id']));_0x150bfb();});}})[_0x3883('0x39')](function(_0x56821a){if(_0x56821a){if(!_0x56821a['name']||_0x56821a[_0x3883('0x3a')]!==_0x3883('0x3b')){logger[_0x3883('0x3c')](util[_0x3883('0xa')](_0x3883('0x3d'),_0x45f443['id']),util['inspect'](_0x56821a,{'showHidden':![],'depth':null}));}}_0x150bfb();});});}function checkTranscribe(){var _0x4e4e58;var _0x377f9c;var _0x4ebbdb;return db[_0x3883('0x3e')][_0x3883('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x3883('0x10')](function(_0x5e752c){if(!_0x5e752c||!_0x5e752c[_0x3883('0x1c')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x40'));}_0x4e4e58=_0x5e752c;return db[_0x3883('0x41')][_0x3883('0x42')]({'where':{'id':0x1}});})[_0x3883('0x10')](function(_0x55515b){if(!_0x55515b){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))]('Settings\x20not\x20available');}_0x377f9c=_0x55515b;if(!_0x377f9c[_0x3883('0x43')]||!_0x377f9c['transcribeAccountId']||!_0x377f9c[_0x3883('0xf')]||!_0x377f9c[_0x3883('0x25')]||!_0x377f9c[_0x3883('0x36')]){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))](_0x3883('0x44'));}return db[_0x3883('0x28')]['findOne']({'where':{'id':_0x377f9c[_0x3883('0x45')]}});})[_0x3883('0x10')](function(_0xdbf6bb){if(!_0xdbf6bb){throw new db[(_0x3883('0x20'))][(_0x3883('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xdbf6bb[_0x3883('0xd')]||!_0xdbf6bb[_0x3883('0xe')]){throw new db[(_0x3883('0x20'))]['ValidationError'](_0x3883('0x2a'));}_0x4ebbdb=_0xdbf6bb;var _0x2e7748=[];_0x4e4e58[_0x3883('0x46')](function(_0x39c09c){_0x2e7748[_0x3883('0x47')](checkTranscribeJob(_0x39c09c,_0x377f9c,_0x4ebbdb));});return BPromise[_0x3883('0x48')](_0x2e7748);})[_0x3883('0x39')](function(_0x919477){if(_0x919477){if(!_0x919477[_0x3883('0x3a')]||_0x919477[_0x3883('0x3a')]!==_0x3883('0x3b')){logger[_0x3883('0x3c')](util[_0x3883('0x49')](_0x919477,{'showHidden':![],'depth':null}));}}});}exports[_0x3883('0x4a')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};