Built motion from commit e1760111.|2.6.18
[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 _0x37e9=['IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','catch','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','format','[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','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x37e9,0x1e7));var _0x937e=function(_0x1c2029,_0x17f1e5){_0x1c2029=_0x1c2029-0x0;var _0x155e57=_0x37e9[_0x1c2029];return _0x155e57;};var _=require(_0x937e('0x0'));var AWS=require(_0x937e('0x1'));var rp=require(_0x937e('0x2'));var util=require(_0x937e('0x3'));var BPromise=require(_0x937e('0x4'));var db=require(_0x937e('0x5'))['db'];var logger=require(_0x937e('0x6'))('transcribe');function getTranscriptionJob(_0x38874a,_0x4633a3,_0x2d1375,_0x17078d){return new Promise(function(_0x15051b,_0x19ab09){var _0x4dae1c=new AWS[(_0x937e('0x7'))]({'accessKeyId':_0x4633a3,'secretAccessKey':_0x38874a,'region':_0x2d1375});_0x4dae1c[_0x937e('0x8')]({'TranscriptionJobName':_0x17078d},function(_0x16d2d7,_0x21d9ad){if(_0x16d2d7){return _0x19ab09(_0x16d2d7);}else{return _0x15051b(_0x21d9ad);}});});}function sentiment(_0x3bd47e,_0x226133,_0x541b17,_0x4b9059,_0x359f09){return new Promise(function(_0x1c3a8c,_0x32f562){var _0x2f71ed=new AWS[(_0x937e('0x9'))]({'accessKeyId':_0x226133,'secretAccessKey':_0x3bd47e,'region':_0x541b17});_0x2f71ed[_0x937e('0xa')]({'Text':_0x4b9059,'LanguageCode':_0x359f09['substring'](0x0,0x2)},function(_0x50b927,_0x590a21){if(_0x50b927){return _0x32f562(_0x50b927);}else{return _0x1c3a8c(_0x590a21);}});});}function checkTranscribeJob(_0x30efa1,_0x284f27,_0x49a1b6){var _0x216c24;return new BPromise(function(_0x31f851,_0x99e9bc){logger[_0x937e('0xb')](util['format'](_0x937e('0xc'),_0x30efa1['id'],_0x30efa1[_0x937e('0xd')]));return getTranscriptionJob(_0x49a1b6[_0x937e('0xe')],_0x49a1b6[_0x937e('0xf')],_0x284f27['transcribeRegion'],_0x30efa1[_0x937e('0xd')])[_0x937e('0x10')](function(_0x4499a2){logger[_0x937e('0xb')](util[_0x937e('0x11')](_0x937e('0x12'),_0x30efa1['id'],_0x30efa1[_0x937e('0xd')],_0x4499a2[_0x937e('0x13')]['TranscriptionJobStatus']));if(!_0x30efa1['fileText']){switch(_0x4499a2[_0x937e('0x13')][_0x937e('0x14')]){case _0x937e('0x15'):var _0x2c0420={'transcribeStatus':_0x4499a2[_0x937e('0x13')][_0x937e('0x14')],'fileUri':_0x4499a2[_0x937e('0x13')][_0x937e('0x16')][_0x937e('0x17')]};logger['info'](util[_0x937e('0x11')](_0x937e('0x18'),_0x30efa1['id']));return rp({'uri':_0x4499a2['TranscriptionJob']['Transcript'][_0x937e('0x17')],'json':!![]})[_0x937e('0x10')](function(_0x5706b1){logger[_0x937e('0xb')](util['format'](_0x937e('0x19'),_0x30efa1['id']));if(_0x5706b1&&_0x5706b1[_0x937e('0x1a')]&&_0x5706b1[_0x937e('0x1a')][_0x937e('0x1b')]&&_0x5706b1[_0x937e('0x1a')]['transcripts'][_0x937e('0x1c')]){_0x2c0420[_0x937e('0x1d')]='';for(var _0x35d24a=0x0;_0x35d24a<_0x5706b1[_0x937e('0x1a')][_0x937e('0x1b')][_0x937e('0x1c')];_0x35d24a++){_0x2c0420['fileText']+=_0x5706b1[_0x937e('0x1a')][_0x937e('0x1b')][_0x35d24a][_0x937e('0x1e')]+'';}}return _0x30efa1[_0x937e('0x1f')](_0x2c0420);})['then'](function(){logger[_0x937e('0xb')](util[_0x937e('0x11')](_0x937e('0x20'),_0x30efa1['id']));if(!_0x30efa1[_0x937e('0x21')]){throw new db[(_0x937e('0x22'))]['ValidationError'](_0x937e('0x23'));}if(!_0x284f27[_0x937e('0x24')]||!_0x284f27['sentimentAccountId']||!_0x284f27[_0x937e('0x25')]||!_0x284f27[_0x937e('0x26')]||!_0x284f27[_0x937e('0x27')]){throw new db['Sequelize'][(_0x937e('0x28'))](_0x937e('0x29'));}if(!_0x2c0420[_0x937e('0x1d')]){throw new Error(_0x937e('0x2a'));}if(_0x284f27[_0x937e('0x2b')]===_0x49a1b6['id']){return _0x49a1b6;}else{return db[_0x937e('0x2c')][_0x937e('0x2d')]({'where':{'id':_settings[_0x937e('0x2b')]}});}})[_0x937e('0x10')](function(_0x3b8a9a){if(!_0x3b8a9a){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))](_0x937e('0x2e'));}if(!_0x3b8a9a[_0x937e('0xe')]||!_0x3b8a9a[_0x937e('0xf')]){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))](_0x937e('0x2f'));}_0x216c24=_0x3b8a9a;logger[_0x937e('0xb')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x30efa1['id']));return sentiment(_0x216c24[_0x937e('0xe')],_0x216c24[_0x937e('0xf')],_0x284f27['sentimentRegion'],_0x2c0420['fileText'],_0x284f27[_0x937e('0x26')]);})[_0x937e('0x10')](function(_0x434611){logger[_0x937e('0xb')](util[_0x937e('0x11')](_0x937e('0x30'),_0x30efa1['id']));return _0x30efa1['update']({'sentiment':_0x434611[_0x937e('0x31')],'sPositive':_0x434611[_0x937e('0x32')]['Positive'],'sNegative':_0x434611[_0x937e('0x32')][_0x937e('0x33')],'sMixed':_0x434611[_0x937e('0x32')][_0x937e('0x34')],'sNeutral':_0x434611[_0x937e('0x32')][_0x937e('0x35')]});})['then'](function(){logger[_0x937e('0xb')](util[_0x937e('0x11')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x30efa1['id']));_0x31f851();});case _0x937e('0x36'):return _0x30efa1[_0x937e('0x1f')]({'transcribeStatus':_0x937e('0x36'),'failureReason':_0x4499a2[_0x937e('0x13')][_0x937e('0x37')]})[_0x937e('0x10')](function(){logger[_0x937e('0xb')](util['format'](_0x937e('0x20'),_0x30efa1['id']));_0x31f851();});default:logger[_0x937e('0xb')](util[_0x937e('0x11')](_0x937e('0x38'),_0x30efa1['id']));break;}}else{return BPromise[_0x937e('0x39')]()[_0x937e('0x10')](function(){if(!_0x30efa1['tempSentiment']){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x284f27[_0x937e('0x24')]||!_0x284f27['sentimentAccountId']||!_0x284f27[_0x937e('0x25')]||!_0x284f27[_0x937e('0x26')]||!_0x284f27['bucket']){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x30efa1['fileText']){throw new Error(_0x937e('0x2a'));}if(_0x284f27[_0x937e('0x2b')]===_0x49a1b6['id']){return _0x49a1b6;}else{return db[_0x937e('0x2c')]['findOne']({'where':{'id':_settings[_0x937e('0x2b')]}});}})[_0x937e('0x10')](function(_0x42af99){if(!_0x42af99){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))](_0x937e('0x2e'));}if(!_0x42af99[_0x937e('0xe')]||!_0x42af99[_0x937e('0xf')]){throw new db['Sequelize'][(_0x937e('0x28'))](_0x937e('0x2f'));}_0x216c24=_0x42af99;logger[_0x937e('0xb')](util[_0x937e('0x11')](_0x937e('0x3a'),_0x30efa1['id']));return sentiment(_0x216c24[_0x937e('0xe')],_0x216c24['data2'],_0x284f27[_0x937e('0x25')],_0x30efa1[_0x937e('0x1d')],_0x284f27['language']);})[_0x937e('0x10')](function(_0x19439a){logger[_0x937e('0xb')](util[_0x937e('0x11')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x30efa1['id']));return _0x30efa1[_0x937e('0x1f')]({'sentiment':_0x19439a[_0x937e('0x31')],'sPositive':_0x19439a[_0x937e('0x32')]['Positive'],'sNegative':_0x19439a[_0x937e('0x32')]['Negative'],'sMixed':_0x19439a[_0x937e('0x32')][_0x937e('0x34')],'sNeutral':_0x19439a['SentimentScore'][_0x937e('0x35')],'transcribeStatus':_0x937e('0x15')});})[_0x937e('0x10')](function(){logger[_0x937e('0xb')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x30efa1['id']));_0x31f851();});}})['catch'](function(_0x522a14){if(_0x522a14){if(!_0x522a14[_0x937e('0x3b')]||_0x522a14[_0x937e('0x3b')]!==_0x937e('0x3c')){logger[_0x937e('0x3d')](util['format'](_0x937e('0x3e'),_0x30efa1['id']),util[_0x937e('0x3f')](_0x522a14,{'showHidden':![],'depth':null}));}}_0x31f851();});});}function checkTranscribe(){var _0x34023a;var _0xc2e56c;var _0x7d43eb;return db[_0x937e('0x40')][_0x937e('0x41')]({'where':{'transcribeStatus':_0x937e('0x42')}})[_0x937e('0x10')](function(_0x227da1){if(!_0x227da1||!_0x227da1['length']){throw new db[(_0x937e('0x22'))]['ValidationError'](_0x937e('0x43'));}_0x34023a=_0x227da1;return db[_0x937e('0x44')][_0x937e('0x2d')]({'where':{'id':0x1}});})[_0x937e('0x10')](function(_0x516500){if(!_0x516500){throw new db['Sequelize']['ValidationError'](_0x937e('0x45'));}_0xc2e56c=_0x516500;if(!_0xc2e56c[_0x937e('0x46')]||!_0xc2e56c[_0x937e('0x47')]||!_0xc2e56c[_0x937e('0x48')]||!_0xc2e56c[_0x937e('0x26')]||!_0xc2e56c[_0x937e('0x27')]){throw new db[(_0x937e('0x22'))][(_0x937e('0x28'))](_0x937e('0x49'));}return db[_0x937e('0x2c')][_0x937e('0x2d')]({'where':{'id':_0xc2e56c[_0x937e('0x47')]}});})['then'](function(_0x5183ee){if(!_0x5183ee){throw new db[(_0x937e('0x22'))]['ValidationError'](_0x937e('0x2e'));}if(!_0x5183ee[_0x937e('0xe')]||!_0x5183ee[_0x937e('0xf')]){throw new db['Sequelize'][(_0x937e('0x28'))]('Cloud\x20Provider\x20not\x20configured');}_0x7d43eb=_0x5183ee;var _0x16cdcd=[];_0x34023a[_0x937e('0x4a')](function(_0x4c9a19){_0x16cdcd[_0x937e('0x4b')](checkTranscribeJob(_0x4c9a19,_0xc2e56c,_0x7d43eb));});return BPromise[_0x937e('0x4c')](_0x16cdcd);})[_0x937e('0x4d')](function(_0x21c248){if(_0x21c248){if(!_0x21c248[_0x937e('0x3b')]||_0x21c248[_0x937e('0x3b')]!=='SequelizeValidationError'){logger[_0x937e('0x3d')](util['inspect'](_0x21c248,{'showHidden':![],'depth':null}));}}});}exports[_0x937e('0x4e')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};