efcae40a244f9e7f590518415e1c46be59223767
[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 _0xa958=['push','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','format','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','ValidationError','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','sentiment','Transcript\x20not\x20available','CloudProvider','findOne','Mixed','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa958,0x94));var _0x8a95=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xa958[_0x2dea24];return _0x309d58;};var _=require(_0x8a95('0x0'));var AWS=require('aws-sdk');var rp=require(_0x8a95('0x1'));var util=require(_0x8a95('0x2'));var BPromise=require(_0x8a95('0x3'));var db=require(_0x8a95('0x4'))['db'];var logger=require(_0x8a95('0x5'))(_0x8a95('0x6'));function getTranscriptionJob(_0x5f3024,_0x4db56d,_0x103d7a,_0xc65a39){return new Promise(function(_0x403364,_0x141f82){var _0x387db4=new AWS[(_0x8a95('0x7'))]({'accessKeyId':_0x4db56d,'secretAccessKey':_0x5f3024,'region':_0x103d7a});_0x387db4[_0x8a95('0x8')]({'TranscriptionJobName':_0xc65a39},function(_0x49287d,_0xe03b31){if(_0x49287d){return _0x141f82(_0x49287d);}else{return _0x403364(_0xe03b31);}});});}function sentiment(_0x1e5a06,_0x1f944c,_0x240b22,_0x16a20c,_0x20ad57){return new Promise(function(_0x1959de,_0x5c4947){var _0x27dfce=new AWS[(_0x8a95('0x9'))]({'accessKeyId':_0x1f944c,'secretAccessKey':_0x1e5a06,'region':_0x240b22});_0x27dfce['detectSentiment']({'Text':_0x16a20c,'LanguageCode':_0x20ad57[_0x8a95('0xa')](0x0,0x2)},function(_0x5bb2f2,_0x59b6d5){if(_0x5bb2f2){return _0x5c4947(_0x5bb2f2);}else{return _0x1959de(_0x59b6d5);}});});}function checkTranscribeJob(_0x108b6f,_0x4cb5a5,_0x2fdf66){var _0x1579cd;return new BPromise(function(_0x49439b,_0x3695a2){logger[_0x8a95('0xb')](util['format'](_0x8a95('0xc'),_0x108b6f['id'],_0x108b6f[_0x8a95('0xd')]));return getTranscriptionJob(_0x2fdf66[_0x8a95('0xe')],_0x2fdf66[_0x8a95('0xf')],_0x4cb5a5[_0x8a95('0x10')],_0x108b6f[_0x8a95('0xd')])[_0x8a95('0x11')](function(_0x52e3d9){logger[_0x8a95('0xb')](util['format'](_0x8a95('0x12'),_0x108b6f['id'],_0x108b6f['transcribeName'],_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x14')]));if(!_0x108b6f[_0x8a95('0x15')]){switch(_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x14')]){case _0x8a95('0x16'):var _0x3ce62a={'transcribeStatus':_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x14')],'fileUri':_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x17')][_0x8a95('0x18')]};logger[_0x8a95('0xb')](util[_0x8a95('0x19')](_0x8a95('0x1a'),_0x108b6f['id']));return rp({'uri':_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x17')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x476c2c){logger[_0x8a95('0xb')](util[_0x8a95('0x19')](_0x8a95('0x1b'),_0x108b6f['id']));if(_0x476c2c&&_0x476c2c[_0x8a95('0x1c')]&&_0x476c2c[_0x8a95('0x1c')]['transcripts']&&_0x476c2c['results'][_0x8a95('0x1d')][_0x8a95('0x1e')]){_0x3ce62a[_0x8a95('0x15')]='';for(var _0x23130a=0x0;_0x23130a<_0x476c2c[_0x8a95('0x1c')][_0x8a95('0x1d')][_0x8a95('0x1e')];_0x23130a++){_0x3ce62a[_0x8a95('0x15')]+=_0x476c2c[_0x8a95('0x1c')][_0x8a95('0x1d')][_0x23130a]['transcript']+'';}}return _0x108b6f[_0x8a95('0x1f')](_0x3ce62a);})[_0x8a95('0x11')](function(){logger['info'](util[_0x8a95('0x19')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x108b6f['id']));if(!_0x108b6f['tempSentiment']){throw new db[(_0x8a95('0x20'))]['ValidationError'](_0x8a95('0x21'));}if(!_0x4cb5a5['sentiment']||!_0x4cb5a5[_0x8a95('0x22')]||!_0x4cb5a5[_0x8a95('0x23')]||!_0x4cb5a5[_0x8a95('0x24')]||!_0x4cb5a5[_0x8a95('0x25')]){throw new db[(_0x8a95('0x20'))]['ValidationError'](_0x8a95('0x26'));}if(!_0x3ce62a['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x4cb5a5[_0x8a95('0x22')]===_0x2fdf66['id']){return _0x2fdf66;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x8a95('0x22')]}});}})[_0x8a95('0x11')](function(_0x3fbad3){if(!_0x3fbad3){throw new db[(_0x8a95('0x20'))][(_0x8a95('0x27'))](_0x8a95('0x28'));}if(!_0x3fbad3[_0x8a95('0xe')]||!_0x3fbad3[_0x8a95('0xf')]){throw new db[(_0x8a95('0x20'))][(_0x8a95('0x27'))](_0x8a95('0x29'));}_0x1579cd=_0x3fbad3;logger[_0x8a95('0xb')](util[_0x8a95('0x19')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x108b6f['id']));return sentiment(_0x1579cd[_0x8a95('0xe')],_0x1579cd[_0x8a95('0xf')],_0x4cb5a5['sentimentRegion'],_0x3ce62a[_0x8a95('0x15')],_0x4cb5a5[_0x8a95('0x24')]);})[_0x8a95('0x11')](function(_0x5c8c85){logger[_0x8a95('0xb')](util[_0x8a95('0x19')](_0x8a95('0x2a'),_0x108b6f['id']));return _0x108b6f[_0x8a95('0x1f')]({'sentiment':_0x5c8c85[_0x8a95('0x2b')],'sPositive':_0x5c8c85[_0x8a95('0x2c')][_0x8a95('0x2d')],'sNegative':_0x5c8c85['SentimentScore'][_0x8a95('0x2e')],'sMixed':_0x5c8c85['SentimentScore']['Mixed'],'sNeutral':_0x5c8c85['SentimentScore']['Neutral']});})['then'](function(){logger['info'](util[_0x8a95('0x19')](_0x8a95('0x2f'),_0x108b6f['id']));_0x49439b();});case _0x8a95('0x30'):return _0x108b6f[_0x8a95('0x1f')]({'transcribeStatus':_0x8a95('0x30'),'failureReason':_0x52e3d9[_0x8a95('0x13')][_0x8a95('0x31')]})[_0x8a95('0x11')](function(){logger['info'](util[_0x8a95('0x19')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x108b6f['id']));_0x49439b();});default:logger[_0x8a95('0xb')](util[_0x8a95('0x19')](_0x8a95('0x32'),_0x108b6f['id']));break;}}else{return BPromise[_0x8a95('0x33')]()[_0x8a95('0x11')](function(){if(!_0x108b6f[_0x8a95('0x34')]){throw new db[(_0x8a95('0x20'))][(_0x8a95('0x27'))](_0x8a95('0x21'));}if(!_0x4cb5a5[_0x8a95('0x35')]||!_0x4cb5a5[_0x8a95('0x22')]||!_0x4cb5a5['sentimentRegion']||!_0x4cb5a5[_0x8a95('0x24')]||!_0x4cb5a5['bucket']){throw new db[(_0x8a95('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x108b6f[_0x8a95('0x15')]){throw new Error(_0x8a95('0x36'));}if(_0x4cb5a5[_0x8a95('0x22')]===_0x2fdf66['id']){return _0x2fdf66;}else{return db[_0x8a95('0x37')][_0x8a95('0x38')]({'where':{'id':_settings[_0x8a95('0x22')]}});}})['then'](function(_0xab4e60){if(!_0xab4e60){throw new db[(_0x8a95('0x20'))]['ValidationError'](_0x8a95('0x28'));}if(!_0xab4e60[_0x8a95('0xe')]||!_0xab4e60[_0x8a95('0xf')]){throw new db[(_0x8a95('0x20'))][(_0x8a95('0x27'))](_0x8a95('0x29'));}_0x1579cd=_0xab4e60;logger['info'](util[_0x8a95('0x19')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x108b6f['id']));return sentiment(_0x1579cd[_0x8a95('0xe')],_0x1579cd[_0x8a95('0xf')],_0x4cb5a5[_0x8a95('0x23')],_0x108b6f['fileText'],_0x4cb5a5[_0x8a95('0x24')]);})[_0x8a95('0x11')](function(_0x51d8f2){logger['info'](util[_0x8a95('0x19')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x108b6f['id']));return _0x108b6f[_0x8a95('0x1f')]({'sentiment':_0x51d8f2[_0x8a95('0x2b')],'sPositive':_0x51d8f2['SentimentScore'][_0x8a95('0x2d')],'sNegative':_0x51d8f2[_0x8a95('0x2c')][_0x8a95('0x2e')],'sMixed':_0x51d8f2[_0x8a95('0x2c')][_0x8a95('0x39')],'sNeutral':_0x51d8f2['SentimentScore']['Neutral'],'transcribeStatus':_0x8a95('0x16')});})['then'](function(){logger[_0x8a95('0xb')](util[_0x8a95('0x19')](_0x8a95('0x2f'),_0x108b6f['id']));_0x49439b();});}})[_0x8a95('0x3a')](function(_0x502294){if(_0x502294){if(!_0x502294[_0x8a95('0x3b')]||_0x502294[_0x8a95('0x3b')]!==_0x8a95('0x3c')){logger[_0x8a95('0x3d')](util[_0x8a95('0x19')](_0x8a95('0x3e'),_0x108b6f['id']),util[_0x8a95('0x3f')](_0x502294,{'showHidden':![],'depth':null}));}}_0x49439b();});});}function checkTranscribe(){var _0x7a794d;var _0x4dacc8;var _0x417212;return db['VoiceRecording'][_0x8a95('0x40')]({'where':{'transcribeStatus':_0x8a95('0x41')}})[_0x8a95('0x11')](function(_0x3b58a1){if(!_0x3b58a1||!_0x3b58a1['length']){throw new db['Sequelize'][(_0x8a95('0x27'))]('No\x20transcribe\x20job\x20to\x20check');}_0x7a794d=_0x3b58a1;return db[_0x8a95('0x42')][_0x8a95('0x38')]({'where':{'id':0x1}});})[_0x8a95('0x11')](function(_0x59470c){if(!_0x59470c){throw new db[(_0x8a95('0x20'))][(_0x8a95('0x27'))](_0x8a95('0x43'));}_0x4dacc8=_0x59470c;if(!_0x4dacc8[_0x8a95('0x6')]||!_0x4dacc8[_0x8a95('0x44')]||!_0x4dacc8[_0x8a95('0x10')]||!_0x4dacc8[_0x8a95('0x24')]||!_0x4dacc8[_0x8a95('0x25')]){throw new db[(_0x8a95('0x20'))]['ValidationError'](_0x8a95('0x45'));}return db[_0x8a95('0x37')][_0x8a95('0x38')]({'where':{'id':_0x4dacc8['transcribeAccountId']}});})[_0x8a95('0x11')](function(_0x3784c2){if(!_0x3784c2){throw new db[(_0x8a95('0x20'))]['ValidationError'](_0x8a95('0x28'));}if(!_0x3784c2[_0x8a95('0xe')]||!_0x3784c2[_0x8a95('0xf')]){throw new db['Sequelize'][(_0x8a95('0x27'))](_0x8a95('0x29'));}_0x417212=_0x3784c2;var _0x5307fb=[];_0x7a794d[_0x8a95('0x46')](function(_0x1e22e8){_0x5307fb[_0x8a95('0x47')](checkTranscribeJob(_0x1e22e8,_0x4dacc8,_0x417212));});return BPromise['all'](_0x5307fb);})[_0x8a95('0x3a')](function(_0x47bb7f){if(_0x47bb7f){if(!_0x47bb7f[_0x8a95('0x3b')]||_0x47bb7f[_0x8a95('0x3b')]!==_0x8a95('0x3c')){logger['error'](util[_0x8a95('0x3f')](_0x47bb7f,{'showHidden':![],'depth':null}));}}});}exports[_0x8a95('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};