aefa477ab6593534968a3c8257bf03a7935a7e37
[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 _0x5d31=['[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','Sentiment\x20Analysis\x20not\x20requested','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeRegion','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','start','aws-sdk','request-promise','util','../../mysqldb','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','[RECORDING:%d]\x20Get\x20transcript','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','sentiment','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','ValidationError','Cloud\x20Provider\x20not\x20configured','language'];(function(_0x1a9eb8,_0x32c795){var _0xe8be84=function(_0x2350b6){while(--_0x2350b6){_0x1a9eb8['push'](_0x1a9eb8['shift']());}};_0xe8be84(++_0x32c795);}(_0x5d31,0xf7));var _0x15d3=function(_0x4dd71c,_0x23a24e){_0x4dd71c=_0x4dd71c-0x0;var _0x8e4e36=_0x5d31[_0x4dd71c];return _0x8e4e36;};var _=require('lodash');var AWS=require(_0x15d3('0x0'));var rp=require(_0x15d3('0x1'));var util=require(_0x15d3('0x2'));var BPromise=require('bluebird');var db=require(_0x15d3('0x3'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x445652,_0x2a8bbe,_0x16bee7,_0x242755){return new Promise(function(_0x5ebd77,_0x8448c4){var _0xe5e074=new AWS[(_0x15d3('0x4'))]({'accessKeyId':_0x2a8bbe,'secretAccessKey':_0x445652,'region':_0x16bee7});_0xe5e074[_0x15d3('0x5')]({'TranscriptionJobName':_0x242755},function(_0x52b238,_0x3e173c){if(_0x52b238){return _0x8448c4(_0x52b238);}else{return _0x5ebd77(_0x3e173c);}});});}function sentiment(_0x511f14,_0x51718f,_0x26cf8a,_0x4e158f,_0xa999ab){return new Promise(function(_0x4f7227,_0x582816){var _0x3afd0f=new AWS[(_0x15d3('0x6'))]({'accessKeyId':_0x51718f,'secretAccessKey':_0x511f14,'region':_0x26cf8a});_0x3afd0f[_0x15d3('0x7')]({'Text':_0x4e158f,'LanguageCode':_0xa999ab[_0x15d3('0x8')](0x0,0x2)},function(_0x147137,_0x3088a7){if(_0x147137){return _0x582816(_0x147137);}else{return _0x4f7227(_0x3088a7);}});});}function checkTranscribeJob(_0x4a47f7,_0x219867,_0x1397d8){var _0x2811b5;return new BPromise(function(_0x209104,_0x36ab99){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0xb'),_0x4a47f7['id'],_0x4a47f7[_0x15d3('0xc')]));return getTranscriptionJob(_0x1397d8[_0x15d3('0xd')],_0x1397d8[_0x15d3('0xe')],_0x219867['transcribeRegion'],_0x4a47f7[_0x15d3('0xc')])[_0x15d3('0xf')](function(_0x5bbfef){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x10'),_0x4a47f7['id'],_0x4a47f7[_0x15d3('0xc')],_0x5bbfef[_0x15d3('0x11')][_0x15d3('0x12')]));if(!_0x4a47f7[_0x15d3('0x13')]){switch(_0x5bbfef[_0x15d3('0x11')][_0x15d3('0x12')]){case _0x15d3('0x14'):var _0x366a77={'transcribeStatus':_0x5bbfef['TranscriptionJob'][_0x15d3('0x12')],'fileUri':_0x5bbfef[_0x15d3('0x11')]['Transcript']['TranscriptFileUri']};logger['info'](util['format'](_0x15d3('0x15'),_0x4a47f7['id']));return rp({'uri':_0x5bbfef[_0x15d3('0x11')][_0x15d3('0x16')][_0x15d3('0x17')],'json':!![]})[_0x15d3('0xf')](function(_0x2fa13c){logger['info'](util['format'](_0x15d3('0x18'),_0x4a47f7['id']));if(_0x2fa13c&&_0x2fa13c[_0x15d3('0x19')]&&_0x2fa13c[_0x15d3('0x19')][_0x15d3('0x1a')]&&_0x2fa13c['results'][_0x15d3('0x1a')][_0x15d3('0x1b')]){_0x366a77[_0x15d3('0x13')]='';for(var _0x539626=0x0;_0x539626<_0x2fa13c[_0x15d3('0x19')][_0x15d3('0x1a')]['length'];_0x539626++){_0x366a77['fileText']+=_0x2fa13c['results'][_0x15d3('0x1a')][_0x539626][_0x15d3('0x1c')]+'';}}return _0x4a47f7[_0x15d3('0x1d')](_0x366a77);})[_0x15d3('0xf')](function(){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x1e'),_0x4a47f7['id']));if(!_0x4a47f7[_0x15d3('0x1f')]){throw new db[(_0x15d3('0x20'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x219867[_0x15d3('0x21')]||!_0x219867['sentimentAccountId']||!_0x219867[_0x15d3('0x22')]||!_0x219867['language']||!_0x219867[_0x15d3('0x23')]){throw new db[(_0x15d3('0x20'))]['ValidationError'](_0x15d3('0x24'));}if(!_0x366a77[_0x15d3('0x13')]){throw new Error(_0x15d3('0x25'));}if(_0x219867[_0x15d3('0x26')]===_0x1397d8['id']){return _0x1397d8;}else{return db[_0x15d3('0x27')][_0x15d3('0x28')]({'where':{'id':_settings[_0x15d3('0x26')]}});}})[_0x15d3('0xf')](function(_0x9133e5){if(!_0x9133e5){throw new db[(_0x15d3('0x20'))]['ValidationError'](_0x15d3('0x29'));}if(!_0x9133e5[_0x15d3('0xd')]||!_0x9133e5[_0x15d3('0xe')]){throw new db[(_0x15d3('0x20'))][(_0x15d3('0x2a'))](_0x15d3('0x2b'));}_0x2811b5=_0x9133e5;logger[_0x15d3('0x9')](util[_0x15d3('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x4a47f7['id']));return sentiment(_0x2811b5[_0x15d3('0xd')],_0x2811b5['data2'],_0x219867[_0x15d3('0x22')],_0x366a77[_0x15d3('0x13')],_0x219867[_0x15d3('0x2c')]);})[_0x15d3('0xf')](function(_0x145fa3){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x2d'),_0x4a47f7['id']));return _0x4a47f7[_0x15d3('0x1d')]({'sentiment':_0x145fa3[_0x15d3('0x2e')],'sPositive':_0x145fa3[_0x15d3('0x2f')][_0x15d3('0x30')],'sNegative':_0x145fa3[_0x15d3('0x2f')][_0x15d3('0x31')],'sMixed':_0x145fa3[_0x15d3('0x2f')]['Mixed'],'sNeutral':_0x145fa3[_0x15d3('0x2f')][_0x15d3('0x32')]});})['then'](function(){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x1e'),_0x4a47f7['id']));_0x209104();});case'FAILED':return _0x4a47f7[_0x15d3('0x1d')]({'transcribeStatus':'FAILED','failureReason':_0x5bbfef[_0x15d3('0x11')][_0x15d3('0x33')]})['then'](function(){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x1e'),_0x4a47f7['id']));_0x209104();});default:logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x34'),_0x4a47f7['id']));break;}}else{return BPromise['resolve']()[_0x15d3('0xf')](function(){if(!_0x4a47f7['tempSentiment']){throw new db[(_0x15d3('0x20'))][(_0x15d3('0x2a'))](_0x15d3('0x35'));}if(!_0x219867[_0x15d3('0x21')]||!_0x219867[_0x15d3('0x26')]||!_0x219867[_0x15d3('0x22')]||!_0x219867[_0x15d3('0x2c')]||!_0x219867[_0x15d3('0x23')]){throw new db[(_0x15d3('0x20'))][(_0x15d3('0x2a'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x4a47f7[_0x15d3('0x13')]){throw new Error(_0x15d3('0x25'));}if(_0x219867['sentimentAccountId']===_0x1397d8['id']){return _0x1397d8;}else{return db['CloudProvider'][_0x15d3('0x28')]({'where':{'id':_settings[_0x15d3('0x26')]}});}})[_0x15d3('0xf')](function(_0x20ecab){if(!_0x20ecab){throw new db[(_0x15d3('0x20'))][(_0x15d3('0x2a'))](_0x15d3('0x29'));}if(!_0x20ecab[_0x15d3('0xd')]||!_0x20ecab[_0x15d3('0xe')]){throw new db[(_0x15d3('0x20'))]['ValidationError'](_0x15d3('0x2b'));}_0x2811b5=_0x20ecab;logger[_0x15d3('0x9')](util['format'](_0x15d3('0x36'),_0x4a47f7['id']));return sentiment(_0x2811b5['data1'],_0x2811b5['data2'],_0x219867[_0x15d3('0x22')],_0x4a47f7[_0x15d3('0x13')],_0x219867[_0x15d3('0x2c')]);})['then'](function(_0x22f29d){logger['info'](util[_0x15d3('0xa')](_0x15d3('0x2d'),_0x4a47f7['id']));return _0x4a47f7[_0x15d3('0x1d')]({'sentiment':_0x22f29d[_0x15d3('0x2e')],'sPositive':_0x22f29d[_0x15d3('0x2f')]['Positive'],'sNegative':_0x22f29d['SentimentScore']['Negative'],'sMixed':_0x22f29d[_0x15d3('0x2f')]['Mixed'],'sNeutral':_0x22f29d[_0x15d3('0x2f')][_0x15d3('0x32')],'transcribeStatus':_0x15d3('0x14')});})['then'](function(){logger[_0x15d3('0x9')](util[_0x15d3('0xa')](_0x15d3('0x1e'),_0x4a47f7['id']));_0x209104();});}})[_0x15d3('0x37')](function(_0x404f06){if(_0x404f06){if(!_0x404f06[_0x15d3('0x38')]||_0x404f06[_0x15d3('0x38')]!==_0x15d3('0x39')){logger[_0x15d3('0x3a')](util[_0x15d3('0xa')](_0x15d3('0x3b'),_0x4a47f7['id']),util[_0x15d3('0x3c')](_0x404f06,{'showHidden':![],'depth':null}));}}_0x209104();});});}function checkTranscribe(){var _0x552643;var _0x4b50bf;var _0x264487;return db[_0x15d3('0x3d')][_0x15d3('0x3e')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x2efe7e){if(!_0x2efe7e||!_0x2efe7e['length']){throw new db[(_0x15d3('0x20'))]['ValidationError'](_0x15d3('0x3f'));}_0x552643=_0x2efe7e;return db[_0x15d3('0x40')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x480c9d){if(!_0x480c9d){throw new db['Sequelize']['ValidationError'](_0x15d3('0x41'));}_0x4b50bf=_0x480c9d;if(!_0x4b50bf[_0x15d3('0x42')]||!_0x4b50bf['transcribeAccountId']||!_0x4b50bf[_0x15d3('0x43')]||!_0x4b50bf[_0x15d3('0x2c')]||!_0x4b50bf[_0x15d3('0x23')]){throw new db['Sequelize'][(_0x15d3('0x2a'))](_0x15d3('0x44'));}return db[_0x15d3('0x27')][_0x15d3('0x28')]({'where':{'id':_0x4b50bf[_0x15d3('0x45')]}});})[_0x15d3('0xf')](function(_0x5f0a42){if(!_0x5f0a42){throw new db[(_0x15d3('0x20'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x5f0a42[_0x15d3('0xd')]||!_0x5f0a42['data2']){throw new db[(_0x15d3('0x20'))]['ValidationError'](_0x15d3('0x2b'));}_0x264487=_0x5f0a42;var _0x205230=[];_0x552643[_0x15d3('0x46')](function(_0x1e8d1b){_0x205230[_0x15d3('0x47')](checkTranscribeJob(_0x1e8d1b,_0x4b50bf,_0x264487));});return BPromise['all'](_0x205230);})['catch'](function(_0x9bba6){if(_0x9bba6){if(!_0x9bba6['name']||_0x9bba6[_0x15d3('0x38')]!==_0x15d3('0x39')){logger[_0x15d3('0x3a')](util[_0x15d3('0x3c')](_0x9bba6,{'showHidden':![],'depth':null}));}}});}exports[_0x15d3('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};