Built motion from commit (unavailable).|2.5.2
[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 _0x6270=['error','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','format','[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','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','bucket','Sequelize','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Negative','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','forEach','push'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6270,0x125));var _0x0627=function(_0x552c9e,_0x221cf5){_0x552c9e=_0x552c9e-0x0;var _0x4c8401=_0x6270[_0x552c9e];return _0x4c8401;};var _=require(_0x0627('0x0'));var AWS=require(_0x0627('0x1'));var rp=require(_0x0627('0x2'));var util=require(_0x0627('0x3'));var BPromise=require(_0x0627('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x0627('0x5'))(_0x0627('0x6'));function getTranscriptionJob(_0x40a66c,_0x56f712,_0x1fcbd4,_0x51e20a){return new Promise(function(_0x38ac46,_0x143805){var _0xb32398=new AWS[(_0x0627('0x7'))]({'accessKeyId':_0x56f712,'secretAccessKey':_0x40a66c,'region':_0x1fcbd4});_0xb32398[_0x0627('0x8')]({'TranscriptionJobName':_0x51e20a},function(_0x5a3e16,_0xb5ffc4){if(_0x5a3e16){return _0x143805(_0x5a3e16);}else{return _0x38ac46(_0xb5ffc4);}});});}function sentiment(_0x2994e3,_0x182045,_0x18fd25,_0x25d412,_0x5ccfb1){return new Promise(function(_0x4fca3b,_0x55fe1d){var _0x4e361b=new AWS[(_0x0627('0x9'))]({'accessKeyId':_0x182045,'secretAccessKey':_0x2994e3,'region':_0x18fd25});_0x4e361b[_0x0627('0xa')]({'Text':_0x25d412,'LanguageCode':_0x5ccfb1['substring'](0x0,0x2)},function(_0xa87335,_0x420419){if(_0xa87335){return _0x55fe1d(_0xa87335);}else{return _0x4fca3b(_0x420419);}});});}function checkTranscribeJob(_0x235903,_0x5d5f0d,_0x287724){var _0x4967ae;return new BPromise(function(_0x22f9e8,_0x144bea){logger[_0x0627('0xb')](util['format'](_0x0627('0xc'),_0x235903['id'],_0x235903[_0x0627('0xd')]));return getTranscriptionJob(_0x287724[_0x0627('0xe')],_0x287724[_0x0627('0xf')],_0x5d5f0d[_0x0627('0x10')],_0x235903['transcribeName'])[_0x0627('0x11')](function(_0x54d1f9){logger[_0x0627('0xb')](util[_0x0627('0x12')](_0x0627('0x13'),_0x235903['id'],_0x235903['transcribeName'],_0x54d1f9[_0x0627('0x14')]['TranscriptionJobStatus']));if(!_0x235903[_0x0627('0x15')]){switch(_0x54d1f9[_0x0627('0x14')][_0x0627('0x16')]){case _0x0627('0x17'):var _0x20c62b={'transcribeStatus':_0x54d1f9['TranscriptionJob'][_0x0627('0x16')],'fileUri':_0x54d1f9[_0x0627('0x14')][_0x0627('0x18')][_0x0627('0x19')]};logger['info'](util[_0x0627('0x12')](_0x0627('0x1a'),_0x235903['id']));return rp({'uri':_0x54d1f9[_0x0627('0x14')][_0x0627('0x18')][_0x0627('0x19')],'json':!![]})[_0x0627('0x11')](function(_0x26a501){logger['info'](util[_0x0627('0x12')](_0x0627('0x1b'),_0x235903['id']));if(_0x26a501&&_0x26a501[_0x0627('0x1c')]&&_0x26a501[_0x0627('0x1c')][_0x0627('0x1d')]&&_0x26a501[_0x0627('0x1c')][_0x0627('0x1d')][_0x0627('0x1e')]){_0x20c62b[_0x0627('0x15')]='';for(var _0x4a2443=0x0;_0x4a2443<_0x26a501['results'][_0x0627('0x1d')]['length'];_0x4a2443++){_0x20c62b[_0x0627('0x15')]+=_0x26a501[_0x0627('0x1c')][_0x0627('0x1d')][_0x4a2443]['transcript']+'';}}return _0x235903[_0x0627('0x1f')](_0x20c62b);})[_0x0627('0x11')](function(){logger[_0x0627('0xb')](util[_0x0627('0x12')](_0x0627('0x20'),_0x235903['id']));if(!_0x235903[_0x0627('0x21')]){throw new db['Sequelize'][(_0x0627('0x22'))](_0x0627('0x23'));}if(!_0x5d5f0d[_0x0627('0x24')]||!_0x5d5f0d['sentimentAccountId']||!_0x5d5f0d[_0x0627('0x25')]||!_0x5d5f0d['language']||!_0x5d5f0d[_0x0627('0x26')]){throw new db[(_0x0627('0x27'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x20c62b[_0x0627('0x15')]){throw new Error(_0x0627('0x28'));}if(_0x5d5f0d[_0x0627('0x29')]===_0x287724['id']){return _0x287724;}else{return db[_0x0627('0x2a')][_0x0627('0x2b')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x429569){if(!_0x429569){throw new db[(_0x0627('0x27'))][(_0x0627('0x22'))](_0x0627('0x2c'));}if(!_0x429569[_0x0627('0xe')]||!_0x429569[_0x0627('0xf')]){throw new db[(_0x0627('0x27'))][(_0x0627('0x22'))](_0x0627('0x2d'));}_0x4967ae=_0x429569;logger[_0x0627('0xb')](util[_0x0627('0x12')](_0x0627('0x2e'),_0x235903['id']));return sentiment(_0x4967ae[_0x0627('0xe')],_0x4967ae[_0x0627('0xf')],_0x5d5f0d[_0x0627('0x25')],_0x20c62b[_0x0627('0x15')],_0x5d5f0d[_0x0627('0x2f')]);})[_0x0627('0x11')](function(_0x2ada78){logger[_0x0627('0xb')](util[_0x0627('0x12')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x235903['id']));return _0x235903['update']({'sentiment':_0x2ada78[_0x0627('0x30')],'sPositive':_0x2ada78[_0x0627('0x31')][_0x0627('0x32')],'sNegative':_0x2ada78[_0x0627('0x31')]['Negative'],'sMixed':_0x2ada78['SentimentScore'][_0x0627('0x33')],'sNeutral':_0x2ada78[_0x0627('0x31')][_0x0627('0x34')]});})[_0x0627('0x11')](function(){logger[_0x0627('0xb')](util[_0x0627('0x12')](_0x0627('0x20'),_0x235903['id']));_0x22f9e8();});case _0x0627('0x35'):return _0x235903['update']({'transcribeStatus':'FAILED','failureReason':_0x54d1f9[_0x0627('0x14')][_0x0627('0x36')]})['then'](function(){logger['info'](util[_0x0627('0x12')](_0x0627('0x20'),_0x235903['id']));_0x22f9e8();});default:logger['info'](util[_0x0627('0x12')](_0x0627('0x37'),_0x235903['id']));break;}}else{return BPromise[_0x0627('0x38')]()['then'](function(){if(!_0x235903['tempSentiment']){throw new db[(_0x0627('0x27'))][(_0x0627('0x22'))](_0x0627('0x23'));}if(!_0x5d5f0d['sentiment']||!_0x5d5f0d[_0x0627('0x29')]||!_0x5d5f0d[_0x0627('0x25')]||!_0x5d5f0d[_0x0627('0x2f')]||!_0x5d5f0d['bucket']){throw new db[(_0x0627('0x27'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x235903[_0x0627('0x15')]){throw new Error(_0x0627('0x28'));}if(_0x5d5f0d[_0x0627('0x29')]===_0x287724['id']){return _0x287724;}else{return db[_0x0627('0x2a')][_0x0627('0x2b')]({'where':{'id':_settings[_0x0627('0x29')]}});}})['then'](function(_0x9a466e){if(!_0x9a466e){throw new db[(_0x0627('0x27'))]['ValidationError'](_0x0627('0x2c'));}if(!_0x9a466e[_0x0627('0xe')]||!_0x9a466e[_0x0627('0xf')]){throw new db['Sequelize'][(_0x0627('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x4967ae=_0x9a466e;logger['info'](util[_0x0627('0x12')](_0x0627('0x2e'),_0x235903['id']));return sentiment(_0x4967ae[_0x0627('0xe')],_0x4967ae[_0x0627('0xf')],_0x5d5f0d[_0x0627('0x25')],_0x235903[_0x0627('0x15')],_0x5d5f0d[_0x0627('0x2f')]);})[_0x0627('0x11')](function(_0x2298e3){logger[_0x0627('0xb')](util['format'](_0x0627('0x39'),_0x235903['id']));return _0x235903[_0x0627('0x1f')]({'sentiment':_0x2298e3[_0x0627('0x30')],'sPositive':_0x2298e3[_0x0627('0x31')][_0x0627('0x32')],'sNegative':_0x2298e3['SentimentScore'][_0x0627('0x3a')],'sMixed':_0x2298e3[_0x0627('0x31')]['Mixed'],'sNeutral':_0x2298e3[_0x0627('0x31')]['Neutral'],'transcribeStatus':_0x0627('0x17')});})[_0x0627('0x11')](function(){logger[_0x0627('0xb')](util[_0x0627('0x12')](_0x0627('0x20'),_0x235903['id']));_0x22f9e8();});}})[_0x0627('0x3b')](function(_0xb730e9){if(_0xb730e9){if(!_0xb730e9[_0x0627('0x3c')]||_0xb730e9[_0x0627('0x3c')]!==_0x0627('0x3d')){logger['error'](util[_0x0627('0x12')](_0x0627('0x3e'),_0x235903['id']),util[_0x0627('0x3f')](_0xb730e9,{'showHidden':![],'depth':null}));}}_0x22f9e8();});});}function checkTranscribe(){var _0x3a4b3e;var _0x34780d;var _0x1ad1c7;return db[_0x0627('0x40')][_0x0627('0x41')]({'where':{'transcribeStatus':_0x0627('0x42')}})[_0x0627('0x11')](function(_0x4e04df){if(!_0x4e04df||!_0x4e04df[_0x0627('0x1e')]){throw new db[(_0x0627('0x27'))][(_0x0627('0x22'))]('No\x20transcribe\x20job\x20to\x20check');}_0x3a4b3e=_0x4e04df;return db[_0x0627('0x43')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x460b84){if(!_0x460b84){throw new db['Sequelize']['ValidationError'](_0x0627('0x44'));}_0x34780d=_0x460b84;if(!_0x34780d['transcribe']||!_0x34780d['transcribeAccountId']||!_0x34780d[_0x0627('0x10')]||!_0x34780d[_0x0627('0x2f')]||!_0x34780d[_0x0627('0x26')]){throw new db[(_0x0627('0x27'))]['ValidationError'](_0x0627('0x45'));}return db[_0x0627('0x2a')][_0x0627('0x2b')]({'where':{'id':_0x34780d['transcribeAccountId']}});})[_0x0627('0x11')](function(_0x3cd33c){if(!_0x3cd33c){throw new db['Sequelize']['ValidationError'](_0x0627('0x2c'));}if(!_0x3cd33c[_0x0627('0xe')]||!_0x3cd33c[_0x0627('0xf')]){throw new db[(_0x0627('0x27'))][(_0x0627('0x22'))](_0x0627('0x2d'));}_0x1ad1c7=_0x3cd33c;var _0x250e12=[];_0x3a4b3e[_0x0627('0x46')](function(_0x3e5f83){_0x250e12[_0x0627('0x47')](checkTranscribeJob(_0x3e5f83,_0x34780d,_0x1ad1c7));});return BPromise['all'](_0x250e12);})[_0x0627('0x3b')](function(_0x3860e8){if(_0x3860e8){if(!_0x3860e8[_0x0627('0x3c')]||_0x3860e8[_0x0627('0x3c')]!=='SequelizeValidationError'){logger[_0x0627('0x48')](util[_0x0627('0x3f')](_0x3860e8,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};