fcad6dd8e1d37bd53deab017f9f7c3ed35f06abc
[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 _0xf3aa=['sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Positive','Negative','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','language','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','SequelizeValidationError','lodash','aws-sdk','request-promise','util','../../mysqldb','TranscribeService','Comprehend','substring','format','data1','data2','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','COMPLETED','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis'];(function(_0x47a468,_0x333c10){var _0x1306ed=function(_0x59cbfe){while(--_0x59cbfe){_0x47a468['push'](_0x47a468['shift']());}};_0x1306ed(++_0x333c10);}(_0xf3aa,0xf1));var _0xaf3a=function(_0xe5b349,_0x5f06e4){_0xe5b349=_0xe5b349-0x0;var _0x26b0ad=_0xf3aa[_0xe5b349];return _0x26b0ad;};var _=require(_0xaf3a('0x0'));var AWS=require(_0xaf3a('0x1'));var rp=require(_0xaf3a('0x2'));var util=require(_0xaf3a('0x3'));var BPromise=require('bluebird');var db=require(_0xaf3a('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x33b1f6,_0x1e1199,_0x2f62d2,_0x41395c){return new Promise(function(_0x3050e3,_0x141196){var _0xb009f0=new AWS[(_0xaf3a('0x5'))]({'accessKeyId':_0x1e1199,'secretAccessKey':_0x33b1f6,'region':_0x2f62d2});_0xb009f0['getTranscriptionJob']({'TranscriptionJobName':_0x41395c},function(_0x4e5041,_0x3c304e){if(_0x4e5041){return _0x141196(_0x4e5041);}else{return _0x3050e3(_0x3c304e);}});});}function sentiment(_0x3d4bd8,_0x2bfc6f,_0x499643,_0x4a490f,_0x2aeea3){return new Promise(function(_0x1eadef,_0x7ba7b0){var _0x1fe67f=new AWS[(_0xaf3a('0x6'))]({'accessKeyId':_0x2bfc6f,'secretAccessKey':_0x3d4bd8,'region':_0x499643});_0x1fe67f['detectSentiment']({'Text':_0x4a490f,'LanguageCode':_0x2aeea3[_0xaf3a('0x7')](0x0,0x2)},function(_0x3550ed,_0x4bd80c){if(_0x3550ed){return _0x7ba7b0(_0x3550ed);}else{return _0x1eadef(_0x4bd80c);}});});}function checkTranscribeJob(_0x3f5a7f,_0xc980d1,_0x1948c2){var _0x5cd95e;return new BPromise(function(_0x1111f8,_0x4439f6){logger['info'](util[_0xaf3a('0x8')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x3f5a7f['id'],_0x3f5a7f['transcribeName']));return getTranscriptionJob(_0x1948c2[_0xaf3a('0x9')],_0x1948c2[_0xaf3a('0xa')],_0xc980d1['transcribeRegion'],_0x3f5a7f[_0xaf3a('0xb')])[_0xaf3a('0xc')](function(_0x48bc54){logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0xe'),_0x3f5a7f['id'],_0x3f5a7f[_0xaf3a('0xb')],_0x48bc54['TranscriptionJob'][_0xaf3a('0xf')]));if(!_0x3f5a7f[_0xaf3a('0x10')]){switch(_0x48bc54['TranscriptionJob']['TranscriptionJobStatus']){case _0xaf3a('0x11'):var _0x4858df={'transcribeStatus':_0x48bc54[_0xaf3a('0x12')][_0xaf3a('0xf')],'fileUri':_0x48bc54[_0xaf3a('0x12')][_0xaf3a('0x13')][_0xaf3a('0x14')]};logger['info'](util[_0xaf3a('0x8')](_0xaf3a('0x15'),_0x3f5a7f['id']));return rp({'uri':_0x48bc54[_0xaf3a('0x12')][_0xaf3a('0x13')][_0xaf3a('0x14')],'json':!![]})[_0xaf3a('0xc')](function(_0x8878e3){logger[_0xaf3a('0xd')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x3f5a7f['id']));if(_0x8878e3&&_0x8878e3[_0xaf3a('0x16')]&&_0x8878e3[_0xaf3a('0x16')][_0xaf3a('0x17')]&&_0x8878e3['results'][_0xaf3a('0x17')][_0xaf3a('0x18')]){_0x4858df['fileText']='';for(var _0x2d3972=0x0;_0x2d3972<_0x8878e3[_0xaf3a('0x16')][_0xaf3a('0x17')][_0xaf3a('0x18')];_0x2d3972++){_0x4858df[_0xaf3a('0x10')]+=_0x8878e3[_0xaf3a('0x16')][_0xaf3a('0x17')][_0x2d3972][_0xaf3a('0x19')]+'';}}return _0x3f5a7f['update'](_0x4858df);})['then'](function(){logger['info'](util[_0xaf3a('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3f5a7f['id']));if(!_0x3f5a7f[_0xaf3a('0x1a')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x1d'));}if(!_0xc980d1['sentiment']||!_0xc980d1[_0xaf3a('0x1e')]||!_0xc980d1['sentimentRegion']||!_0xc980d1['language']||!_0xc980d1[_0xaf3a('0x1f')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x20'));}if(!_0x4858df[_0xaf3a('0x10')]){throw new Error(_0xaf3a('0x21'));}if(_0xc980d1[_0xaf3a('0x1e')]===_0x1948c2['id']){return _0x1948c2;}else{return db[_0xaf3a('0x22')][_0xaf3a('0x23')]({'where':{'id':_settings[_0xaf3a('0x1e')]}});}})[_0xaf3a('0xc')](function(_0x151d98){if(!_0x151d98){throw new db[(_0xaf3a('0x1b'))]['ValidationError'](_0xaf3a('0x24'));}if(!_0x151d98[_0xaf3a('0x9')]||!_0x151d98['data2']){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x25'));}_0x5cd95e=_0x151d98;logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0x26'),_0x3f5a7f['id']));return sentiment(_0x5cd95e[_0xaf3a('0x9')],_0x5cd95e[_0xaf3a('0xa')],_0xc980d1[_0xaf3a('0x27')],_0x4858df[_0xaf3a('0x10')],_0xc980d1['language']);})[_0xaf3a('0xc')](function(_0x124e72){logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0x28'),_0x3f5a7f['id']));return _0x3f5a7f[_0xaf3a('0x29')]({'sentiment':_0x124e72[_0xaf3a('0x2a')],'sPositive':_0x124e72[_0xaf3a('0x2b')][_0xaf3a('0x2c')],'sNegative':_0x124e72[_0xaf3a('0x2b')][_0xaf3a('0x2d')],'sMixed':_0x124e72[_0xaf3a('0x2b')]['Mixed'],'sNeutral':_0x124e72[_0xaf3a('0x2b')]['Neutral']});})[_0xaf3a('0xc')](function(){logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0x2e'),_0x3f5a7f['id']));_0x1111f8();});case _0xaf3a('0x2f'):return _0x3f5a7f[_0xaf3a('0x29')]({'transcribeStatus':_0xaf3a('0x2f'),'failureReason':_0x48bc54[_0xaf3a('0x12')][_0xaf3a('0x30')]})['then'](function(){logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0x2e'),_0x3f5a7f['id']));_0x1111f8();});default:logger[_0xaf3a('0xd')](util['format'](_0xaf3a('0x31'),_0x3f5a7f['id']));break;}}else{return BPromise[_0xaf3a('0x32')]()[_0xaf3a('0xc')](function(){if(!_0x3f5a7f[_0xaf3a('0x1a')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x1d'));}if(!_0xc980d1[_0xaf3a('0x33')]||!_0xc980d1['sentimentAccountId']||!_0xc980d1['sentimentRegion']||!_0xc980d1[_0xaf3a('0x34')]||!_0xc980d1['bucket']){throw new db['Sequelize'][(_0xaf3a('0x1c'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x3f5a7f[_0xaf3a('0x10')]){throw new Error(_0xaf3a('0x21'));}if(_0xc980d1[_0xaf3a('0x1e')]===_0x1948c2['id']){return _0x1948c2;}else{return db[_0xaf3a('0x22')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xaf3a('0xc')](function(_0x505333){if(!_0x505333){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x505333[_0xaf3a('0x9')]||!_0x505333[_0xaf3a('0xa')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x25'));}_0x5cd95e=_0x505333;logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')](_0xaf3a('0x26'),_0x3f5a7f['id']));return sentiment(_0x5cd95e['data1'],_0x5cd95e[_0xaf3a('0xa')],_0xc980d1[_0xaf3a('0x27')],_0x3f5a7f['fileText'],_0xc980d1[_0xaf3a('0x34')]);})['then'](function(_0x2f4b33){logger['info'](util[_0xaf3a('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x3f5a7f['id']));return _0x3f5a7f[_0xaf3a('0x29')]({'sentiment':_0x2f4b33[_0xaf3a('0x2a')],'sPositive':_0x2f4b33[_0xaf3a('0x2b')][_0xaf3a('0x2c')],'sNegative':_0x2f4b33[_0xaf3a('0x2b')][_0xaf3a('0x2d')],'sMixed':_0x2f4b33[_0xaf3a('0x2b')]['Mixed'],'sNeutral':_0x2f4b33['SentimentScore']['Neutral'],'transcribeStatus':_0xaf3a('0x11')});})['then'](function(){logger[_0xaf3a('0xd')](util[_0xaf3a('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3f5a7f['id']));_0x1111f8();});}})[_0xaf3a('0x35')](function(_0x2fa8c8){if(_0x2fa8c8){if(!_0x2fa8c8[_0xaf3a('0x36')]||_0x2fa8c8[_0xaf3a('0x36')]!=='SequelizeValidationError'){logger[_0xaf3a('0x37')](util[_0xaf3a('0x8')](_0xaf3a('0x38'),_0x3f5a7f['id']),util[_0xaf3a('0x39')](_0x2fa8c8,{'showHidden':![],'depth':null}));}}_0x1111f8();});});}function checkTranscribe(){var _0xc3551d;var _0x466d41;var _0x3616bf;return db[_0xaf3a('0x3a')][_0xaf3a('0x3b')]({'where':{'transcribeStatus':_0xaf3a('0x3c')}})[_0xaf3a('0xc')](function(_0x4705e3){if(!_0x4705e3||!_0x4705e3[_0xaf3a('0x18')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x3d'));}_0xc3551d=_0x4705e3;return db[_0xaf3a('0x3e')][_0xaf3a('0x23')]({'where':{'id':0x1}});})['then'](function(_0x10cb74){if(!_0x10cb74){throw new db[(_0xaf3a('0x1b'))]['ValidationError'](_0xaf3a('0x3f'));}_0x466d41=_0x10cb74;if(!_0x466d41['transcribe']||!_0x466d41[_0xaf3a('0x40')]||!_0x466d41[_0xaf3a('0x41')]||!_0x466d41[_0xaf3a('0x34')]||!_0x466d41[_0xaf3a('0x1f')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x42'));}return db[_0xaf3a('0x22')][_0xaf3a('0x23')]({'where':{'id':_0x466d41['transcribeAccountId']}});})[_0xaf3a('0xc')](function(_0x549502){if(!_0x549502){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x549502[_0xaf3a('0x9')]||!_0x549502[_0xaf3a('0xa')]){throw new db[(_0xaf3a('0x1b'))][(_0xaf3a('0x1c'))](_0xaf3a('0x25'));}_0x3616bf=_0x549502;var _0x3351c3=[];_0xc3551d[_0xaf3a('0x43')](function(_0x3cb7e1){_0x3351c3[_0xaf3a('0x44')](checkTranscribeJob(_0x3cb7e1,_0x466d41,_0x3616bf));});return BPromise['all'](_0x3351c3);})['catch'](function(_0x48f63e){if(_0x48f63e){if(!_0x48f63e[_0xaf3a('0x36')]||_0x48f63e['name']!==_0xaf3a('0x45')){logger[_0xaf3a('0x37')](util[_0xaf3a('0x39')](_0x48f63e,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};