a02f5234b5935773e61894817d81f63e7272dea7
[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 _0x2d20=['../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','length','transcripts','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','FAILED','FailureReason','findOne','Sentiment','Negative','Mixed','Neutral','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb'];(function(_0x36fc72,_0x1843c7){var _0x1a85c7=function(_0x1bdcd4){while(--_0x1bdcd4){_0x36fc72['push'](_0x36fc72['shift']());}};_0x1a85c7(++_0x1843c7);}(_0x2d20,0x1b0));var _0x02d2=function(_0x31711a,_0x10590e){_0x31711a=_0x31711a-0x0;var _0x3b407f=_0x2d20[_0x31711a];return _0x3b407f;};var _=require(_0x02d2('0x0'));var AWS=require(_0x02d2('0x1'));var rp=require(_0x02d2('0x2'));var util=require(_0x02d2('0x3'));var BPromise=require(_0x02d2('0x4'));var db=require(_0x02d2('0x5'))['db'];var logger=require(_0x02d2('0x6'))(_0x02d2('0x7'));function getTranscriptionJob(_0x4bb98b,_0xa307cb,_0x5e9eae,_0x49fd61){return new Promise(function(_0x4a83eb,_0x1b34e3){var _0x3564f0=new AWS[(_0x02d2('0x8'))]({'accessKeyId':_0xa307cb,'secretAccessKey':_0x4bb98b,'region':_0x5e9eae});_0x3564f0[_0x02d2('0x9')]({'TranscriptionJobName':_0x49fd61},function(_0x35ba13,_0x4c2619){if(_0x35ba13){return _0x1b34e3(_0x35ba13);}else{return _0x4a83eb(_0x4c2619);}});});}function sentiment(_0x137f6e,_0x2814ed,_0x5a280c,_0x30ff27,_0x4e8c86){return new Promise(function(_0x24dc1b,_0x5b3ad2){var _0x254e65=new AWS['Comprehend']({'accessKeyId':_0x2814ed,'secretAccessKey':_0x137f6e,'region':_0x5a280c});_0x254e65[_0x02d2('0xa')]({'Text':_0x30ff27,'LanguageCode':_0x4e8c86[_0x02d2('0xb')](0x0,0x2)},function(_0x2d16c9,_0x52b9a4){if(_0x2d16c9){return _0x5b3ad2(_0x2d16c9);}else{return _0x24dc1b(_0x52b9a4);}});});}function checkTranscribeJob(_0x42a3b7,_0x22e4ca,_0x4f3863){var _0x123fb1;return new BPromise(function(_0x40fecf,_0x1d174b){logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0xe'),_0x42a3b7['id'],_0x42a3b7['transcribeName']));return getTranscriptionJob(_0x4f3863[_0x02d2('0xf')],_0x4f3863[_0x02d2('0x10')],_0x22e4ca[_0x02d2('0x11')],_0x42a3b7[_0x02d2('0x12')])[_0x02d2('0x13')](function(_0x59c613){logger['info'](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x42a3b7['id'],_0x42a3b7[_0x02d2('0x12')],_0x59c613[_0x02d2('0x14')]['TranscriptionJobStatus']));if(!_0x42a3b7[_0x02d2('0x15')]){switch(_0x59c613[_0x02d2('0x14')][_0x02d2('0x16')]){case _0x02d2('0x17'):var _0x4a7fdc={'transcribeStatus':_0x59c613[_0x02d2('0x14')]['TranscriptionJobStatus'],'fileUri':_0x59c613[_0x02d2('0x14')][_0x02d2('0x18')][_0x02d2('0x19')]};logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0x1a'),_0x42a3b7['id']));return rp({'uri':_0x59c613[_0x02d2('0x14')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0x02d2('0x13')](function(_0x22a255){logger[_0x02d2('0xc')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x42a3b7['id']));if(_0x22a255&&_0x22a255[_0x02d2('0x1b')]&&_0x22a255[_0x02d2('0x1b')]['transcripts']&&_0x22a255[_0x02d2('0x1b')]['transcripts'][_0x02d2('0x1c')]){_0x4a7fdc[_0x02d2('0x15')]='';for(var _0x52f84a=0x0;_0x52f84a<_0x22a255[_0x02d2('0x1b')][_0x02d2('0x1d')]['length'];_0x52f84a++){_0x4a7fdc[_0x02d2('0x15')]+=_0x22a255[_0x02d2('0x1b')][_0x02d2('0x1d')][_0x52f84a]['transcript']+'';}}return _0x42a3b7[_0x02d2('0x1e')](_0x4a7fdc);})[_0x02d2('0x13')](function(){logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0x1f'),_0x42a3b7['id']));if(!_0x42a3b7[_0x02d2('0x20')]){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))](_0x02d2('0x23'));}if(!_0x22e4ca[_0x02d2('0x24')]||!_0x22e4ca[_0x02d2('0x25')]||!_0x22e4ca[_0x02d2('0x26')]||!_0x22e4ca[_0x02d2('0x27')]||!_0x22e4ca[_0x02d2('0x28')]){throw new db[(_0x02d2('0x21'))]['ValidationError'](_0x02d2('0x29'));}if(!_0x4a7fdc[_0x02d2('0x15')]){throw new Error(_0x02d2('0x2a'));}if(_0x22e4ca[_0x02d2('0x25')]===_0x4f3863['id']){return _0x4f3863;}else{return db[_0x02d2('0x2b')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x1bf504){if(!_0x1bf504){throw new db[(_0x02d2('0x21'))]['ValidationError'](_0x02d2('0x2c'));}if(!_0x1bf504[_0x02d2('0xf')]||!_0x1bf504[_0x02d2('0x10')]){throw new db[(_0x02d2('0x21'))]['ValidationError'](_0x02d2('0x2d'));}_0x123fb1=_0x1bf504;logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0x2e'),_0x42a3b7['id']));return sentiment(_0x123fb1[_0x02d2('0xf')],_0x123fb1[_0x02d2('0x10')],_0x22e4ca[_0x02d2('0x26')],_0x4a7fdc[_0x02d2('0x15')],_0x22e4ca[_0x02d2('0x27')]);})[_0x02d2('0x13')](function(_0x512f82){logger[_0x02d2('0xc')](util['format'](_0x02d2('0x2f'),_0x42a3b7['id']));return _0x42a3b7[_0x02d2('0x1e')]({'sentiment':_0x512f82['Sentiment'],'sPositive':_0x512f82[_0x02d2('0x30')][_0x02d2('0x31')],'sNegative':_0x512f82[_0x02d2('0x30')]['Negative'],'sMixed':_0x512f82['SentimentScore']['Mixed'],'sNeutral':_0x512f82['SentimentScore']['Neutral']});})[_0x02d2('0x13')](function(){logger[_0x02d2('0xc')](util[_0x02d2('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x42a3b7['id']));_0x40fecf();});case _0x02d2('0x32'):return _0x42a3b7[_0x02d2('0x1e')]({'transcribeStatus':'FAILED','failureReason':_0x59c613[_0x02d2('0x14')][_0x02d2('0x33')]})[_0x02d2('0x13')](function(){logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0x1f'),_0x42a3b7['id']));_0x40fecf();});default:logger[_0x02d2('0xc')](util[_0x02d2('0xd')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x42a3b7['id']));break;}}else{return BPromise['resolve']()[_0x02d2('0x13')](function(){if(!_0x42a3b7['tempSentiment']){throw new db['Sequelize'][(_0x02d2('0x22'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x22e4ca[_0x02d2('0x24')]||!_0x22e4ca[_0x02d2('0x25')]||!_0x22e4ca[_0x02d2('0x26')]||!_0x22e4ca['language']||!_0x22e4ca['bucket']){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))](_0x02d2('0x29'));}if(!_0x42a3b7[_0x02d2('0x15')]){throw new Error(_0x02d2('0x2a'));}if(_0x22e4ca[_0x02d2('0x25')]===_0x4f3863['id']){return _0x4f3863;}else{return db[_0x02d2('0x2b')][_0x02d2('0x34')]({'where':{'id':_settings[_0x02d2('0x25')]}});}})['then'](function(_0x591479){if(!_0x591479){throw new db[(_0x02d2('0x21'))]['ValidationError'](_0x02d2('0x2c'));}if(!_0x591479[_0x02d2('0xf')]||!_0x591479[_0x02d2('0x10')]){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))](_0x02d2('0x2d'));}_0x123fb1=_0x591479;logger[_0x02d2('0xc')](util[_0x02d2('0xd')](_0x02d2('0x2e'),_0x42a3b7['id']));return sentiment(_0x123fb1[_0x02d2('0xf')],_0x123fb1[_0x02d2('0x10')],_0x22e4ca[_0x02d2('0x26')],_0x42a3b7['fileText'],_0x22e4ca[_0x02d2('0x27')]);})[_0x02d2('0x13')](function(_0x46450d){logger[_0x02d2('0xc')](util['format'](_0x02d2('0x2f'),_0x42a3b7['id']));return _0x42a3b7[_0x02d2('0x1e')]({'sentiment':_0x46450d[_0x02d2('0x35')],'sPositive':_0x46450d['SentimentScore']['Positive'],'sNegative':_0x46450d[_0x02d2('0x30')][_0x02d2('0x36')],'sMixed':_0x46450d[_0x02d2('0x30')][_0x02d2('0x37')],'sNeutral':_0x46450d[_0x02d2('0x30')][_0x02d2('0x38')],'transcribeStatus':_0x02d2('0x17')});})[_0x02d2('0x13')](function(){logger[_0x02d2('0xc')](util[_0x02d2('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x42a3b7['id']));_0x40fecf();});}})[_0x02d2('0x39')](function(_0x126927){if(_0x126927){if(!_0x126927[_0x02d2('0x3a')]||_0x126927[_0x02d2('0x3a')]!==_0x02d2('0x3b')){logger[_0x02d2('0x3c')](util[_0x02d2('0xd')](_0x02d2('0x3d'),_0x42a3b7['id']),util[_0x02d2('0x3e')](_0x126927,{'showHidden':![],'depth':null}));}}_0x40fecf();});});}function checkTranscribe(){var _0x3ec14f;var _0x85beab;var _0x3d6792;return db[_0x02d2('0x3f')][_0x02d2('0x40')]({'where':{'transcribeStatus':_0x02d2('0x41')}})['then'](function(_0x18d161){if(!_0x18d161||!_0x18d161[_0x02d2('0x1c')]){throw new db[(_0x02d2('0x21'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x3ec14f=_0x18d161;return db[_0x02d2('0x42')][_0x02d2('0x34')]({'where':{'id':0x1}});})[_0x02d2('0x13')](function(_0x33f2dc){if(!_0x33f2dc){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))](_0x02d2('0x43'));}_0x85beab=_0x33f2dc;if(!_0x85beab[_0x02d2('0x7')]||!_0x85beab[_0x02d2('0x44')]||!_0x85beab[_0x02d2('0x11')]||!_0x85beab[_0x02d2('0x27')]||!_0x85beab[_0x02d2('0x28')]){throw new db[(_0x02d2('0x21'))]['ValidationError'](_0x02d2('0x45'));}return db[_0x02d2('0x2b')][_0x02d2('0x34')]({'where':{'id':_0x85beab[_0x02d2('0x44')]}});})[_0x02d2('0x13')](function(_0xeb4b1){if(!_0xeb4b1){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))](_0x02d2('0x2c'));}if(!_0xeb4b1[_0x02d2('0xf')]||!_0xeb4b1[_0x02d2('0x10')]){throw new db[(_0x02d2('0x21'))][(_0x02d2('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x3d6792=_0xeb4b1;var _0x5184b3=[];_0x3ec14f[_0x02d2('0x46')](function(_0x15e63d){_0x5184b3['push'](checkTranscribeJob(_0x15e63d,_0x85beab,_0x3d6792));});return BPromise[_0x02d2('0x47')](_0x5184b3);})[_0x02d2('0x39')](function(_0x16bc1a){if(_0x16bc1a){if(!_0x16bc1a[_0x02d2('0x3a')]||_0x16bc1a['name']!==_0x02d2('0x3b')){logger[_0x02d2('0x3c')](util[_0x02d2('0x3e')](_0x16bc1a,{'showHidden':![],'depth':null}));}}});}exports[_0x02d2('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};