ca20e7cff4895ad5a0a3af6f7952255b82df2ac4
[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 _0xedcb=['TranscriptionJobStatus','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','ValidationError','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','COMPLETED','catch','SequelizeValidationError','error','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','all','name','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','transcribeRegion','then'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xedcb,0xcd));var _0xbedc=function(_0x53b3bb,_0x38dc9e){_0x53b3bb=_0x53b3bb-0x0;var _0x276440=_0xedcb[_0x53b3bb];return _0x276440;};var _=require(_0xbedc('0x0'));var AWS=require(_0xbedc('0x1'));var rp=require(_0xbedc('0x2'));var util=require(_0xbedc('0x3'));var BPromise=require(_0xbedc('0x4'));var db=require(_0xbedc('0x5'))['db'];var logger=require(_0xbedc('0x6'))(_0xbedc('0x7'));function getTranscriptionJob(_0x850926,_0xe70ea8,_0x17643e,_0x142897){return new Promise(function(_0xd28c66,_0x44f4f2){var _0x20ff26=new AWS['TranscribeService']({'accessKeyId':_0xe70ea8,'secretAccessKey':_0x850926,'region':_0x17643e});_0x20ff26['getTranscriptionJob']({'TranscriptionJobName':_0x142897},function(_0x5430ae,_0x377b0b){if(_0x5430ae){return _0x44f4f2(_0x5430ae);}else{return _0xd28c66(_0x377b0b);}});});}function sentiment(_0x3c9fdb,_0x3bd814,_0x50ccd4,_0x3123b3,_0x16a285){return new Promise(function(_0x2be6af,_0x5e0c3c){var _0x3cbe34=new AWS[(_0xbedc('0x8'))]({'accessKeyId':_0x3bd814,'secretAccessKey':_0x3c9fdb,'region':_0x50ccd4});_0x3cbe34[_0xbedc('0x9')]({'Text':_0x3123b3,'LanguageCode':_0x16a285[_0xbedc('0xa')](0x0,0x2)},function(_0x1e3e28,_0x47a210){if(_0x1e3e28){return _0x5e0c3c(_0x1e3e28);}else{return _0x2be6af(_0x47a210);}});});}function checkTranscribeJob(_0x6d7996,_0x3040ea,_0xe17d01){var _0x8372af;return new BPromise(function(_0x449a34,_0x21ad19){logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0xd'),_0x6d7996['id'],_0x6d7996[_0xbedc('0xe')]));return getTranscriptionJob(_0xe17d01['data1'],_0xe17d01['data2'],_0x3040ea[_0xbedc('0xf')],_0x6d7996['transcribeName'])[_0xbedc('0x10')](function(_0x3a5850){logger[_0xbedc('0xb')](util[_0xbedc('0xc')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x6d7996['id'],_0x6d7996[_0xbedc('0xe')],_0x3a5850['TranscriptionJob'][_0xbedc('0x11')]));if(!_0x6d7996['fileText']){switch(_0x3a5850[_0xbedc('0x12')][_0xbedc('0x11')]){case'COMPLETED':var _0x2dd031={'transcribeStatus':_0x3a5850[_0xbedc('0x12')][_0xbedc('0x11')],'fileUri':_0x3a5850[_0xbedc('0x12')][_0xbedc('0x13')][_0xbedc('0x14')]};logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0x15'),_0x6d7996['id']));return rp({'uri':_0x3a5850[_0xbedc('0x12')][_0xbedc('0x13')][_0xbedc('0x14')],'json':!![]})[_0xbedc('0x10')](function(_0x321880){logger['info'](util[_0xbedc('0xc')](_0xbedc('0x16'),_0x6d7996['id']));if(_0x321880&&_0x321880['results']&&_0x321880[_0xbedc('0x17')][_0xbedc('0x18')]&&_0x321880[_0xbedc('0x17')][_0xbedc('0x18')][_0xbedc('0x19')]){_0x2dd031[_0xbedc('0x1a')]='';for(var _0x569374=0x0;_0x569374<_0x321880[_0xbedc('0x17')][_0xbedc('0x18')]['length'];_0x569374++){_0x2dd031['fileText']+=_0x321880['results']['transcripts'][_0x569374][_0xbedc('0x1b')]+'';}}return _0x6d7996[_0xbedc('0x1c')](_0x2dd031);})[_0xbedc('0x10')](function(){logger[_0xbedc('0xb')](util[_0xbedc('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x6d7996['id']));if(!_0x6d7996['tempSentiment']){throw new db['Sequelize']['ValidationError'](_0xbedc('0x1d'));}if(!_0x3040ea[_0xbedc('0x1e')]||!_0x3040ea[_0xbedc('0x1f')]||!_0x3040ea['sentimentRegion']||!_0x3040ea[_0xbedc('0x20')]||!_0x3040ea[_0xbedc('0x21')]){throw new db[(_0xbedc('0x22'))]['ValidationError'](_0xbedc('0x23'));}if(!_0x2dd031[_0xbedc('0x1a')]){throw new Error(_0xbedc('0x24'));}if(_0x3040ea[_0xbedc('0x1f')]===_0xe17d01['id']){return _0xe17d01;}else{return db[_0xbedc('0x25')][_0xbedc('0x26')]({'where':{'id':_settings[_0xbedc('0x1f')]}});}})[_0xbedc('0x10')](function(_0x5c3c51){if(!_0x5c3c51){throw new db[(_0xbedc('0x22'))][(_0xbedc('0x27'))](_0xbedc('0x28'));}if(!_0x5c3c51[_0xbedc('0x29')]||!_0x5c3c51[_0xbedc('0x2a')]){throw new db[(_0xbedc('0x22'))]['ValidationError'](_0xbedc('0x2b'));}_0x8372af=_0x5c3c51;logger[_0xbedc('0xb')](util[_0xbedc('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x6d7996['id']));return sentiment(_0x8372af[_0xbedc('0x29')],_0x8372af[_0xbedc('0x2a')],_0x3040ea[_0xbedc('0x2c')],_0x2dd031[_0xbedc('0x1a')],_0x3040ea['language']);})[_0xbedc('0x10')](function(_0x59eed3){logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0x2d'),_0x6d7996['id']));return _0x6d7996['update']({'sentiment':_0x59eed3[_0xbedc('0x2e')],'sPositive':_0x59eed3[_0xbedc('0x2f')][_0xbedc('0x30')],'sNegative':_0x59eed3[_0xbedc('0x2f')][_0xbedc('0x31')],'sMixed':_0x59eed3[_0xbedc('0x2f')][_0xbedc('0x32')],'sNeutral':_0x59eed3['SentimentScore'][_0xbedc('0x33')]});})[_0xbedc('0x10')](function(){logger[_0xbedc('0xb')](util[_0xbedc('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x6d7996['id']));_0x449a34();});case'FAILED':return _0x6d7996[_0xbedc('0x1c')]({'transcribeStatus':_0xbedc('0x34'),'failureReason':_0x3a5850[_0xbedc('0x12')][_0xbedc('0x35')]})[_0xbedc('0x10')](function(){logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0x36'),_0x6d7996['id']));_0x449a34();});default:logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0x37'),_0x6d7996['id']));break;}}else{return BPromise[_0xbedc('0x38')]()['then'](function(){if(!_0x6d7996[_0xbedc('0x39')]){throw new db[(_0xbedc('0x22'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x3040ea[_0xbedc('0x1e')]||!_0x3040ea[_0xbedc('0x1f')]||!_0x3040ea['sentimentRegion']||!_0x3040ea[_0xbedc('0x20')]||!_0x3040ea[_0xbedc('0x21')]){throw new db[(_0xbedc('0x22'))][(_0xbedc('0x27'))](_0xbedc('0x23'));}if(!_0x6d7996[_0xbedc('0x1a')]){throw new Error(_0xbedc('0x24'));}if(_0x3040ea[_0xbedc('0x1f')]===_0xe17d01['id']){return _0xe17d01;}else{return db[_0xbedc('0x25')][_0xbedc('0x26')]({'where':{'id':_settings[_0xbedc('0x1f')]}});}})[_0xbedc('0x10')](function(_0x277c4d){if(!_0x277c4d){throw new db[(_0xbedc('0x22'))][(_0xbedc('0x27'))](_0xbedc('0x28'));}if(!_0x277c4d[_0xbedc('0x29')]||!_0x277c4d[_0xbedc('0x2a')]){throw new db[(_0xbedc('0x22'))]['ValidationError'](_0xbedc('0x2b'));}_0x8372af=_0x277c4d;logger[_0xbedc('0xb')](util[_0xbedc('0xc')](_0xbedc('0x3a'),_0x6d7996['id']));return sentiment(_0x8372af[_0xbedc('0x29')],_0x8372af[_0xbedc('0x2a')],_0x3040ea[_0xbedc('0x2c')],_0x6d7996[_0xbedc('0x1a')],_0x3040ea[_0xbedc('0x20')]);})[_0xbedc('0x10')](function(_0x190399){logger[_0xbedc('0xb')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x6d7996['id']));return _0x6d7996[_0xbedc('0x1c')]({'sentiment':_0x190399['Sentiment'],'sPositive':_0x190399['SentimentScore'][_0xbedc('0x30')],'sNegative':_0x190399[_0xbedc('0x2f')][_0xbedc('0x31')],'sMixed':_0x190399[_0xbedc('0x2f')][_0xbedc('0x32')],'sNeutral':_0x190399[_0xbedc('0x2f')]['Neutral'],'transcribeStatus':_0xbedc('0x3b')});})[_0xbedc('0x10')](function(){logger[_0xbedc('0xb')](util['format'](_0xbedc('0x36'),_0x6d7996['id']));_0x449a34();});}})[_0xbedc('0x3c')](function(_0x378054){if(_0x378054){if(!_0x378054['name']||_0x378054['name']!==_0xbedc('0x3d')){logger[_0xbedc('0x3e')](util[_0xbedc('0xc')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x6d7996['id']),util[_0xbedc('0x3f')](_0x378054,{'showHidden':![],'depth':null}));}}_0x449a34();});});}function checkTranscribe(){var _0x80ef29;var _0x12b1e6;var _0x59082a;return db[_0xbedc('0x40')][_0xbedc('0x41')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xbedc('0x10')](function(_0x59cac9){if(!_0x59cac9||!_0x59cac9[_0xbedc('0x19')]){throw new db[(_0xbedc('0x22'))][(_0xbedc('0x27'))](_0xbedc('0x42'));}_0x80ef29=_0x59cac9;return db[_0xbedc('0x43')][_0xbedc('0x26')]({'where':{'id':0x1}});})[_0xbedc('0x10')](function(_0xc00f42){if(!_0xc00f42){throw new db['Sequelize'][(_0xbedc('0x27'))](_0xbedc('0x44'));}_0x12b1e6=_0xc00f42;if(!_0x12b1e6[_0xbedc('0x7')]||!_0x12b1e6[_0xbedc('0x45')]||!_0x12b1e6[_0xbedc('0xf')]||!_0x12b1e6[_0xbedc('0x20')]||!_0x12b1e6['bucket']){throw new db[(_0xbedc('0x22'))]['ValidationError'](_0xbedc('0x46'));}return db[_0xbedc('0x25')][_0xbedc('0x26')]({'where':{'id':_0x12b1e6[_0xbedc('0x45')]}});})[_0xbedc('0x10')](function(_0x5c6e7b){if(!_0x5c6e7b){throw new db[(_0xbedc('0x22'))][(_0xbedc('0x27'))](_0xbedc('0x28'));}if(!_0x5c6e7b['data1']||!_0x5c6e7b['data2']){throw new db['Sequelize'][(_0xbedc('0x27'))]('Cloud\x20Provider\x20not\x20configured');}_0x59082a=_0x5c6e7b;var _0x477eb8=[];_0x80ef29['forEach'](function(_0xd80516){_0x477eb8[_0xbedc('0x47')](checkTranscribeJob(_0xd80516,_0x12b1e6,_0x59082a));});return BPromise[_0xbedc('0x48')](_0x477eb8);})['catch'](function(_0x2fd833){if(_0x2fd833){if(!_0x2fd833[_0xbedc('0x49')]||_0x2fd833['name']!=='SequelizeValidationError'){logger[_0xbedc('0x3e')](util[_0xbedc('0x3f')](_0x2fd833,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};