Built motion from commit 85328c08.|2.5.50
[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 _0xfe9d=['request-promise','util','bluebird','../../config/logger','TranscribeService','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeName','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','COMPLETED','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','update','then','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','bucket','Mixed','catch','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','transcribe','Transcribe\x20not\x20configured','forEach','push','all','name','lodash','aws-sdk'];(function(_0x2fd002,_0x3b38db){var _0x3458d2=function(_0x1662a9){while(--_0x1662a9){_0x2fd002['push'](_0x2fd002['shift']());}};_0x3458d2(++_0x3b38db);}(_0xfe9d,0x10e));var _0xdfe9=function(_0x2ece0a,_0xfe0f93){_0x2ece0a=_0x2ece0a-0x0;var _0x303d66=_0xfe9d[_0x2ece0a];return _0x303d66;};var _=require(_0xdfe9('0x0'));var AWS=require(_0xdfe9('0x1'));var rp=require(_0xdfe9('0x2'));var util=require(_0xdfe9('0x3'));var BPromise=require(_0xdfe9('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0xdfe9('0x5'))('transcribe');function getTranscriptionJob(_0x1144b0,_0x1256ab,_0x2e5fd8,_0x6dd8ce){return new Promise(function(_0xeb5238,_0x582904){var _0x523ecf=new AWS[(_0xdfe9('0x6'))]({'accessKeyId':_0x1256ab,'secretAccessKey':_0x1144b0,'region':_0x2e5fd8});_0x523ecf['getTranscriptionJob']({'TranscriptionJobName':_0x6dd8ce},function(_0x1bc0ea,_0x46d8eb){if(_0x1bc0ea){return _0x582904(_0x1bc0ea);}else{return _0xeb5238(_0x46d8eb);}});});}function sentiment(_0x49db82,_0x34e42f,_0x36f0c6,_0x13b1c5,_0x2580d7){return new Promise(function(_0x5e2c96,_0x2a07e1){var _0x1ab372=new AWS[(_0xdfe9('0x7'))]({'accessKeyId':_0x34e42f,'secretAccessKey':_0x49db82,'region':_0x36f0c6});_0x1ab372[_0xdfe9('0x8')]({'Text':_0x13b1c5,'LanguageCode':_0x2580d7[_0xdfe9('0x9')](0x0,0x2)},function(_0x13a5de,_0x139425){if(_0x13a5de){return _0x2a07e1(_0x13a5de);}else{return _0x5e2c96(_0x139425);}});});}function checkTranscribeJob(_0x13383b,_0x379f5d,_0x351cc8){var _0x5560ab;return new BPromise(function(_0xed269b,_0x4fffb1){logger['info'](util[_0xdfe9('0xa')](_0xdfe9('0xb'),_0x13383b['id'],_0x13383b['transcribeName']));return getTranscriptionJob(_0x351cc8[_0xdfe9('0xc')],_0x351cc8[_0xdfe9('0xd')],_0x379f5d['transcribeRegion'],_0x13383b[_0xdfe9('0xe')])['then'](function(_0x2d151b){logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')](_0xdfe9('0x10'),_0x13383b['id'],_0x13383b[_0xdfe9('0xe')],_0x2d151b[_0xdfe9('0x11')]['TranscriptionJobStatus']));if(!_0x13383b['fileText']){switch(_0x2d151b[_0xdfe9('0x11')]['TranscriptionJobStatus']){case _0xdfe9('0x12'):var _0x3d27d5={'transcribeStatus':_0x2d151b[_0xdfe9('0x11')]['TranscriptionJobStatus'],'fileUri':_0x2d151b['TranscriptionJob'][_0xdfe9('0x13')]['TranscriptFileUri']};logger['info'](util[_0xdfe9('0xa')]('[RECORDING:%d]\x20Get\x20transcript',_0x13383b['id']));return rp({'uri':_0x2d151b[_0xdfe9('0x11')][_0xdfe9('0x13')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x412a25){logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')](_0xdfe9('0x14'),_0x13383b['id']));if(_0x412a25&&_0x412a25[_0xdfe9('0x15')]&&_0x412a25[_0xdfe9('0x15')][_0xdfe9('0x16')]&&_0x412a25[_0xdfe9('0x15')][_0xdfe9('0x16')][_0xdfe9('0x17')]){_0x3d27d5[_0xdfe9('0x18')]='';for(var _0x4ae939=0x0;_0x4ae939<_0x412a25['results'][_0xdfe9('0x16')][_0xdfe9('0x17')];_0x4ae939++){_0x3d27d5['fileText']+=_0x412a25[_0xdfe9('0x15')]['transcripts'][_0x4ae939]['transcript']+'';}}return _0x13383b[_0xdfe9('0x19')](_0x3d27d5);})[_0xdfe9('0x1a')](function(){logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x13383b['id']));if(!_0x13383b['tempSentiment']){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x1d'));}if(!_0x379f5d[_0xdfe9('0x1e')]||!_0x379f5d['sentimentAccountId']||!_0x379f5d[_0xdfe9('0x1f')]||!_0x379f5d[_0xdfe9('0x20')]||!_0x379f5d['bucket']){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x21'));}if(!_0x3d27d5['fileText']){throw new Error(_0xdfe9('0x22'));}if(_0x379f5d[_0xdfe9('0x23')]===_0x351cc8['id']){return _0x351cc8;}else{return db[_0xdfe9('0x24')][_0xdfe9('0x25')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xdfe9('0x1a')](function(_0x3d655f){if(!_0x3d655f){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3d655f[_0xdfe9('0xc')]||!_0x3d655f[_0xdfe9('0xd')]){throw new db['Sequelize'][(_0xdfe9('0x1c'))](_0xdfe9('0x26'));}_0x5560ab=_0x3d655f;logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')](_0xdfe9('0x27'),_0x13383b['id']));return sentiment(_0x5560ab[_0xdfe9('0xc')],_0x5560ab[_0xdfe9('0xd')],_0x379f5d[_0xdfe9('0x1f')],_0x3d27d5[_0xdfe9('0x18')],_0x379f5d[_0xdfe9('0x20')]);})[_0xdfe9('0x1a')](function(_0x3ce9d7){logger['info'](util['format'](_0xdfe9('0x28'),_0x13383b['id']));return _0x13383b[_0xdfe9('0x19')]({'sentiment':_0x3ce9d7[_0xdfe9('0x29')],'sPositive':_0x3ce9d7[_0xdfe9('0x2a')][_0xdfe9('0x2b')],'sNegative':_0x3ce9d7[_0xdfe9('0x2a')][_0xdfe9('0x2c')],'sMixed':_0x3ce9d7[_0xdfe9('0x2a')]['Mixed'],'sNeutral':_0x3ce9d7[_0xdfe9('0x2a')][_0xdfe9('0x2d')]});})[_0xdfe9('0x1a')](function(){logger['info'](util['format'](_0xdfe9('0x2e'),_0x13383b['id']));_0xed269b();});case'FAILED':return _0x13383b[_0xdfe9('0x19')]({'transcribeStatus':_0xdfe9('0x2f'),'failureReason':_0x2d151b['TranscriptionJob'][_0xdfe9('0x30')]})[_0xdfe9('0x1a')](function(){logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')](_0xdfe9('0x2e'),_0x13383b['id']));_0xed269b();});default:logger[_0xdfe9('0xf')](util['format'](_0xdfe9('0x31'),_0x13383b['id']));break;}}else{return BPromise[_0xdfe9('0x32')]()['then'](function(){if(!_0x13383b[_0xdfe9('0x33')]){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x1d'));}if(!_0x379f5d[_0xdfe9('0x1e')]||!_0x379f5d[_0xdfe9('0x23')]||!_0x379f5d[_0xdfe9('0x1f')]||!_0x379f5d[_0xdfe9('0x20')]||!_0x379f5d[_0xdfe9('0x34')]){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x21'));}if(!_0x13383b[_0xdfe9('0x18')]){throw new Error(_0xdfe9('0x22'));}if(_0x379f5d[_0xdfe9('0x23')]===_0x351cc8['id']){return _0x351cc8;}else{return db[_0xdfe9('0x24')]['findOne']({'where':{'id':_settings[_0xdfe9('0x23')]}});}})[_0xdfe9('0x1a')](function(_0x316961){if(!_0x316961){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x316961[_0xdfe9('0xc')]||!_0x316961['data2']){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x26'));}_0x5560ab=_0x316961;logger['info'](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x13383b['id']));return sentiment(_0x5560ab[_0xdfe9('0xc')],_0x5560ab[_0xdfe9('0xd')],_0x379f5d[_0xdfe9('0x1f')],_0x13383b[_0xdfe9('0x18')],_0x379f5d['language']);})[_0xdfe9('0x1a')](function(_0x1d02f2){logger[_0xdfe9('0xf')](util['format'](_0xdfe9('0x28'),_0x13383b['id']));return _0x13383b[_0xdfe9('0x19')]({'sentiment':_0x1d02f2[_0xdfe9('0x29')],'sPositive':_0x1d02f2[_0xdfe9('0x2a')][_0xdfe9('0x2b')],'sNegative':_0x1d02f2[_0xdfe9('0x2a')][_0xdfe9('0x2c')],'sMixed':_0x1d02f2['SentimentScore'][_0xdfe9('0x35')],'sNeutral':_0x1d02f2[_0xdfe9('0x2a')][_0xdfe9('0x2d')],'transcribeStatus':_0xdfe9('0x12')});})['then'](function(){logger[_0xdfe9('0xf')](util[_0xdfe9('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x13383b['id']));_0xed269b();});}})[_0xdfe9('0x36')](function(_0x537186){if(_0x537186){if(!_0x537186['name']||_0x537186['name']!==_0xdfe9('0x37')){logger[_0xdfe9('0x38')](util[_0xdfe9('0xa')](_0xdfe9('0x39'),_0x13383b['id']),util[_0xdfe9('0x3a')](_0x537186,{'showHidden':![],'depth':null}));}}_0xed269b();});});}function checkTranscribe(){var _0x3990ea;var _0x5c6147;var _0x1f7cfc;return db[_0xdfe9('0x3b')][_0xdfe9('0x3c')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xdfe9('0x1a')](function(_0x310c97){if(!_0x310c97||!_0x310c97[_0xdfe9('0x17')]){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x3d'));}_0x3990ea=_0x310c97;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0xdfe9('0x1a')](function(_0x3d3eb7){if(!_0x3d3eb7){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))]('Settings\x20not\x20available');}_0x5c6147=_0x3d3eb7;if(!_0x5c6147[_0xdfe9('0x3e')]||!_0x5c6147['transcribeAccountId']||!_0x5c6147['transcribeRegion']||!_0x5c6147[_0xdfe9('0x20')]||!_0x5c6147[_0xdfe9('0x34')]){throw new db['Sequelize']['ValidationError'](_0xdfe9('0x3f'));}return db[_0xdfe9('0x24')][_0xdfe9('0x25')]({'where':{'id':_0x5c6147['transcribeAccountId']}});})[_0xdfe9('0x1a')](function(_0x48c049){if(!_0x48c049){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x48c049[_0xdfe9('0xc')]||!_0x48c049['data2']){throw new db[(_0xdfe9('0x1b'))][(_0xdfe9('0x1c'))](_0xdfe9('0x26'));}_0x1f7cfc=_0x48c049;var _0x4321e1=[];_0x3990ea[_0xdfe9('0x40')](function(_0x1398b4){_0x4321e1[_0xdfe9('0x41')](checkTranscribeJob(_0x1398b4,_0x5c6147,_0x1f7cfc));});return BPromise[_0xdfe9('0x42')](_0x4321e1);})[_0xdfe9('0x36')](function(_0x4c35a6){if(_0x4c35a6){if(!_0x4c35a6[_0xdfe9('0x43')]||_0x4c35a6[_0xdfe9('0x43')]!==_0xdfe9('0x37')){logger[_0xdfe9('0x38')](util[_0xdfe9('0x3a')](_0x4c35a6,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};