d411bb5d1380547300205a7c7860babbad3fe5eb
[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 _0xa1ad=['update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','Negative','SentimentScore','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Mixed','COMPLETED','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\x20not\x20configured','forEach','push','all','catch','error','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','info','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript'];(function(_0x469fe3,_0x1c116f){var _0x323496=function(_0x5a639f){while(--_0x5a639f){_0x469fe3['push'](_0x469fe3['shift']());}};_0x323496(++_0x1c116f);}(_0xa1ad,0x1a0));var _0xda1a=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0xa1ad[_0x21353c];return _0xa99120;};var _=require(_0xda1a('0x0'));var AWS=require(_0xda1a('0x1'));var rp=require(_0xda1a('0x2'));var util=require(_0xda1a('0x3'));var BPromise=require(_0xda1a('0x4'));var db=require(_0xda1a('0x5'))['db'];var logger=require(_0xda1a('0x6'))(_0xda1a('0x7'));function getTranscriptionJob(_0x333ee8,_0x5920c4,_0x50aae3,_0x2e3ef4){return new Promise(function(_0x506411,_0x5615a8){var _0x54f094=new AWS[(_0xda1a('0x8'))]({'accessKeyId':_0x5920c4,'secretAccessKey':_0x333ee8,'region':_0x50aae3});_0x54f094[_0xda1a('0x9')]({'TranscriptionJobName':_0x2e3ef4},function(_0x15563d,_0x2be0a3){if(_0x15563d){return _0x5615a8(_0x15563d);}else{return _0x506411(_0x2be0a3);}});});}function sentiment(_0x47a8af,_0x5b192f,_0x420fe1,_0x17a04b,_0x19b9fd){return new Promise(function(_0x3ba105,_0x3cd0ff){var _0x531ffa=new AWS[(_0xda1a('0xa'))]({'accessKeyId':_0x5b192f,'secretAccessKey':_0x47a8af,'region':_0x420fe1});_0x531ffa['detectSentiment']({'Text':_0x17a04b,'LanguageCode':_0x19b9fd['substring'](0x0,0x2)},function(_0x54b973,_0x5ea884){if(_0x54b973){return _0x3cd0ff(_0x54b973);}else{return _0x3ba105(_0x5ea884);}});});}function checkTranscribeJob(_0x59279e,_0x2fb89c,_0xf59a9d){var _0x312a4c;return new BPromise(function(_0x1f5610,_0xd0e0d7){logger['info'](util['format'](_0xda1a('0xb'),_0x59279e['id'],_0x59279e[_0xda1a('0xc')]));return getTranscriptionJob(_0xf59a9d[_0xda1a('0xd')],_0xf59a9d['data2'],_0x2fb89c[_0xda1a('0xe')],_0x59279e[_0xda1a('0xc')])[_0xda1a('0xf')](function(_0x52ce4f){logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x12'),_0x59279e['id'],_0x59279e[_0xda1a('0xc')],_0x52ce4f['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x59279e['fileText']){switch(_0x52ce4f[_0xda1a('0x13')][_0xda1a('0x14')]){case'COMPLETED':var _0x565deb={'transcribeStatus':_0x52ce4f['TranscriptionJob'][_0xda1a('0x14')],'fileUri':_0x52ce4f[_0xda1a('0x13')][_0xda1a('0x15')]['TranscriptFileUri']};logger[_0xda1a('0x10')](util['format']('[RECORDING:%d]\x20Get\x20transcript',_0x59279e['id']));return rp({'uri':_0x52ce4f[_0xda1a('0x13')][_0xda1a('0x15')]['TranscriptFileUri'],'json':!![]})[_0xda1a('0xf')](function(_0x23755d){logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x16'),_0x59279e['id']));if(_0x23755d&&_0x23755d[_0xda1a('0x17')]&&_0x23755d['results'][_0xda1a('0x18')]&&_0x23755d[_0xda1a('0x17')][_0xda1a('0x18')][_0xda1a('0x19')]){_0x565deb[_0xda1a('0x1a')]='';for(var _0x25ebb2=0x0;_0x25ebb2<_0x23755d[_0xda1a('0x17')]['transcripts'][_0xda1a('0x19')];_0x25ebb2++){_0x565deb[_0xda1a('0x1a')]+=_0x23755d[_0xda1a('0x17')]['transcripts'][_0x25ebb2][_0xda1a('0x1b')]+'';}}return _0x59279e[_0xda1a('0x1c')](_0x565deb);})[_0xda1a('0xf')](function(){logger[_0xda1a('0x10')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x59279e['id']));if(!_0x59279e[_0xda1a('0x1d')]){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x20'));}if(!_0x2fb89c['sentiment']||!_0x2fb89c[_0xda1a('0x21')]||!_0x2fb89c[_0xda1a('0x22')]||!_0x2fb89c[_0xda1a('0x23')]||!_0x2fb89c[_0xda1a('0x24')]){throw new db['Sequelize']['ValidationError'](_0xda1a('0x25'));}if(!_0x565deb['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2fb89c[_0xda1a('0x21')]===_0xf59a9d['id']){return _0xf59a9d;}else{return db[_0xda1a('0x26')][_0xda1a('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xda1a('0xf')](function(_0x2b369b){if(!_0x2b369b){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x28'));}if(!_0x2b369b[_0xda1a('0xd')]||!_0x2b369b[_0xda1a('0x29')]){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x2a'));}_0x312a4c=_0x2b369b;logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x2b'),_0x59279e['id']));return sentiment(_0x312a4c['data1'],_0x312a4c[_0xda1a('0x29')],_0x2fb89c['sentimentRegion'],_0x565deb['fileText'],_0x2fb89c['language']);})[_0xda1a('0xf')](function(_0x1f638b){logger['info'](util[_0xda1a('0x11')](_0xda1a('0x2c'),_0x59279e['id']));return _0x59279e[_0xda1a('0x1c')]({'sentiment':_0x1f638b[_0xda1a('0x2d')],'sPositive':_0x1f638b['SentimentScore'][_0xda1a('0x2e')],'sNegative':_0x1f638b['SentimentScore'][_0xda1a('0x2f')],'sMixed':_0x1f638b[_0xda1a('0x30')]['Mixed'],'sNeutral':_0x1f638b[_0xda1a('0x30')][_0xda1a('0x31')]});})[_0xda1a('0xf')](function(){logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x32'),_0x59279e['id']));_0x1f5610();});case _0xda1a('0x33'):return _0x59279e[_0xda1a('0x1c')]({'transcribeStatus':_0xda1a('0x33'),'failureReason':_0x52ce4f['TranscriptionJob'][_0xda1a('0x34')]})[_0xda1a('0xf')](function(){logger['info'](util[_0xda1a('0x11')](_0xda1a('0x32'),_0x59279e['id']));_0x1f5610();});default:logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x35'),_0x59279e['id']));break;}}else{return BPromise[_0xda1a('0x36')]()[_0xda1a('0xf')](function(){if(!_0x59279e[_0xda1a('0x1d')]){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x20'));}if(!_0x2fb89c[_0xda1a('0x37')]||!_0x2fb89c[_0xda1a('0x21')]||!_0x2fb89c['sentimentRegion']||!_0x2fb89c['language']||!_0x2fb89c[_0xda1a('0x24')]){throw new db[(_0xda1a('0x1e'))]['ValidationError'](_0xda1a('0x25'));}if(!_0x59279e[_0xda1a('0x1a')]){throw new Error('Transcript\x20not\x20available');}if(_0x2fb89c['sentimentAccountId']===_0xf59a9d['id']){return _0xf59a9d;}else{return db['CloudProvider'][_0xda1a('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xda1a('0xf')](function(_0x5b5515){if(!_0x5b5515){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x28'));}if(!_0x5b5515[_0xda1a('0xd')]||!_0x5b5515['data2']){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))]('Cloud\x20Provider\x20not\x20configured');}_0x312a4c=_0x5b5515;logger[_0xda1a('0x10')](util[_0xda1a('0x11')](_0xda1a('0x2b'),_0x59279e['id']));return sentiment(_0x312a4c[_0xda1a('0xd')],_0x312a4c[_0xda1a('0x29')],_0x2fb89c[_0xda1a('0x22')],_0x59279e[_0xda1a('0x1a')],_0x2fb89c[_0xda1a('0x23')]);})[_0xda1a('0xf')](function(_0x4b9e15){logger['info'](util[_0xda1a('0x11')](_0xda1a('0x2c'),_0x59279e['id']));return _0x59279e['update']({'sentiment':_0x4b9e15[_0xda1a('0x2d')],'sPositive':_0x4b9e15['SentimentScore'][_0xda1a('0x2e')],'sNegative':_0x4b9e15[_0xda1a('0x30')][_0xda1a('0x2f')],'sMixed':_0x4b9e15[_0xda1a('0x30')][_0xda1a('0x38')],'sNeutral':_0x4b9e15[_0xda1a('0x30')]['Neutral'],'transcribeStatus':_0xda1a('0x39')});})[_0xda1a('0xf')](function(){logger[_0xda1a('0x10')](util[_0xda1a('0x11')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x59279e['id']));_0x1f5610();});}})['catch'](function(_0x158052){if(_0x158052){if(!_0x158052[_0xda1a('0x3a')]||_0x158052[_0xda1a('0x3a')]!==_0xda1a('0x3b')){logger['error'](util[_0xda1a('0x11')](_0xda1a('0x3c'),_0x59279e['id']),util[_0xda1a('0x3d')](_0x158052,{'showHidden':![],'depth':null}));}}_0x1f5610();});});}function checkTranscribe(){var _0x1b326c;var _0x49b9c4;var _0x4e1c3c;return db[_0xda1a('0x3e')][_0xda1a('0x3f')]({'where':{'transcribeStatus':_0xda1a('0x40')}})[_0xda1a('0xf')](function(_0xf3bee){if(!_0xf3bee||!_0xf3bee[_0xda1a('0x19')]){throw new db['Sequelize'][(_0xda1a('0x1f'))](_0xda1a('0x41'));}_0x1b326c=_0xf3bee;return db[_0xda1a('0x42')][_0xda1a('0x27')]({'where':{'id':0x1}});})['then'](function(_0x1593f7){if(!_0x1593f7){throw new db[(_0xda1a('0x1e'))]['ValidationError'](_0xda1a('0x43'));}_0x49b9c4=_0x1593f7;if(!_0x49b9c4[_0xda1a('0x7')]||!_0x49b9c4['transcribeAccountId']||!_0x49b9c4[_0xda1a('0xe')]||!_0x49b9c4['language']||!_0x49b9c4[_0xda1a('0x24')]){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x44'));}return db[_0xda1a('0x26')][_0xda1a('0x27')]({'where':{'id':_0x49b9c4['transcribeAccountId']}});})['then'](function(_0x39956e){if(!_0x39956e){throw new db['Sequelize'][(_0xda1a('0x1f'))](_0xda1a('0x28'));}if(!_0x39956e['data1']||!_0x39956e[_0xda1a('0x29')]){throw new db[(_0xda1a('0x1e'))][(_0xda1a('0x1f'))](_0xda1a('0x2a'));}_0x4e1c3c=_0x39956e;var _0x58529b=[];_0x1b326c[_0xda1a('0x45')](function(_0x72d2c6){_0x58529b[_0xda1a('0x46')](checkTranscribeJob(_0x72d2c6,_0x49b9c4,_0x4e1c3c));});return BPromise[_0xda1a('0x47')](_0x58529b);})[_0xda1a('0x48')](function(_0x112424){if(_0x112424){if(!_0x112424[_0xda1a('0x3a')]||_0x112424['name']!=='SequelizeValidationError'){logger[_0xda1a('0x49')](util['inspect'](_0x112424,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};