190a5763560e92c3c5d48f5721c9412311acab61
[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 _0x0404=['Sequelize','fileText','Transcript\x20not\x20available','findOne','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','sentimentRegion','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','update','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','CloudProvider','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Negative','catch','name','SequelizeValidationError','error','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','forEach','push','all','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','bucket'];(function(_0x4c184d,_0x4278ab){var _0x23d997=function(_0x22d068){while(--_0x22d068){_0x4c184d['push'](_0x4c184d['shift']());}};_0x23d997(++_0x4278ab);}(_0x0404,0x107));var _0x4040=function(_0x1cd674,_0x8d3638){_0x1cd674=_0x1cd674-0x0;var _0x27928f=_0x0404[_0x1cd674];return _0x27928f;};var _=require(_0x4040('0x0'));var AWS=require(_0x4040('0x1'));var rp=require(_0x4040('0x2'));var util=require(_0x4040('0x3'));var BPromise=require(_0x4040('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x4040('0x5'))('transcribe');function getTranscriptionJob(_0x6dad94,_0x15487f,_0x14376f,_0x863877){return new Promise(function(_0x34765a,_0xccb95b){var _0xeb88f0=new AWS[(_0x4040('0x6'))]({'accessKeyId':_0x15487f,'secretAccessKey':_0x6dad94,'region':_0x14376f});_0xeb88f0[_0x4040('0x7')]({'TranscriptionJobName':_0x863877},function(_0x44f109,_0xc4a462){if(_0x44f109){return _0xccb95b(_0x44f109);}else{return _0x34765a(_0xc4a462);}});});}function sentiment(_0x20ea7d,_0x484cdb,_0x2fa416,_0xd9067d,_0x49f5a2){return new Promise(function(_0xb41823,_0x485a86){var _0x51c698=new AWS[(_0x4040('0x8'))]({'accessKeyId':_0x484cdb,'secretAccessKey':_0x20ea7d,'region':_0x2fa416});_0x51c698[_0x4040('0x9')]({'Text':_0xd9067d,'LanguageCode':_0x49f5a2[_0x4040('0xa')](0x0,0x2)},function(_0x5a0e9a,_0x176ee0){if(_0x5a0e9a){return _0x485a86(_0x5a0e9a);}else{return _0xb41823(_0x176ee0);}});});}function checkTranscribeJob(_0x5eba4f,_0xfb2d82,_0x1e438a){var _0x4c846f;return new BPromise(function(_0x155b3a,_0x512877){logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0xd'),_0x5eba4f['id'],_0x5eba4f[_0x4040('0xe')]));return getTranscriptionJob(_0x1e438a['data1'],_0x1e438a['data2'],_0xfb2d82['transcribeRegion'],_0x5eba4f[_0x4040('0xe')])[_0x4040('0xf')](function(_0x2ee6d4){logger['info'](util['format'](_0x4040('0x10'),_0x5eba4f['id'],_0x5eba4f[_0x4040('0xe')],_0x2ee6d4[_0x4040('0x11')][_0x4040('0x12')]));if(!_0x5eba4f['fileText']){switch(_0x2ee6d4[_0x4040('0x11')][_0x4040('0x12')]){case _0x4040('0x13'):var _0x1e5288={'transcribeStatus':_0x2ee6d4[_0x4040('0x11')][_0x4040('0x12')],'fileUri':_0x2ee6d4[_0x4040('0x11')][_0x4040('0x14')][_0x4040('0x15')]};logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x16'),_0x5eba4f['id']));return rp({'uri':_0x2ee6d4['TranscriptionJob']['Transcript'][_0x4040('0x15')],'json':!![]})['then'](function(_0x411ad0){logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x17'),_0x5eba4f['id']));if(_0x411ad0&&_0x411ad0[_0x4040('0x18')]&&_0x411ad0[_0x4040('0x18')][_0x4040('0x19')]&&_0x411ad0[_0x4040('0x18')][_0x4040('0x19')][_0x4040('0x1a')]){_0x1e5288['fileText']='';for(var _0x20c7dc=0x0;_0x20c7dc<_0x411ad0['results'][_0x4040('0x19')]['length'];_0x20c7dc++){_0x1e5288['fileText']+=_0x411ad0[_0x4040('0x18')][_0x4040('0x19')][_0x20c7dc][_0x4040('0x1b')]+'';}}return _0x5eba4f['update'](_0x1e5288);})['then'](function(){logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x1c'),_0x5eba4f['id']));if(!_0x5eba4f['tempSentiment']){throw new db['Sequelize'][(_0x4040('0x1d'))](_0x4040('0x1e'));}if(!_0xfb2d82[_0x4040('0x1f')]||!_0xfb2d82['sentimentAccountId']||!_0xfb2d82['sentimentRegion']||!_0xfb2d82['language']||!_0xfb2d82[_0x4040('0x20')]){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1e5288[_0x4040('0x22')]){throw new Error(_0x4040('0x23'));}if(_0xfb2d82['sentimentAccountId']===_0x1e438a['id']){return _0x1e438a;}else{return db['CloudProvider'][_0x4040('0x24')]({'where':{'id':_settings[_0x4040('0x25')]}});}})['then'](function(_0x162710){if(!_0x162710){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))](_0x4040('0x26'));}if(!_0x162710[_0x4040('0x27')]||!_0x162710[_0x4040('0x28')]){throw new db['Sequelize'][(_0x4040('0x1d'))](_0x4040('0x29'));}_0x4c846f=_0x162710;logger[_0x4040('0xb')](util[_0x4040('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5eba4f['id']));return sentiment(_0x4c846f[_0x4040('0x27')],_0x4c846f['data2'],_0xfb2d82[_0x4040('0x2a')],_0x1e5288[_0x4040('0x22')],_0xfb2d82[_0x4040('0x2b')]);})[_0x4040('0xf')](function(_0x26cef4){logger['info'](util[_0x4040('0xc')](_0x4040('0x2c'),_0x5eba4f['id']));return _0x5eba4f['update']({'sentiment':_0x26cef4[_0x4040('0x2d')],'sPositive':_0x26cef4[_0x4040('0x2e')][_0x4040('0x2f')],'sNegative':_0x26cef4[_0x4040('0x2e')]['Negative'],'sMixed':_0x26cef4[_0x4040('0x2e')][_0x4040('0x30')],'sNeutral':_0x26cef4[_0x4040('0x2e')]['Neutral']});})[_0x4040('0xf')](function(){logger[_0x4040('0xb')](util['format'](_0x4040('0x1c'),_0x5eba4f['id']));_0x155b3a();});case'FAILED':return _0x5eba4f[_0x4040('0x31')]({'transcribeStatus':_0x4040('0x32'),'failureReason':_0x2ee6d4[_0x4040('0x11')][_0x4040('0x33')]})[_0x4040('0xf')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5eba4f['id']));_0x155b3a();});default:logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x34'),_0x5eba4f['id']));break;}}else{return BPromise[_0x4040('0x35')]()['then'](function(){if(!_0x5eba4f[_0x4040('0x36')]){throw new db['Sequelize']['ValidationError'](_0x4040('0x1e'));}if(!_0xfb2d82[_0x4040('0x1f')]||!_0xfb2d82[_0x4040('0x25')]||!_0xfb2d82[_0x4040('0x2a')]||!_0xfb2d82[_0x4040('0x2b')]||!_0xfb2d82[_0x4040('0x20')]){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5eba4f[_0x4040('0x22')]){throw new Error(_0x4040('0x23'));}if(_0xfb2d82[_0x4040('0x25')]===_0x1e438a['id']){return _0x1e438a;}else{return db[_0x4040('0x37')][_0x4040('0x24')]({'where':{'id':_settings[_0x4040('0x25')]}});}})['then'](function(_0x511caf){if(!_0x511caf){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))](_0x4040('0x26'));}if(!_0x511caf[_0x4040('0x27')]||!_0x511caf[_0x4040('0x28')]){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))](_0x4040('0x29'));}_0x4c846f=_0x511caf;logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x38'),_0x5eba4f['id']));return sentiment(_0x4c846f[_0x4040('0x27')],_0x4c846f[_0x4040('0x28')],_0xfb2d82[_0x4040('0x2a')],_0x5eba4f[_0x4040('0x22')],_0xfb2d82[_0x4040('0x2b')]);})[_0x4040('0xf')](function(_0x46f88d){logger['info'](util[_0x4040('0xc')](_0x4040('0x2c'),_0x5eba4f['id']));return _0x5eba4f[_0x4040('0x31')]({'sentiment':_0x46f88d[_0x4040('0x2d')],'sPositive':_0x46f88d['SentimentScore'][_0x4040('0x2f')],'sNegative':_0x46f88d[_0x4040('0x2e')][_0x4040('0x39')],'sMixed':_0x46f88d[_0x4040('0x2e')][_0x4040('0x30')],'sNeutral':_0x46f88d['SentimentScore']['Neutral'],'transcribeStatus':_0x4040('0x13')});})['then'](function(){logger[_0x4040('0xb')](util[_0x4040('0xc')](_0x4040('0x1c'),_0x5eba4f['id']));_0x155b3a();});}})[_0x4040('0x3a')](function(_0x3d1325){if(_0x3d1325){if(!_0x3d1325[_0x4040('0x3b')]||_0x3d1325[_0x4040('0x3b')]!==_0x4040('0x3c')){logger[_0x4040('0x3d')](util[_0x4040('0xc')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x5eba4f['id']),util['inspect'](_0x3d1325,{'showHidden':![],'depth':null}));}}_0x155b3a();});});}function checkTranscribe(){var _0x560e58;var _0x2f86bc;var _0x12ec61;return db[_0x4040('0x3e')]['findAll']({'where':{'transcribeStatus':_0x4040('0x3f')}})[_0x4040('0xf')](function(_0xeee662){if(!_0xeee662||!_0xeee662[_0x4040('0x1a')]){throw new db['Sequelize'][(_0x4040('0x1d'))](_0x4040('0x40'));}_0x560e58=_0xeee662;return db['Setting'][_0x4040('0x24')]({'where':{'id':0x1}});})[_0x4040('0xf')](function(_0x21dba9){if(!_0x21dba9){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))](_0x4040('0x41'));}_0x2f86bc=_0x21dba9;if(!_0x2f86bc[_0x4040('0x42')]||!_0x2f86bc[_0x4040('0x43')]||!_0x2f86bc[_0x4040('0x44')]||!_0x2f86bc[_0x4040('0x2b')]||!_0x2f86bc[_0x4040('0x20')]){throw new db[(_0x4040('0x21'))][(_0x4040('0x1d'))]('Transcribe\x20not\x20configured');}return db[_0x4040('0x37')][_0x4040('0x24')]({'where':{'id':_0x2f86bc[_0x4040('0x43')]}});})[_0x4040('0xf')](function(_0x2d8ff8){if(!_0x2d8ff8){throw new db['Sequelize'][(_0x4040('0x1d'))](_0x4040('0x26'));}if(!_0x2d8ff8[_0x4040('0x27')]||!_0x2d8ff8['data2']){throw new db[(_0x4040('0x21'))]['ValidationError'](_0x4040('0x29'));}_0x12ec61=_0x2d8ff8;var _0x824ccf=[];_0x560e58[_0x4040('0x45')](function(_0x318bf7){_0x824ccf[_0x4040('0x46')](checkTranscribeJob(_0x318bf7,_0x2f86bc,_0x12ec61));});return BPromise[_0x4040('0x47')](_0x824ccf);})[_0x4040('0x3a')](function(_0x37b352){if(_0x37b352){if(!_0x37b352['name']||_0x37b352[_0x4040('0x3b')]!=='SequelizeValidationError'){logger['error'](util[_0x4040('0x48')](_0x37b352,{'showHidden':![],'depth':null}));}}});}exports[_0x4040('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};