afef6c85693189e287e97723f98bc50bc09eef7d
[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 _0x438a=['transcribeRegion','transcribeName','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','then','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data1','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','resolve','sentiment','Cloud\x20Provider\x20not\x20configured','Positive','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data2'];(function(_0x5a52da,_0x319895){var _0x28a4ad=function(_0x5f0b06){while(--_0x5f0b06){_0x5a52da['push'](_0x5a52da['shift']());}};_0x28a4ad(++_0x319895);}(_0x438a,0x1d7));var _0xa438=function(_0x258a0d,_0x3c71cd){_0x258a0d=_0x258a0d-0x0;var _0x4eb611=_0x438a[_0x258a0d];return _0x4eb611;};var _=require(_0xa438('0x0'));var AWS=require(_0xa438('0x1'));var rp=require(_0xa438('0x2'));var util=require(_0xa438('0x3'));var BPromise=require(_0xa438('0x4'));var db=require(_0xa438('0x5'))['db'];var logger=require(_0xa438('0x6'))(_0xa438('0x7'));function getTranscriptionJob(_0x36511f,_0x167271,_0x199cbf,_0x747ac3){return new Promise(function(_0x55b087,_0xd4a421){var _0xe26b0=new AWS['TranscribeService']({'accessKeyId':_0x167271,'secretAccessKey':_0x36511f,'region':_0x199cbf});_0xe26b0['getTranscriptionJob']({'TranscriptionJobName':_0x747ac3},function(_0x444401,_0x5a7353){if(_0x444401){return _0xd4a421(_0x444401);}else{return _0x55b087(_0x5a7353);}});});}function sentiment(_0x37365d,_0x46c55f,_0x41c727,_0x56fc2c,_0x156c6f){return new Promise(function(_0x50f455,_0x4eb5c7){var _0xabbf5f=new AWS['Comprehend']({'accessKeyId':_0x46c55f,'secretAccessKey':_0x37365d,'region':_0x41c727});_0xabbf5f['detectSentiment']({'Text':_0x56fc2c,'LanguageCode':_0x156c6f['substring'](0x0,0x2)},function(_0x528e2e,_0x590f8a){if(_0x528e2e){return _0x4eb5c7(_0x528e2e);}else{return _0x50f455(_0x590f8a);}});});}function checkTranscribeJob(_0x209849,_0x4284e9,_0x334b24){var _0x14b05e;return new BPromise(function(_0x4d7fe0,_0x4999c5){logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0xa'),_0x209849['id'],_0x209849['transcribeName']));return getTranscriptionJob(_0x334b24['data1'],_0x334b24[_0xa438('0xb')],_0x4284e9[_0xa438('0xc')],_0x209849[_0xa438('0xd')])['then'](function(_0x1b87fb){logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0xe'),_0x209849['id'],_0x209849['transcribeName'],_0x1b87fb[_0xa438('0xf')][_0xa438('0x10')]));if(!_0x209849[_0xa438('0x11')]){switch(_0x1b87fb['TranscriptionJob'][_0xa438('0x10')]){case _0xa438('0x12'):var _0x3c71b6={'transcribeStatus':_0x1b87fb[_0xa438('0xf')][_0xa438('0x10')],'fileUri':_0x1b87fb[_0xa438('0xf')][_0xa438('0x13')]['TranscriptFileUri']};logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x14'),_0x209849['id']));return rp({'uri':_0x1b87fb['TranscriptionJob'][_0xa438('0x13')][_0xa438('0x15')],'json':!![]})[_0xa438('0x16')](function(_0x3b40bf){logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x209849['id']));if(_0x3b40bf&&_0x3b40bf[_0xa438('0x17')]&&_0x3b40bf['results'][_0xa438('0x18')]&&_0x3b40bf['results'][_0xa438('0x18')][_0xa438('0x19')]){_0x3c71b6[_0xa438('0x11')]='';for(var _0x9828b8=0x0;_0x9828b8<_0x3b40bf['results'][_0xa438('0x18')]['length'];_0x9828b8++){_0x3c71b6[_0xa438('0x11')]+=_0x3b40bf[_0xa438('0x17')][_0xa438('0x18')][_0x9828b8][_0xa438('0x1a')]+'';}}return _0x209849[_0xa438('0x1b')](_0x3c71b6);})[_0xa438('0x16')](function(){logger['info'](util[_0xa438('0x9')](_0xa438('0x1c'),_0x209849['id']));if(!_0x209849[_0xa438('0x1d')]){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x20'));}if(!_0x4284e9['sentiment']||!_0x4284e9[_0xa438('0x21')]||!_0x4284e9[_0xa438('0x22')]||!_0x4284e9[_0xa438('0x23')]||!_0x4284e9[_0xa438('0x24')]){throw new db['Sequelize'][(_0xa438('0x1f'))](_0xa438('0x25'));}if(!_0x3c71b6[_0xa438('0x11')]){throw new Error(_0xa438('0x26'));}if(_0x4284e9[_0xa438('0x21')]===_0x334b24['id']){return _0x334b24;}else{return db[_0xa438('0x27')][_0xa438('0x28')]({'where':{'id':_settings[_0xa438('0x21')]}});}})[_0xa438('0x16')](function(_0x47a5ec){if(!_0x47a5ec){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x29'));}if(!_0x47a5ec['data1']||!_0x47a5ec['data2']){throw new db[(_0xa438('0x1e'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x14b05e=_0x47a5ec;logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x2a'),_0x209849['id']));return sentiment(_0x14b05e[_0xa438('0x2b')],_0x14b05e[_0xa438('0xb')],_0x4284e9[_0xa438('0x22')],_0x3c71b6[_0xa438('0x11')],_0x4284e9[_0xa438('0x23')]);})[_0xa438('0x16')](function(_0x2282a1){logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x2c'),_0x209849['id']));return _0x209849[_0xa438('0x1b')]({'sentiment':_0x2282a1[_0xa438('0x2d')],'sPositive':_0x2282a1[_0xa438('0x2e')]['Positive'],'sNegative':_0x2282a1[_0xa438('0x2e')][_0xa438('0x2f')],'sMixed':_0x2282a1[_0xa438('0x2e')][_0xa438('0x30')],'sNeutral':_0x2282a1[_0xa438('0x2e')][_0xa438('0x31')]});})['then'](function(){logger[_0xa438('0x8')](util['format'](_0xa438('0x1c'),_0x209849['id']));_0x4d7fe0();});case'FAILED':return _0x209849['update']({'transcribeStatus':'FAILED','failureReason':_0x1b87fb['TranscriptionJob']['FailureReason']})[_0xa438('0x16')](function(){logger['info'](util['format'](_0xa438('0x1c'),_0x209849['id']));_0x4d7fe0();});default:logger['info'](util[_0xa438('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x209849['id']));break;}}else{return BPromise[_0xa438('0x32')]()[_0xa438('0x16')](function(){if(!_0x209849[_0xa438('0x1d')]){throw new db['Sequelize'][(_0xa438('0x1f'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x4284e9[_0xa438('0x33')]||!_0x4284e9[_0xa438('0x21')]||!_0x4284e9[_0xa438('0x22')]||!_0x4284e9[_0xa438('0x23')]||!_0x4284e9[_0xa438('0x24')]){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x25'));}if(!_0x209849['fileText']){throw new Error(_0xa438('0x26'));}if(_0x4284e9[_0xa438('0x21')]===_0x334b24['id']){return _0x334b24;}else{return db[_0xa438('0x27')][_0xa438('0x28')]({'where':{'id':_settings[_0xa438('0x21')]}});}})['then'](function(_0x48434b){if(!_0x48434b){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x29'));}if(!_0x48434b[_0xa438('0x2b')]||!_0x48434b[_0xa438('0xb')]){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x34'));}_0x14b05e=_0x48434b;logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x2a'),_0x209849['id']));return sentiment(_0x14b05e[_0xa438('0x2b')],_0x14b05e[_0xa438('0xb')],_0x4284e9['sentimentRegion'],_0x209849[_0xa438('0x11')],_0x4284e9[_0xa438('0x23')]);})['then'](function(_0xb2583){logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x2c'),_0x209849['id']));return _0x209849[_0xa438('0x1b')]({'sentiment':_0xb2583[_0xa438('0x2d')],'sPositive':_0xb2583['SentimentScore'][_0xa438('0x35')],'sNegative':_0xb2583[_0xa438('0x2e')]['Negative'],'sMixed':_0xb2583[_0xa438('0x2e')][_0xa438('0x30')],'sNeutral':_0xb2583[_0xa438('0x2e')]['Neutral'],'transcribeStatus':_0xa438('0x12')});})[_0xa438('0x16')](function(){logger[_0xa438('0x8')](util[_0xa438('0x9')](_0xa438('0x1c'),_0x209849['id']));_0x4d7fe0();});}})[_0xa438('0x36')](function(_0xa69f2b){if(_0xa69f2b){if(!_0xa69f2b[_0xa438('0x37')]||_0xa69f2b[_0xa438('0x37')]!==_0xa438('0x38')){logger[_0xa438('0x39')](util['format'](_0xa438('0x3a'),_0x209849['id']),util[_0xa438('0x3b')](_0xa69f2b,{'showHidden':![],'depth':null}));}}_0x4d7fe0();});});}function checkTranscribe(){var _0x57146e;var _0x335181;var _0x2a7264;return db[_0xa438('0x3c')][_0xa438('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xa438('0x16')](function(_0x247685){if(!_0x247685||!_0x247685[_0xa438('0x19')]){throw new db[(_0xa438('0x1e'))][(_0xa438('0x1f'))](_0xa438('0x3e'));}_0x57146e=_0x247685;return db['Setting'][_0xa438('0x28')]({'where':{'id':0x1}});})[_0xa438('0x16')](function(_0x6469de){if(!_0x6469de){throw new db[(_0xa438('0x1e'))]['ValidationError'](_0xa438('0x3f'));}_0x335181=_0x6469de;if(!_0x335181[_0xa438('0x7')]||!_0x335181[_0xa438('0x40')]||!_0x335181[_0xa438('0xc')]||!_0x335181[_0xa438('0x23')]||!_0x335181[_0xa438('0x24')]){throw new db[(_0xa438('0x1e'))]['ValidationError'](_0xa438('0x41'));}return db[_0xa438('0x27')][_0xa438('0x28')]({'where':{'id':_0x335181['transcribeAccountId']}});})[_0xa438('0x16')](function(_0x1a72d6){if(!_0x1a72d6){throw new db['Sequelize'][(_0xa438('0x1f'))](_0xa438('0x29'));}if(!_0x1a72d6[_0xa438('0x2b')]||!_0x1a72d6[_0xa438('0xb')]){throw new db[(_0xa438('0x1e'))]['ValidationError'](_0xa438('0x34'));}_0x2a7264=_0x1a72d6;var _0x5e8fca=[];_0x57146e[_0xa438('0x42')](function(_0x4ab5e6){_0x5e8fca['push'](checkTranscribeJob(_0x4ab5e6,_0x335181,_0x2a7264));});return BPromise[_0xa438('0x43')](_0x5e8fca);})[_0xa438('0x36')](function(_0x1524d4){if(_0x1524d4){if(!_0x1524d4[_0xa438('0x37')]||_0x1524d4[_0xa438('0x37')]!=='SequelizeValidationError'){logger[_0xa438('0x39')](util[_0xa438('0x3b')](_0x1524d4,{'showHidden':![],'depth':null}));}}});}exports[_0xa438('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};