556799df0ad35f860fc5523d04396a6b39c20524
[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 _0x36ee=['[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured','all','catch','error','inspect','start','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','format','data1','data2','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','ValidationError','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','sentiment','language','bucket','Transcript\x20not\x20available','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Negative','COMPLETED','name','SequelizeValidationError'];(function(_0x211307,_0x588bbd){var _0xc38a90=function(_0x5b55fa){while(--_0x5b55fa){_0x211307['push'](_0x211307['shift']());}};_0xc38a90(++_0x588bbd);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0xe36e('0x0'));var util=require('util');var BPromise=require(_0xe36e('0x1'));var db=require(_0xe36e('0x2'))['db'];var logger=require(_0xe36e('0x3'))(_0xe36e('0x4'));function getTranscriptionJob(_0x567a84,_0x1118af,_0x29e692,_0x3f29e1){return new Promise(function(_0x25a07d,_0x190404){var _0x21be0b=new AWS[(_0xe36e('0x5'))]({'accessKeyId':_0x1118af,'secretAccessKey':_0x567a84,'region':_0x29e692});_0x21be0b['getTranscriptionJob']({'TranscriptionJobName':_0x3f29e1},function(_0x74b4b7,_0x4aebdd){if(_0x74b4b7){return _0x190404(_0x74b4b7);}else{return _0x25a07d(_0x4aebdd);}});});}function sentiment(_0x2236e9,_0x123c16,_0x46f239,_0x47ce3a,_0xf119e4){return new Promise(function(_0x48981b,_0x2e968d){var _0x2133cf=new AWS[(_0xe36e('0x6'))]({'accessKeyId':_0x123c16,'secretAccessKey':_0x2236e9,'region':_0x46f239});_0x2133cf[_0xe36e('0x7')]({'Text':_0x47ce3a,'LanguageCode':_0xf119e4[_0xe36e('0x8')](0x0,0x2)},function(_0x1f7233,_0x3f6d7f){if(_0x1f7233){return _0x2e968d(_0x1f7233);}else{return _0x48981b(_0x3f6d7f);}});});}function checkTranscribeJob(_0x265473,_0x4fbdb2,_0x32981d){var _0x27841e;return new BPromise(function(_0x23abfb,_0x1fdea2){logger['info'](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x265473['id'],_0x265473['transcribeName']));return getTranscriptionJob(_0x32981d[_0xe36e('0xa')],_0x32981d[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0xc')],_0x265473[_0xe36e('0xd')])[_0xe36e('0xe')](function(_0x924cd5){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x10'),_0x265473['id'],_0x265473[_0xe36e('0xd')],_0x924cd5['TranscriptionJob'][_0xe36e('0x11')]));if(!_0x265473[_0xe36e('0x12')]){switch(_0x924cd5['TranscriptionJob'][_0xe36e('0x11')]){case'COMPLETED':var _0x471400={'transcribeStatus':_0x924cd5[_0xe36e('0x13')]['TranscriptionJobStatus'],'fileUri':_0x924cd5[_0xe36e('0x13')][_0xe36e('0x14')][_0xe36e('0x15')]};logger['info'](util[_0xe36e('0x9')](_0xe36e('0x16'),_0x265473['id']));return rp({'uri':_0x924cd5[_0xe36e('0x13')][_0xe36e('0x14')][_0xe36e('0x15')],'json':!![]})[_0xe36e('0xe')](function(_0x4f438a){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x17'),_0x265473['id']));if(_0x4f438a&&_0x4f438a[_0xe36e('0x18')]&&_0x4f438a[_0xe36e('0x18')]['transcripts']&&_0x4f438a['results'][_0xe36e('0x19')][_0xe36e('0x1a')]){_0x471400[_0xe36e('0x12')]='';for(var _0xb32195=0x0;_0xb32195<_0x4f438a[_0xe36e('0x18')][_0xe36e('0x19')][_0xe36e('0x1a')];_0xb32195++){_0x471400['fileText']+=_0x4f438a[_0xe36e('0x18')][_0xe36e('0x19')][_0xb32195][_0xe36e('0x1b')]+'';}}return _0x265473[_0xe36e('0x1c')](_0x471400);})['then'](function(){logger[_0xe36e('0xf')](util['format'](_0xe36e('0x1d'),_0x265473['id']));if(!_0x265473['tempSentiment']){throw new db[(_0xe36e('0x1e'))]['ValidationError'](_0xe36e('0x1f'));}if(!_0x4fbdb2['sentiment']||!_0x4fbdb2[_0xe36e('0x20')]||!_0x4fbdb2['sentimentRegion']||!_0x4fbdb2['language']||!_0x4fbdb2['bucket']){throw new db['Sequelize'][(_0xe36e('0x21'))](_0xe36e('0x22'));}if(!_0x471400['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x4fbdb2[_0xe36e('0x20')]===_0x32981d['id']){return _0x32981d;}else{return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_settings[_0xe36e('0x20')]}});}})[_0xe36e('0xe')](function(_0x4759b4){if(!_0x4759b4){throw new db['Sequelize'][(_0xe36e('0x21'))](_0xe36e('0x25'));}if(!_0x4759b4['data1']||!_0x4759b4[_0xe36e('0xb')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x27841e=_0x4759b4;logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x27'),_0x265473['id']));return sentiment(_0x27841e[_0xe36e('0xa')],_0x27841e[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0x28')],_0x471400[_0xe36e('0x12')],_0x4fbdb2['language']);})[_0xe36e('0xe')](function(_0x59231e){logger['info'](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x265473['id']));return _0x265473[_0xe36e('0x1c')]({'sentiment':_0x59231e[_0xe36e('0x29')],'sPositive':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2b')],'sNegative':_0x59231e['SentimentScore']['Negative'],'sMixed':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2c')],'sNeutral':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2d')]});})['then'](function(){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});case'FAILED':return _0x265473[_0xe36e('0x1c')]({'transcribeStatus':_0xe36e('0x2e'),'failureReason':_0x924cd5['TranscriptionJob'][_0xe36e('0x2f')]})[_0xe36e('0xe')](function(){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});default:logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x30'),_0x265473['id']));break;}}else{return BPromise[_0xe36e('0x31')]()[_0xe36e('0xe')](function(){if(!_0x265473[_0xe36e('0x32')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x4fbdb2[_0xe36e('0x33')]||!_0x4fbdb2[_0xe36e('0x20')]||!_0x4fbdb2[_0xe36e('0x28')]||!_0x4fbdb2[_0xe36e('0x34')]||!_0x4fbdb2[_0xe36e('0x35')]){throw new db['Sequelize']['ValidationError'](_0xe36e('0x22'));}if(!_0x265473[_0xe36e('0x12')]){throw new Error(_0xe36e('0x36'));}if(_0x4fbdb2[_0xe36e('0x20')]===_0x32981d['id']){return _0x32981d;}else{return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_settings[_0xe36e('0x20')]}});}})[_0xe36e('0xe')](function(_0x48066c){if(!_0x48066c){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x48066c[_0xe36e('0xa')]||!_0x48066c['data2']){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x27841e=_0x48066c;logger[_0xe36e('0xf')](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x265473['id']));return sentiment(_0x27841e[_0xe36e('0xa')],_0x27841e[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0x28')],_0x265473[_0xe36e('0x12')],_0x4fbdb2[_0xe36e('0x34')]);})[_0xe36e('0xe')](function(_0x569809){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x37'),_0x265473['id']));return _0x265473[_0xe36e('0x1c')]({'sentiment':_0x569809[_0xe36e('0x29')],'sPositive':_0x569809['SentimentScore'][_0xe36e('0x2b')],'sNegative':_0x569809[_0xe36e('0x2a')][_0xe36e('0x38')],'sMixed':_0x569809[_0xe36e('0x2a')][_0xe36e('0x2c')],'sNeutral':_0x569809[_0xe36e('0x2a')][_0xe36e('0x2d')],'transcribeStatus':_0xe36e('0x39')});})[_0xe36e('0xe')](function(){logger['info'](util['format'](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});}})['catch'](function(_0x1f697f){if(_0x1f697f){if(!_0x1f697f[_0xe36e('0x3a')]||_0x1f697f[_0xe36e('0x3a')]!==_0xe36e('0x3b')){logger['error'](util[_0xe36e('0x9')](_0xe36e('0x3c'),_0x265473['id']),util['inspect'](_0x1f697f,{'showHidden':![],'depth':null}));}}_0x23abfb();});});}function checkTranscribe(){var _0x125e62;var _0x40634a;var _0x2c26e6;return db[_0xe36e('0x3d')][_0xe36e('0x3e')]({'where':{'transcribeStatus':_0xe36e('0x3f')}})[_0xe36e('0xe')](function(_0xaf917c){if(!_0xaf917c||!_0xaf917c[_0xe36e('0x1a')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x40'));}_0x125e62=_0xaf917c;return db[_0xe36e('0x41')][_0xe36e('0x24')]({'where':{'id':0x1}});})[_0xe36e('0xe')](function(_0x5678d3){if(!_0x5678d3){throw new db[(_0xe36e('0x1e'))]['ValidationError']('Settings\x20not\x20available');}_0x40634a=_0x5678d3;if(!_0x40634a[_0xe36e('0x4')]||!_0x40634a[_0xe36e('0x42')]||!_0x40634a['transcribeRegion']||!_0x40634a[_0xe36e('0x34')]||!_0x40634a[_0xe36e('0x35')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x43'));}return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_0x40634a[_0xe36e('0x42')]}});})[_0xe36e('0xe')](function(_0x55d190){if(!_0x55d190){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x55d190[_0xe36e('0xa')]||!_0x55d190[_0xe36e('0xb')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x2c26e6=_0x55d190;var _0x53758e=[];_0x125e62['forEach'](function(_0x56f5b6){_0x53758e['push'](checkTranscribeJob(_0x56f5b6,_0x40634a,_0x2c26e6));});return BPromise[_0xe36e('0x44')](_0x53758e);})[_0xe36e('0x45')](function(_0x283365){if(_0x283365){if(!_0x283365[_0xe36e('0x3a')]||_0x283365[_0xe36e('0x3a')]!==_0xe36e('0x3b')){logger[_0xe36e('0x46')](util[_0xe36e('0x47')](_0x283365,{'showHidden':![],'depth':null}));}}});}exports[_0xe36e('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};