a9fff156a2ea00781aee2f527a1d674becf0173f
[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 _0xe9ad=['TranscriptionJob','fileText','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','sentiment','findOne','update','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','bucket','Transcribe\x20not\x20configured','push','all','error','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xe9ad,0x82));var _0xde9a=function(_0x48b5e0,_0xb3826){_0x48b5e0=_0x48b5e0-0x0;var _0x4287ea=_0xe9ad[_0x48b5e0];return _0x4287ea;};var _=require(_0xde9a('0x0'));var AWS=require(_0xde9a('0x1'));var rp=require(_0xde9a('0x2'));var util=require(_0xde9a('0x3'));var BPromise=require(_0xde9a('0x4'));var db=require(_0xde9a('0x5'))['db'];var logger=require(_0xde9a('0x6'))('transcribe');function getTranscriptionJob(_0x30a58a,_0x28f94c,_0x1a17f6,_0x3908cd){return new Promise(function(_0x5290c5,_0x27b380){var _0x2bb666=new AWS[(_0xde9a('0x7'))]({'accessKeyId':_0x28f94c,'secretAccessKey':_0x30a58a,'region':_0x1a17f6});_0x2bb666['getTranscriptionJob']({'TranscriptionJobName':_0x3908cd},function(_0x45d4a7,_0x17f89b){if(_0x45d4a7){return _0x27b380(_0x45d4a7);}else{return _0x5290c5(_0x17f89b);}});});}function sentiment(_0x30e166,_0x1fac02,_0x297975,_0x34cd1a,_0x3c34ce){return new Promise(function(_0x2eb2ae,_0x2fe8b2){var _0x5863e0=new AWS[(_0xde9a('0x8'))]({'accessKeyId':_0x1fac02,'secretAccessKey':_0x30e166,'region':_0x297975});_0x5863e0[_0xde9a('0x9')]({'Text':_0x34cd1a,'LanguageCode':_0x3c34ce[_0xde9a('0xa')](0x0,0x2)},function(_0xad9b52,_0x34bbfd){if(_0xad9b52){return _0x2fe8b2(_0xad9b52);}else{return _0x2eb2ae(_0x34bbfd);}});});}function checkTranscribeJob(_0x2f0859,_0x1cb3bd,_0x3a9b1a){var _0xd81956;return new BPromise(function(_0x543346,_0x241bfa){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0xd'),_0x2f0859['id'],_0x2f0859[_0xde9a('0xe')]));return getTranscriptionJob(_0x3a9b1a[_0xde9a('0xf')],_0x3a9b1a[_0xde9a('0x10')],_0x1cb3bd[_0xde9a('0x11')],_0x2f0859[_0xde9a('0xe')])[_0xde9a('0x12')](function(_0x50ffb8){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x13'),_0x2f0859['id'],_0x2f0859[_0xde9a('0xe')],_0x50ffb8[_0xde9a('0x14')]['TranscriptionJobStatus']));if(!_0x2f0859[_0xde9a('0x15')]){switch(_0x50ffb8[_0xde9a('0x14')][_0xde9a('0x16')]){case'COMPLETED':var _0x2e96ee={'transcribeStatus':_0x50ffb8['TranscriptionJob'][_0xde9a('0x16')],'fileUri':_0x50ffb8['TranscriptionJob'][_0xde9a('0x17')][_0xde9a('0x18')]};logger[_0xde9a('0xb')](util['format'](_0xde9a('0x19'),_0x2f0859['id']));return rp({'uri':_0x50ffb8[_0xde9a('0x14')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0xde9a('0x12')](function(_0x416b36){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x1a'),_0x2f0859['id']));if(_0x416b36&&_0x416b36[_0xde9a('0x1b')]&&_0x416b36[_0xde9a('0x1b')][_0xde9a('0x1c')]&&_0x416b36[_0xde9a('0x1b')][_0xde9a('0x1c')][_0xde9a('0x1d')]){_0x2e96ee[_0xde9a('0x15')]='';for(var _0x2fa60c=0x0;_0x2fa60c<_0x416b36[_0xde9a('0x1b')][_0xde9a('0x1c')][_0xde9a('0x1d')];_0x2fa60c++){_0x2e96ee[_0xde9a('0x15')]+=_0x416b36[_0xde9a('0x1b')][_0xde9a('0x1c')][_0x2fa60c]['transcript']+'';}}return _0x2f0859['update'](_0x2e96ee);})[_0xde9a('0x12')](function(){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x1e'),_0x2f0859['id']));if(!_0x2f0859['tempSentiment']){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x21'));}if(!_0x1cb3bd['sentiment']||!_0x1cb3bd[_0xde9a('0x22')]||!_0x1cb3bd['sentimentRegion']||!_0x1cb3bd[_0xde9a('0x23')]||!_0x1cb3bd['bucket']){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x24'));}if(!_0x2e96ee[_0xde9a('0x15')]){throw new Error(_0xde9a('0x25'));}if(_0x1cb3bd[_0xde9a('0x22')]===_0x3a9b1a['id']){return _0x3a9b1a;}else{return db[_0xde9a('0x26')]['findOne']({'where':{'id':_settings[_0xde9a('0x22')]}});}})[_0xde9a('0x12')](function(_0x25d7f1){if(!_0x25d7f1){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x27'));}if(!_0x25d7f1[_0xde9a('0xf')]||!_0x25d7f1[_0xde9a('0x10')]){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x28'));}_0xd81956=_0x25d7f1;logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x29'),_0x2f0859['id']));return sentiment(_0xd81956['data1'],_0xd81956['data2'],_0x1cb3bd[_0xde9a('0x2a')],_0x2e96ee['fileText'],_0x1cb3bd[_0xde9a('0x23')]);})[_0xde9a('0x12')](function(_0x58e973){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x2b'),_0x2f0859['id']));return _0x2f0859['update']({'sentiment':_0x58e973['Sentiment'],'sPositive':_0x58e973[_0xde9a('0x2c')][_0xde9a('0x2d')],'sNegative':_0x58e973['SentimentScore'][_0xde9a('0x2e')],'sMixed':_0x58e973[_0xde9a('0x2c')][_0xde9a('0x2f')],'sNeutral':_0x58e973[_0xde9a('0x2c')][_0xde9a('0x30')]});})[_0xde9a('0x12')](function(){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x1e'),_0x2f0859['id']));_0x543346();});case _0xde9a('0x31'):return _0x2f0859['update']({'transcribeStatus':_0xde9a('0x31'),'failureReason':_0x50ffb8[_0xde9a('0x14')][_0xde9a('0x32')]})[_0xde9a('0x12')](function(){logger['info'](util[_0xde9a('0xc')](_0xde9a('0x1e'),_0x2f0859['id']));_0x543346();});default:logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x33'),_0x2f0859['id']));break;}}else{return BPromise[_0xde9a('0x34')]()['then'](function(){if(!_0x2f0859[_0xde9a('0x35')]){throw new db[(_0xde9a('0x1f'))]['ValidationError'](_0xde9a('0x21'));}if(!_0x1cb3bd[_0xde9a('0x36')]||!_0x1cb3bd[_0xde9a('0x22')]||!_0x1cb3bd[_0xde9a('0x2a')]||!_0x1cb3bd[_0xde9a('0x23')]||!_0x1cb3bd['bucket']){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x24'));}if(!_0x2f0859[_0xde9a('0x15')]){throw new Error(_0xde9a('0x25'));}if(_0x1cb3bd[_0xde9a('0x22')]===_0x3a9b1a['id']){return _0x3a9b1a;}else{return db[_0xde9a('0x26')][_0xde9a('0x37')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xde9a('0x12')](function(_0x990840){if(!_0x990840){throw new db['Sequelize'][(_0xde9a('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x990840[_0xde9a('0xf')]||!_0x990840[_0xde9a('0x10')]){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x28'));}_0xd81956=_0x990840;logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x29'),_0x2f0859['id']));return sentiment(_0xd81956['data1'],_0xd81956['data2'],_0x1cb3bd[_0xde9a('0x2a')],_0x2f0859[_0xde9a('0x15')],_0x1cb3bd['language']);})['then'](function(_0x48fb78){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x2b'),_0x2f0859['id']));return _0x2f0859[_0xde9a('0x38')]({'sentiment':_0x48fb78['Sentiment'],'sPositive':_0x48fb78[_0xde9a('0x2c')]['Positive'],'sNegative':_0x48fb78['SentimentScore'][_0xde9a('0x2e')],'sMixed':_0x48fb78[_0xde9a('0x2c')]['Mixed'],'sNeutral':_0x48fb78[_0xde9a('0x2c')][_0xde9a('0x30')],'transcribeStatus':'COMPLETED'});})[_0xde9a('0x12')](function(){logger[_0xde9a('0xb')](util[_0xde9a('0xc')](_0xde9a('0x1e'),_0x2f0859['id']));_0x543346();});}})[_0xde9a('0x39')](function(_0x2ae999){if(_0x2ae999){if(!_0x2ae999[_0xde9a('0x3a')]||_0x2ae999['name']!==_0xde9a('0x3b')){logger['error'](util['format'](_0xde9a('0x3c'),_0x2f0859['id']),util[_0xde9a('0x3d')](_0x2ae999,{'showHidden':![],'depth':null}));}}_0x543346();});});}function checkTranscribe(){var _0x37b8d8;var _0x97d560;var _0x31de98;return db[_0xde9a('0x3e')][_0xde9a('0x3f')]({'where':{'transcribeStatus':_0xde9a('0x40')}})[_0xde9a('0x12')](function(_0x3fe19b){if(!_0x3fe19b||!_0x3fe19b[_0xde9a('0x1d')]){throw new db[(_0xde9a('0x1f'))]['ValidationError'](_0xde9a('0x41'));}_0x37b8d8=_0x3fe19b;return db[_0xde9a('0x42')][_0xde9a('0x37')]({'where':{'id':0x1}});})[_0xde9a('0x12')](function(_0xc6d00b){if(!_0xc6d00b){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x43'));}_0x97d560=_0xc6d00b;if(!_0x97d560[_0xde9a('0x44')]||!_0x97d560[_0xde9a('0x45')]||!_0x97d560['transcribeRegion']||!_0x97d560['language']||!_0x97d560[_0xde9a('0x46')]){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x47'));}return db['CloudProvider'][_0xde9a('0x37')]({'where':{'id':_0x97d560[_0xde9a('0x45')]}});})[_0xde9a('0x12')](function(_0x4872f6){if(!_0x4872f6){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4872f6[_0xde9a('0xf')]||!_0x4872f6[_0xde9a('0x10')]){throw new db[(_0xde9a('0x1f'))][(_0xde9a('0x20'))](_0xde9a('0x28'));}_0x31de98=_0x4872f6;var _0x13be60=[];_0x37b8d8['forEach'](function(_0x4f2e61){_0x13be60[_0xde9a('0x48')](checkTranscribeJob(_0x4f2e61,_0x97d560,_0x31de98));});return BPromise[_0xde9a('0x49')](_0x13be60);})['catch'](function(_0x27c68d){if(_0x27c68d){if(!_0x27c68d['name']||_0x27c68d[_0xde9a('0x3a')]!=='SequelizeValidationError'){logger[_0xde9a('0x4a')](util[_0xde9a('0x3d')](_0x27c68d,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};