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 _0x5aad=['bluebird','../../mysqldb','transcribe','TranscribeService','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sequelize','Sentiment\x20Analysis\x20not\x20configured','update','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','all','lodash','aws-sdk','request-promise','util'];(function(_0x42ddf8,_0x264fc9){var _0x558152=function(_0x174ea2){while(--_0x174ea2){_0x42ddf8['push'](_0x42ddf8['shift']());}};_0x558152(++_0x264fc9);}(_0x5aad,0x1f4));var _0xd5aa=function(_0x181fac,_0x3b86b5){_0x181fac=_0x181fac-0x0;var _0x1edaa6=_0x5aad[_0x181fac];return _0x1edaa6;};var _=require(_0xd5aa('0x0'));var AWS=require(_0xd5aa('0x1'));var rp=require(_0xd5aa('0x2'));var util=require(_0xd5aa('0x3'));var BPromise=require(_0xd5aa('0x4'));var db=require(_0xd5aa('0x5'))['db'];var logger=require('../../config/logger')(_0xd5aa('0x6'));function getTranscriptionJob(_0x30cc8d,_0x3a9ec0,_0x3d98dc,_0x27c182){return new Promise(function(_0xbdd92f,_0x1d3274){var _0x4965a4=new AWS[(_0xd5aa('0x7'))]({'accessKeyId':_0x3a9ec0,'secretAccessKey':_0x30cc8d,'region':_0x3d98dc});_0x4965a4['getTranscriptionJob']({'TranscriptionJobName':_0x27c182},function(_0x377867,_0x31a401){if(_0x377867){return _0x1d3274(_0x377867);}else{return _0xbdd92f(_0x31a401);}});});}function sentiment(_0x41044b,_0x1c9505,_0x5bbddf,_0x2586e9,_0x3b9103){return new Promise(function(_0x59d599,_0xd99672){var _0x342c0c=new AWS[(_0xd5aa('0x8'))]({'accessKeyId':_0x1c9505,'secretAccessKey':_0x41044b,'region':_0x5bbddf});_0x342c0c[_0xd5aa('0x9')]({'Text':_0x2586e9,'LanguageCode':_0x3b9103['substring'](0x0,0x2)},function(_0x351906,_0x1e1b9a){if(_0x351906){return _0xd99672(_0x351906);}else{return _0x59d599(_0x1e1b9a);}});});}function checkTranscribeJob(_0x3d21ae,_0x7c4041,_0x38da3e){var _0x4f9a9f;return new BPromise(function(_0x500cf6,_0x2a4530){logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0xc'),_0x3d21ae['id'],_0x3d21ae[_0xd5aa('0xd')]));return getTranscriptionJob(_0x38da3e['data1'],_0x38da3e['data2'],_0x7c4041[_0xd5aa('0xe')],_0x3d21ae[_0xd5aa('0xd')])[_0xd5aa('0xf')](function(_0x4817d5){logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0x10'),_0x3d21ae['id'],_0x3d21ae[_0xd5aa('0xd')],_0x4817d5[_0xd5aa('0x11')][_0xd5aa('0x12')]));if(!_0x3d21ae[_0xd5aa('0x13')]){switch(_0x4817d5[_0xd5aa('0x11')][_0xd5aa('0x12')]){case _0xd5aa('0x14'):var _0x403cd0={'transcribeStatus':_0x4817d5[_0xd5aa('0x11')]['TranscriptionJobStatus'],'fileUri':_0x4817d5['TranscriptionJob']['Transcript'][_0xd5aa('0x15')]};logger['info'](util[_0xd5aa('0xb')](_0xd5aa('0x16'),_0x3d21ae['id']));return rp({'uri':_0x4817d5[_0xd5aa('0x11')][_0xd5aa('0x17')][_0xd5aa('0x15')],'json':!![]})[_0xd5aa('0xf')](function(_0xf693a2){logger[_0xd5aa('0xa')](util['format'](_0xd5aa('0x18'),_0x3d21ae['id']));if(_0xf693a2&&_0xf693a2[_0xd5aa('0x19')]&&_0xf693a2[_0xd5aa('0x19')][_0xd5aa('0x1a')]&&_0xf693a2[_0xd5aa('0x19')]['transcripts']['length']){_0x403cd0['fileText']='';for(var _0x13783f=0x0;_0x13783f<_0xf693a2[_0xd5aa('0x19')][_0xd5aa('0x1a')][_0xd5aa('0x1b')];_0x13783f++){_0x403cd0[_0xd5aa('0x13')]+=_0xf693a2[_0xd5aa('0x19')][_0xd5aa('0x1a')][_0x13783f][_0xd5aa('0x1c')]+'';}}return _0x3d21ae['update'](_0x403cd0);})['then'](function(){logger['info'](util[_0xd5aa('0xb')](_0xd5aa('0x1d'),_0x3d21ae['id']));if(!_0x3d21ae[_0xd5aa('0x1e')]){throw new db['Sequelize']['ValidationError'](_0xd5aa('0x1f'));}if(!_0x7c4041[_0xd5aa('0x20')]||!_0x7c4041[_0xd5aa('0x21')]||!_0x7c4041[_0xd5aa('0x22')]||!_0x7c4041[_0xd5aa('0x23')]||!_0x7c4041[_0xd5aa('0x24')]){throw new db['Sequelize'][(_0xd5aa('0x25'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x403cd0[_0xd5aa('0x13')]){throw new Error(_0xd5aa('0x26'));}if(_0x7c4041[_0xd5aa('0x21')]===_0x38da3e['id']){return _0x38da3e;}else{return db[_0xd5aa('0x27')][_0xd5aa('0x28')]({'where':{'id':_settings[_0xd5aa('0x21')]}});}})[_0xd5aa('0xf')](function(_0x5b58ac){if(!_0x5b58ac){throw new db['Sequelize']['ValidationError'](_0xd5aa('0x29'));}if(!_0x5b58ac[_0xd5aa('0x2a')]||!_0x5b58ac[_0xd5aa('0x2b')]){throw new db['Sequelize']['ValidationError'](_0xd5aa('0x2c'));}_0x4f9a9f=_0x5b58ac;logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0x2d'),_0x3d21ae['id']));return sentiment(_0x4f9a9f[_0xd5aa('0x2a')],_0x4f9a9f[_0xd5aa('0x2b')],_0x7c4041[_0xd5aa('0x22')],_0x403cd0[_0xd5aa('0x13')],_0x7c4041['language']);})[_0xd5aa('0xf')](function(_0xe857a3){logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0x2e'),_0x3d21ae['id']));return _0x3d21ae['update']({'sentiment':_0xe857a3[_0xd5aa('0x2f')],'sPositive':_0xe857a3[_0xd5aa('0x30')][_0xd5aa('0x31')],'sNegative':_0xe857a3['SentimentScore'][_0xd5aa('0x32')],'sMixed':_0xe857a3[_0xd5aa('0x30')][_0xd5aa('0x33')],'sNeutral':_0xe857a3[_0xd5aa('0x30')][_0xd5aa('0x34')]});})[_0xd5aa('0xf')](function(){logger[_0xd5aa('0xa')](util['format'](_0xd5aa('0x1d'),_0x3d21ae['id']));_0x500cf6();});case _0xd5aa('0x35'):return _0x3d21ae['update']({'transcribeStatus':'FAILED','failureReason':_0x4817d5[_0xd5aa('0x11')][_0xd5aa('0x36')]})[_0xd5aa('0xf')](function(){logger['info'](util['format'](_0xd5aa('0x1d'),_0x3d21ae['id']));_0x500cf6();});default:logger[_0xd5aa('0xa')](util['format'](_0xd5aa('0x37'),_0x3d21ae['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x3d21ae['tempSentiment']){throw new db[(_0xd5aa('0x38'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x7c4041[_0xd5aa('0x20')]||!_0x7c4041[_0xd5aa('0x21')]||!_0x7c4041[_0xd5aa('0x22')]||!_0x7c4041[_0xd5aa('0x23')]||!_0x7c4041['bucket']){throw new db['Sequelize'][(_0xd5aa('0x25'))](_0xd5aa('0x39'));}if(!_0x3d21ae[_0xd5aa('0x13')]){throw new Error(_0xd5aa('0x26'));}if(_0x7c4041[_0xd5aa('0x21')]===_0x38da3e['id']){return _0x38da3e;}else{return db[_0xd5aa('0x27')]['findOne']({'where':{'id':_settings[_0xd5aa('0x21')]}});}})[_0xd5aa('0xf')](function(_0x5d0849){if(!_0x5d0849){throw new db[(_0xd5aa('0x38'))][(_0xd5aa('0x25'))](_0xd5aa('0x29'));}if(!_0x5d0849[_0xd5aa('0x2a')]||!_0x5d0849[_0xd5aa('0x2b')]){throw new db[(_0xd5aa('0x38'))][(_0xd5aa('0x25'))](_0xd5aa('0x2c'));}_0x4f9a9f=_0x5d0849;logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x3d21ae['id']));return sentiment(_0x4f9a9f[_0xd5aa('0x2a')],_0x4f9a9f['data2'],_0x7c4041[_0xd5aa('0x22')],_0x3d21ae[_0xd5aa('0x13')],_0x7c4041[_0xd5aa('0x23')]);})['then'](function(_0x37eceb){logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0x2e'),_0x3d21ae['id']));return _0x3d21ae[_0xd5aa('0x3a')]({'sentiment':_0x37eceb['Sentiment'],'sPositive':_0x37eceb[_0xd5aa('0x30')][_0xd5aa('0x31')],'sNegative':_0x37eceb[_0xd5aa('0x30')][_0xd5aa('0x32')],'sMixed':_0x37eceb['SentimentScore'][_0xd5aa('0x33')],'sNeutral':_0x37eceb[_0xd5aa('0x30')][_0xd5aa('0x34')],'transcribeStatus':_0xd5aa('0x14')});})['then'](function(){logger[_0xd5aa('0xa')](util[_0xd5aa('0xb')](_0xd5aa('0x1d'),_0x3d21ae['id']));_0x500cf6();});}})[_0xd5aa('0x3b')](function(_0x1e4f30){if(_0x1e4f30){if(!_0x1e4f30[_0xd5aa('0x3c')]||_0x1e4f30[_0xd5aa('0x3c')]!==_0xd5aa('0x3d')){logger[_0xd5aa('0x3e')](util['format'](_0xd5aa('0x3f'),_0x3d21ae['id']),util[_0xd5aa('0x40')](_0x1e4f30,{'showHidden':![],'depth':null}));}}_0x500cf6();});});}function checkTranscribe(){var _0x82d8ec;var _0x76ee1;var _0x3be055;return db[_0xd5aa('0x41')][_0xd5aa('0x42')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xd5aa('0xf')](function(_0xbf3120){if(!_0xbf3120||!_0xbf3120['length']){throw new db['Sequelize'][(_0xd5aa('0x25'))]('No\x20transcribe\x20job\x20to\x20check');}_0x82d8ec=_0xbf3120;return db['Setting'][_0xd5aa('0x28')]({'where':{'id':0x1}});})[_0xd5aa('0xf')](function(_0x956e5a){if(!_0x956e5a){throw new db[(_0xd5aa('0x38'))][(_0xd5aa('0x25'))](_0xd5aa('0x43'));}_0x76ee1=_0x956e5a;if(!_0x76ee1[_0xd5aa('0x6')]||!_0x76ee1[_0xd5aa('0x44')]||!_0x76ee1[_0xd5aa('0xe')]||!_0x76ee1[_0xd5aa('0x23')]||!_0x76ee1['bucket']){throw new db[(_0xd5aa('0x38'))][(_0xd5aa('0x25'))](_0xd5aa('0x45'));}return db[_0xd5aa('0x27')]['findOne']({'where':{'id':_0x76ee1['transcribeAccountId']}});})[_0xd5aa('0xf')](function(_0x3caabf){if(!_0x3caabf){throw new db['Sequelize'][(_0xd5aa('0x25'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3caabf[_0xd5aa('0x2a')]||!_0x3caabf[_0xd5aa('0x2b')]){throw new db[(_0xd5aa('0x38'))][(_0xd5aa('0x25'))](_0xd5aa('0x2c'));}_0x3be055=_0x3caabf;var _0x564471=[];_0x82d8ec['forEach'](function(_0x330f5b){_0x564471[_0xd5aa('0x46')](checkTranscribeJob(_0x330f5b,_0x76ee1,_0x3be055));});return BPromise[_0xd5aa('0x47')](_0x564471);})[_0xd5aa('0x3b')](function(_0x4ef9fb){if(_0x4ef9fb){if(!_0x4ef9fb[_0xd5aa('0x3c')]||_0x4ef9fb[_0xd5aa('0x3c')]!=='SequelizeValidationError'){logger[_0xd5aa('0x3e')](util['inspect'](_0x4ef9fb,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};