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 _0xaa5e=['inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis'];(function(_0x3e6a45,_0x3ac4a6){var _0x152744=function(_0x1dc9d7){while(--_0x1dc9d7){_0x3e6a45['push'](_0x3e6a45['shift']());}};_0x152744(++_0x3ac4a6);}(_0xaa5e,0xa5));var _0xeaa5=function(_0x17fa36,_0x308d81){_0x17fa36=_0x17fa36-0x0;var _0x10ad45=_0xaa5e[_0x17fa36];return _0x10ad45;};var _=require(_0xeaa5('0x0'));var AWS=require(_0xeaa5('0x1'));var rp=require('request-promise');var util=require(_0xeaa5('0x2'));var BPromise=require(_0xeaa5('0x3'));var db=require(_0xeaa5('0x4'))['db'];var logger=require(_0xeaa5('0x5'))(_0xeaa5('0x6'));function getTranscriptionJob(_0x5a1aca,_0x2c111f,_0xd64e9f,_0x33d376){return new Promise(function(_0x382868,_0x553f20){var _0x4d405e=new AWS[(_0xeaa5('0x7'))]({'accessKeyId':_0x2c111f,'secretAccessKey':_0x5a1aca,'region':_0xd64e9f});_0x4d405e[_0xeaa5('0x8')]({'TranscriptionJobName':_0x33d376},function(_0x50cb62,_0x2e35c3){if(_0x50cb62){return _0x553f20(_0x50cb62);}else{return _0x382868(_0x2e35c3);}});});}function sentiment(_0x404f3d,_0x55b4f1,_0x2e9ca6,_0x49682b,_0x2f5750){return new Promise(function(_0x3552ac,_0x503237){var _0x3e1c2e=new AWS[(_0xeaa5('0x9'))]({'accessKeyId':_0x55b4f1,'secretAccessKey':_0x404f3d,'region':_0x2e9ca6});_0x3e1c2e[_0xeaa5('0xa')]({'Text':_0x49682b,'LanguageCode':_0x2f5750[_0xeaa5('0xb')](0x0,0x2)},function(_0x260009,_0x6f18de){if(_0x260009){return _0x503237(_0x260009);}else{return _0x3552ac(_0x6f18de);}});});}function checkTranscribeJob(_0x119d7f,_0x2c3561,_0x123d6e){var _0x47a779;return new BPromise(function(_0x3ae823,_0x422a0e){logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0xe'),_0x119d7f['id'],_0x119d7f['transcribeName']));return getTranscriptionJob(_0x123d6e[_0xeaa5('0xf')],_0x123d6e['data2'],_0x2c3561[_0xeaa5('0x10')],_0x119d7f[_0xeaa5('0x11')])[_0xeaa5('0x12')](function(_0x507fb4){logger[_0xeaa5('0xc')](util['format'](_0xeaa5('0x13'),_0x119d7f['id'],_0x119d7f[_0xeaa5('0x11')],_0x507fb4[_0xeaa5('0x14')]['TranscriptionJobStatus']));if(!_0x119d7f[_0xeaa5('0x15')]){switch(_0x507fb4['TranscriptionJob'][_0xeaa5('0x16')]){case _0xeaa5('0x17'):var _0x22f4d3={'transcribeStatus':_0x507fb4[_0xeaa5('0x14')]['TranscriptionJobStatus'],'fileUri':_0x507fb4[_0xeaa5('0x14')][_0xeaa5('0x18')][_0xeaa5('0x19')]};logger['info'](util[_0xeaa5('0xd')](_0xeaa5('0x1a'),_0x119d7f['id']));return rp({'uri':_0x507fb4[_0xeaa5('0x14')][_0xeaa5('0x18')][_0xeaa5('0x19')],'json':!![]})['then'](function(_0x3f081e){logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0x1b'),_0x119d7f['id']));if(_0x3f081e&&_0x3f081e[_0xeaa5('0x1c')]&&_0x3f081e[_0xeaa5('0x1c')][_0xeaa5('0x1d')]&&_0x3f081e[_0xeaa5('0x1c')][_0xeaa5('0x1d')][_0xeaa5('0x1e')]){_0x22f4d3[_0xeaa5('0x15')]='';for(var _0x2c4003=0x0;_0x2c4003<_0x3f081e[_0xeaa5('0x1c')][_0xeaa5('0x1d')][_0xeaa5('0x1e')];_0x2c4003++){_0x22f4d3[_0xeaa5('0x15')]+=_0x3f081e[_0xeaa5('0x1c')]['transcripts'][_0x2c4003][_0xeaa5('0x1f')]+'';}}return _0x119d7f[_0xeaa5('0x20')](_0x22f4d3);})['then'](function(){logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0x21'),_0x119d7f['id']));if(!_0x119d7f[_0xeaa5('0x22')]){throw new db[(_0xeaa5('0x23'))]['ValidationError'](_0xeaa5('0x24'));}if(!_0x2c3561['sentiment']||!_0x2c3561[_0xeaa5('0x25')]||!_0x2c3561[_0xeaa5('0x26')]||!_0x2c3561[_0xeaa5('0x27')]||!_0x2c3561[_0xeaa5('0x28')]){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x22f4d3[_0xeaa5('0x15')]){throw new Error(_0xeaa5('0x2a'));}if(_0x2c3561['sentimentAccountId']===_0x123d6e['id']){return _0x123d6e;}else{return db[_0xeaa5('0x2b')]['findOne']({'where':{'id':_settings[_0xeaa5('0x25')]}});}})['then'](function(_0x5be25f){if(!_0x5be25f){throw new db[(_0xeaa5('0x23'))]['ValidationError'](_0xeaa5('0x2c'));}if(!_0x5be25f['data1']||!_0x5be25f[_0xeaa5('0x2d')]){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))](_0xeaa5('0x2e'));}_0x47a779=_0x5be25f;logger['info'](util[_0xeaa5('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x119d7f['id']));return sentiment(_0x47a779['data1'],_0x47a779[_0xeaa5('0x2d')],_0x2c3561[_0xeaa5('0x26')],_0x22f4d3['fileText'],_0x2c3561[_0xeaa5('0x27')]);})[_0xeaa5('0x12')](function(_0x254d28){logger[_0xeaa5('0xc')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x119d7f['id']));return _0x119d7f[_0xeaa5('0x20')]({'sentiment':_0x254d28[_0xeaa5('0x2f')],'sPositive':_0x254d28[_0xeaa5('0x30')][_0xeaa5('0x31')],'sNegative':_0x254d28[_0xeaa5('0x30')][_0xeaa5('0x32')],'sMixed':_0x254d28[_0xeaa5('0x30')]['Mixed'],'sNeutral':_0x254d28[_0xeaa5('0x30')][_0xeaa5('0x33')]});})['then'](function(){logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x119d7f['id']));_0x3ae823();});case'FAILED':return _0x119d7f['update']({'transcribeStatus':_0xeaa5('0x34'),'failureReason':_0x507fb4['TranscriptionJob'][_0xeaa5('0x35')]})['then'](function(){logger['info'](util[_0xeaa5('0xd')](_0xeaa5('0x21'),_0x119d7f['id']));_0x3ae823();});default:logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0x36'),_0x119d7f['id']));break;}}else{return BPromise[_0xeaa5('0x37')]()['then'](function(){if(!_0x119d7f['tempSentiment']){throw new db[(_0xeaa5('0x23'))]['ValidationError'](_0xeaa5('0x24'));}if(!_0x2c3561[_0xeaa5('0x38')]||!_0x2c3561['sentimentAccountId']||!_0x2c3561[_0xeaa5('0x26')]||!_0x2c3561[_0xeaa5('0x27')]||!_0x2c3561[_0xeaa5('0x28')]){throw new db['Sequelize'][(_0xeaa5('0x29'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x119d7f[_0xeaa5('0x15')]){throw new Error(_0xeaa5('0x2a'));}if(_0x2c3561['sentimentAccountId']===_0x123d6e['id']){return _0x123d6e;}else{return db[_0xeaa5('0x2b')][_0xeaa5('0x39')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xeaa5('0x12')](function(_0x2445fb){if(!_0x2445fb){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))](_0xeaa5('0x2c'));}if(!_0x2445fb[_0xeaa5('0xf')]||!_0x2445fb[_0xeaa5('0x2d')]){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))]('Cloud\x20Provider\x20not\x20configured');}_0x47a779=_0x2445fb;logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0x3a'),_0x119d7f['id']));return sentiment(_0x47a779[_0xeaa5('0xf')],_0x47a779[_0xeaa5('0x2d')],_0x2c3561[_0xeaa5('0x26')],_0x119d7f['fileText'],_0x2c3561['language']);})[_0xeaa5('0x12')](function(_0x256e08){logger[_0xeaa5('0xc')](util['format'](_0xeaa5('0x3b'),_0x119d7f['id']));return _0x119d7f[_0xeaa5('0x20')]({'sentiment':_0x256e08[_0xeaa5('0x2f')],'sPositive':_0x256e08['SentimentScore'][_0xeaa5('0x31')],'sNegative':_0x256e08[_0xeaa5('0x30')][_0xeaa5('0x32')],'sMixed':_0x256e08['SentimentScore'][_0xeaa5('0x3c')],'sNeutral':_0x256e08[_0xeaa5('0x30')][_0xeaa5('0x33')],'transcribeStatus':_0xeaa5('0x17')});})[_0xeaa5('0x12')](function(){logger[_0xeaa5('0xc')](util[_0xeaa5('0xd')](_0xeaa5('0x21'),_0x119d7f['id']));_0x3ae823();});}})[_0xeaa5('0x3d')](function(_0x5d8712){if(_0x5d8712){if(!_0x5d8712[_0xeaa5('0x3e')]||_0x5d8712[_0xeaa5('0x3e')]!==_0xeaa5('0x3f')){logger[_0xeaa5('0x40')](util[_0xeaa5('0xd')](_0xeaa5('0x41'),_0x119d7f['id']),util[_0xeaa5('0x42')](_0x5d8712,{'showHidden':![],'depth':null}));}}_0x3ae823();});});}function checkTranscribe(){var _0x2d2509;var _0x159446;var _0x516368;return db[_0xeaa5('0x43')][_0xeaa5('0x44')]({'where':{'transcribeStatus':_0xeaa5('0x45')}})[_0xeaa5('0x12')](function(_0x53a0ac){if(!_0x53a0ac||!_0x53a0ac[_0xeaa5('0x1e')]){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))](_0xeaa5('0x46'));}_0x2d2509=_0x53a0ac;return db['Setting'][_0xeaa5('0x39')]({'where':{'id':0x1}});})[_0xeaa5('0x12')](function(_0x3cb257){if(!_0x3cb257){throw new db[(_0xeaa5('0x23'))]['ValidationError'](_0xeaa5('0x47'));}_0x159446=_0x3cb257;if(!_0x159446['transcribe']||!_0x159446['transcribeAccountId']||!_0x159446[_0xeaa5('0x10')]||!_0x159446['language']||!_0x159446['bucket']){throw new db[(_0xeaa5('0x23'))]['ValidationError'](_0xeaa5('0x48'));}return db['CloudProvider']['findOne']({'where':{'id':_0x159446['transcribeAccountId']}});})[_0xeaa5('0x12')](function(_0x5559e8){if(!_0x5559e8){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))](_0xeaa5('0x2c'));}if(!_0x5559e8[_0xeaa5('0xf')]||!_0x5559e8[_0xeaa5('0x2d')]){throw new db[(_0xeaa5('0x23'))][(_0xeaa5('0x29'))](_0xeaa5('0x2e'));}_0x516368=_0x5559e8;var _0x1c22c6=[];_0x2d2509[_0xeaa5('0x49')](function(_0x5bf37b){_0x1c22c6[_0xeaa5('0x4a')](checkTranscribeJob(_0x5bf37b,_0x159446,_0x516368));});return BPromise[_0xeaa5('0x4b')](_0x1c22c6);})[_0xeaa5('0x3d')](function(_0x599a62){if(_0x599a62){if(!_0x599a62['name']||_0x599a62[_0xeaa5('0x3e')]!==_0xeaa5('0x3f')){logger[_0xeaa5('0x40')](util['inspect'](_0x599a62,{'showHidden':![],'depth':null}));}}});}exports[_0xeaa5('0x4c')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};