1ae22517f6b2f22ea0431902dbe7e4bd6b379274
[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 _0x4b07=['update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','Negative','SentimentScore','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','Sentiment','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','forEach','push','start','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','substring','format','transcribeName','data1','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0x489202,_0x557a4d){var _0x20d9b6=function(_0x2ae4ce){while(--_0x2ae4ce){_0x489202['push'](_0x489202['shift']());}};_0x20d9b6(++_0x557a4d);}(_0x4b07,0x1d6));var _0x74b0=function(_0x972b32,_0x56ea80){_0x972b32=_0x972b32-0x0;var _0x6e8e75=_0x4b07[_0x972b32];return _0x6e8e75;};var _=require('lodash');var AWS=require(_0x74b0('0x0'));var rp=require(_0x74b0('0x1'));var util=require('util');var BPromise=require(_0x74b0('0x2'));var db=require(_0x74b0('0x3'))['db'];var logger=require(_0x74b0('0x4'))(_0x74b0('0x5'));function getTranscriptionJob(_0x5ed154,_0x397b2a,_0x499095,_0x5041e6){return new Promise(function(_0x49713c,_0x42e551){var _0x459c2d=new AWS['TranscribeService']({'accessKeyId':_0x397b2a,'secretAccessKey':_0x5ed154,'region':_0x499095});_0x459c2d['getTranscriptionJob']({'TranscriptionJobName':_0x5041e6},function(_0x45183d,_0x55cdf9){if(_0x45183d){return _0x42e551(_0x45183d);}else{return _0x49713c(_0x55cdf9);}});});}function sentiment(_0x2fb592,_0x36bb9d,_0x269a93,_0x419fab,_0x3a516c){return new Promise(function(_0x462a84,_0x2382cd){var _0x1c1af8=new AWS[(_0x74b0('0x6'))]({'accessKeyId':_0x36bb9d,'secretAccessKey':_0x2fb592,'region':_0x269a93});_0x1c1af8[_0x74b0('0x7')]({'Text':_0x419fab,'LanguageCode':_0x3a516c[_0x74b0('0x8')](0x0,0x2)},function(_0x7b1274,_0x1a6f53){if(_0x7b1274){return _0x2382cd(_0x7b1274);}else{return _0x462a84(_0x1a6f53);}});});}function checkTranscribeJob(_0x308b10,_0xf1ec58,_0x200f36){var _0x4e9f47;return new BPromise(function(_0xe1de21,_0x140963){logger['info'](util[_0x74b0('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x308b10['id'],_0x308b10[_0x74b0('0xa')]));return getTranscriptionJob(_0x200f36[_0x74b0('0xb')],_0x200f36['data2'],_0xf1ec58[_0x74b0('0xc')],_0x308b10['transcribeName'])[_0x74b0('0xd')](function(_0x539172){logger[_0x74b0('0xe')](util['format'](_0x74b0('0xf'),_0x308b10['id'],_0x308b10[_0x74b0('0xa')],_0x539172[_0x74b0('0x10')][_0x74b0('0x11')]));if(!_0x308b10[_0x74b0('0x12')]){switch(_0x539172[_0x74b0('0x10')][_0x74b0('0x11')]){case _0x74b0('0x13'):var _0x4a2c60={'transcribeStatus':_0x539172['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x539172[_0x74b0('0x10')]['Transcript'][_0x74b0('0x14')]};logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x15'),_0x308b10['id']));return rp({'uri':_0x539172['TranscriptionJob'][_0x74b0('0x16')][_0x74b0('0x14')],'json':!![]})[_0x74b0('0xd')](function(_0xc6c020){logger['info'](util[_0x74b0('0x9')](_0x74b0('0x17'),_0x308b10['id']));if(_0xc6c020&&_0xc6c020[_0x74b0('0x18')]&&_0xc6c020[_0x74b0('0x18')][_0x74b0('0x19')]&&_0xc6c020[_0x74b0('0x18')][_0x74b0('0x19')][_0x74b0('0x1a')]){_0x4a2c60[_0x74b0('0x12')]='';for(var _0x54e2fd=0x0;_0x54e2fd<_0xc6c020[_0x74b0('0x18')]['transcripts']['length'];_0x54e2fd++){_0x4a2c60[_0x74b0('0x12')]+=_0xc6c020[_0x74b0('0x18')][_0x74b0('0x19')][_0x54e2fd]['transcript']+'';}}return _0x308b10[_0x74b0('0x1b')](_0x4a2c60);})[_0x74b0('0xd')](function(){logger[_0x74b0('0xe')](util[_0x74b0('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x308b10['id']));if(!_0x308b10[_0x74b0('0x1c')]){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))](_0x74b0('0x1f'));}if(!_0xf1ec58[_0x74b0('0x20')]||!_0xf1ec58[_0x74b0('0x21')]||!_0xf1ec58['sentimentRegion']||!_0xf1ec58[_0x74b0('0x22')]||!_0xf1ec58['bucket']){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x4a2c60[_0x74b0('0x12')]){throw new Error(_0x74b0('0x23'));}if(_0xf1ec58[_0x74b0('0x21')]===_0x200f36['id']){return _0x200f36;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x74b0('0xd')](function(_0x2776b7){if(!_0x2776b7){throw new db['Sequelize'][(_0x74b0('0x1e'))](_0x74b0('0x24'));}if(!_0x2776b7[_0x74b0('0xb')]||!_0x2776b7[_0x74b0('0x25')]){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x4e9f47=_0x2776b7;logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x26'),_0x308b10['id']));return sentiment(_0x4e9f47['data1'],_0x4e9f47[_0x74b0('0x25')],_0xf1ec58[_0x74b0('0x27')],_0x4a2c60['fileText'],_0xf1ec58[_0x74b0('0x22')]);})[_0x74b0('0xd')](function(_0x3646fd){logger['info'](util[_0x74b0('0x9')](_0x74b0('0x28'),_0x308b10['id']));return _0x308b10[_0x74b0('0x1b')]({'sentiment':_0x3646fd['Sentiment'],'sPositive':_0x3646fd['SentimentScore'][_0x74b0('0x29')],'sNegative':_0x3646fd['SentimentScore'][_0x74b0('0x2a')],'sMixed':_0x3646fd[_0x74b0('0x2b')][_0x74b0('0x2c')],'sNeutral':_0x3646fd[_0x74b0('0x2b')][_0x74b0('0x2d')]});})[_0x74b0('0xd')](function(){logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x2e'),_0x308b10['id']));_0xe1de21();});case _0x74b0('0x2f'):return _0x308b10[_0x74b0('0x1b')]({'transcribeStatus':_0x74b0('0x2f'),'failureReason':_0x539172[_0x74b0('0x10')][_0x74b0('0x30')]})[_0x74b0('0xd')](function(){logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x2e'),_0x308b10['id']));_0xe1de21();});default:logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x31'),_0x308b10['id']));break;}}else{return BPromise[_0x74b0('0x32')]()[_0x74b0('0xd')](function(){if(!_0x308b10[_0x74b0('0x1c')]){throw new db['Sequelize'][(_0x74b0('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0xf1ec58['sentiment']||!_0xf1ec58['sentimentAccountId']||!_0xf1ec58[_0x74b0('0x27')]||!_0xf1ec58[_0x74b0('0x22')]||!_0xf1ec58[_0x74b0('0x33')]){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))](_0x74b0('0x34'));}if(!_0x308b10['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0xf1ec58[_0x74b0('0x21')]===_0x200f36['id']){return _0x200f36;}else{return db[_0x74b0('0x35')][_0x74b0('0x36')]({'where':{'id':_settings[_0x74b0('0x21')]}});}})[_0x74b0('0xd')](function(_0x589b24){if(!_0x589b24){throw new db['Sequelize']['ValidationError'](_0x74b0('0x24'));}if(!_0x589b24[_0x74b0('0xb')]||!_0x589b24[_0x74b0('0x25')]){throw new db[(_0x74b0('0x1d'))]['ValidationError'](_0x74b0('0x37'));}_0x4e9f47=_0x589b24;logger[_0x74b0('0xe')](util['format'](_0x74b0('0x26'),_0x308b10['id']));return sentiment(_0x4e9f47[_0x74b0('0xb')],_0x4e9f47['data2'],_0xf1ec58[_0x74b0('0x27')],_0x308b10['fileText'],_0xf1ec58[_0x74b0('0x22')]);})[_0x74b0('0xd')](function(_0x1516bc){logger['info'](util['format'](_0x74b0('0x28'),_0x308b10['id']));return _0x308b10['update']({'sentiment':_0x1516bc[_0x74b0('0x38')],'sPositive':_0x1516bc['SentimentScore'][_0x74b0('0x29')],'sNegative':_0x1516bc[_0x74b0('0x2b')][_0x74b0('0x2a')],'sMixed':_0x1516bc[_0x74b0('0x2b')][_0x74b0('0x2c')],'sNeutral':_0x1516bc[_0x74b0('0x2b')][_0x74b0('0x2d')],'transcribeStatus':_0x74b0('0x13')});})[_0x74b0('0xd')](function(){logger[_0x74b0('0xe')](util[_0x74b0('0x9')](_0x74b0('0x2e'),_0x308b10['id']));_0xe1de21();});}})['catch'](function(_0x16d430){if(_0x16d430){if(!_0x16d430['name']||_0x16d430[_0x74b0('0x39')]!==_0x74b0('0x3a')){logger[_0x74b0('0x3b')](util[_0x74b0('0x9')](_0x74b0('0x3c'),_0x308b10['id']),util[_0x74b0('0x3d')](_0x16d430,{'showHidden':![],'depth':null}));}}_0xe1de21();});});}function checkTranscribe(){var _0x4f133b;var _0x562e07;var _0x4edafa;return db['VoiceRecording'][_0x74b0('0x3e')]({'where':{'transcribeStatus':_0x74b0('0x3f')}})['then'](function(_0x80fe8e){if(!_0x80fe8e||!_0x80fe8e[_0x74b0('0x1a')]){throw new db[(_0x74b0('0x1d'))]['ValidationError'](_0x74b0('0x40'));}_0x4f133b=_0x80fe8e;return db[_0x74b0('0x41')][_0x74b0('0x36')]({'where':{'id':0x1}});})[_0x74b0('0xd')](function(_0x53bfb8){if(!_0x53bfb8){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))](_0x74b0('0x42'));}_0x562e07=_0x53bfb8;if(!_0x562e07[_0x74b0('0x5')]||!_0x562e07['transcribeAccountId']||!_0x562e07[_0x74b0('0xc')]||!_0x562e07[_0x74b0('0x22')]||!_0x562e07[_0x74b0('0x33')]){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))](_0x74b0('0x43'));}return db['CloudProvider']['findOne']({'where':{'id':_0x562e07['transcribeAccountId']}});})[_0x74b0('0xd')](function(_0x1a11ca){if(!_0x1a11ca){throw new db[(_0x74b0('0x1d'))][(_0x74b0('0x1e'))](_0x74b0('0x24'));}if(!_0x1a11ca[_0x74b0('0xb')]||!_0x1a11ca['data2']){throw new db['Sequelize'][(_0x74b0('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x4edafa=_0x1a11ca;var _0x9b5c32=[];_0x4f133b[_0x74b0('0x44')](function(_0x117daa){_0x9b5c32[_0x74b0('0x45')](checkTranscribeJob(_0x117daa,_0x562e07,_0x4edafa));});return BPromise['all'](_0x9b5c32);})['catch'](function(_0x27e4ce){if(_0x27e4ce){if(!_0x27e4ce[_0x74b0('0x39')]||_0x27e4ce[_0x74b0('0x39')]!=='SequelizeValidationError'){logger[_0x74b0('0x3b')](util['inspect'](_0x27e4ce,{'showHidden':![],'depth':null}));}}});}exports[_0x74b0('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};