b48f96afb40f7f5a2199ebfb32a83b14025cff54
[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 _0x081e=['substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','then','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Cloud\x20Provider\x20not\x20available','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','CloudProvider','forEach','all','start','lodash','aws-sdk','util','../../mysqldb','../../config/logger','transcribe','Comprehend'];(function(_0x35f9af,_0x45b210){var _0x1ad6e6=function(_0x1a0528){while(--_0x1a0528){_0x35f9af['push'](_0x35f9af['shift']());}};_0x1ad6e6(++_0x45b210);}(_0x081e,0xc5));var _0xe081=function(_0x256422,_0x367394){_0x256422=_0x256422-0x0;var _0x55dddc=_0x081e[_0x256422];return _0x55dddc;};var _=require(_0xe081('0x0'));var AWS=require(_0xe081('0x1'));var rp=require('request-promise');var util=require(_0xe081('0x2'));var BPromise=require('bluebird');var db=require(_0xe081('0x3'))['db'];var logger=require(_0xe081('0x4'))(_0xe081('0x5'));function getTranscriptionJob(_0x3111b7,_0x3d136f,_0x29d73d,_0x9b415a){return new Promise(function(_0x50d6cb,_0x2271b4){var _0x47ac69=new AWS['TranscribeService']({'accessKeyId':_0x3d136f,'secretAccessKey':_0x3111b7,'region':_0x29d73d});_0x47ac69['getTranscriptionJob']({'TranscriptionJobName':_0x9b415a},function(_0x505aaa,_0x4372dd){if(_0x505aaa){return _0x2271b4(_0x505aaa);}else{return _0x50d6cb(_0x4372dd);}});});}function sentiment(_0x5851e6,_0x4106a9,_0x497c3d,_0x151f8c,_0x6dae6e){return new Promise(function(_0x38c28e,_0x57dc18){var _0x540e8a=new AWS[(_0xe081('0x6'))]({'accessKeyId':_0x4106a9,'secretAccessKey':_0x5851e6,'region':_0x497c3d});_0x540e8a['detectSentiment']({'Text':_0x151f8c,'LanguageCode':_0x6dae6e[_0xe081('0x7')](0x0,0x2)},function(_0x8c7c54,_0x22b1e4){if(_0x8c7c54){return _0x57dc18(_0x8c7c54);}else{return _0x38c28e(_0x22b1e4);}});});}function checkTranscribeJob(_0x1d4526,_0x462caa,_0x2df58f){var _0x4baa60;return new BPromise(function(_0x2c2aba,_0x29b855){logger['info'](util[_0xe081('0x8')](_0xe081('0x9'),_0x1d4526['id'],_0x1d4526[_0xe081('0xa')]));return getTranscriptionJob(_0x2df58f['data1'],_0x2df58f[_0xe081('0xb')],_0x462caa['transcribeRegion'],_0x1d4526['transcribeName'])['then'](function(_0x4911a0){logger[_0xe081('0xc')](util[_0xe081('0x8')](_0xe081('0xd'),_0x1d4526['id'],_0x1d4526['transcribeName'],_0x4911a0['TranscriptionJob'][_0xe081('0xe')]));if(!_0x1d4526[_0xe081('0xf')]){switch(_0x4911a0[_0xe081('0x10')]['TranscriptionJobStatus']){case _0xe081('0x11'):var _0xcff1c6={'transcribeStatus':_0x4911a0[_0xe081('0x10')][_0xe081('0xe')],'fileUri':_0x4911a0[_0xe081('0x10')][_0xe081('0x12')][_0xe081('0x13')]};logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Get\x20transcript',_0x1d4526['id']));return rp({'uri':_0x4911a0[_0xe081('0x10')][_0xe081('0x12')][_0xe081('0x13')],'json':!![]})['then'](function(_0x4af0a9){logger[_0xe081('0xc')](util[_0xe081('0x8')](_0xe081('0x14'),_0x1d4526['id']));if(_0x4af0a9&&_0x4af0a9[_0xe081('0x15')]&&_0x4af0a9[_0xe081('0x15')][_0xe081('0x16')]&&_0x4af0a9['results'][_0xe081('0x16')][_0xe081('0x17')]){_0xcff1c6[_0xe081('0xf')]='';for(var _0x2eca97=0x0;_0x2eca97<_0x4af0a9[_0xe081('0x15')][_0xe081('0x16')][_0xe081('0x17')];_0x2eca97++){_0xcff1c6[_0xe081('0xf')]+=_0x4af0a9[_0xe081('0x15')][_0xe081('0x16')][_0x2eca97]['transcript']+'';}}return _0x1d4526[_0xe081('0x18')](_0xcff1c6);})[_0xe081('0x19')](function(){logger[_0xe081('0xc')](util['format'](_0xe081('0x1a'),_0x1d4526['id']));if(!_0x1d4526['tempSentiment']){throw new db[(_0xe081('0x1b'))][(_0xe081('0x1c'))](_0xe081('0x1d'));}if(!_0x462caa[_0xe081('0x1e')]||!_0x462caa[_0xe081('0x1f')]||!_0x462caa['sentimentRegion']||!_0x462caa[_0xe081('0x20')]||!_0x462caa[_0xe081('0x21')]){throw new db[(_0xe081('0x1b'))][(_0xe081('0x1c'))](_0xe081('0x22'));}if(!_0xcff1c6[_0xe081('0xf')]){throw new Error(_0xe081('0x23'));}if(_0x462caa[_0xe081('0x1f')]===_0x2df58f['id']){return _0x2df58f;}else{return db['CloudProvider'][_0xe081('0x24')]({'where':{'id':_settings[_0xe081('0x1f')]}});}})[_0xe081('0x19')](function(_0x229739){if(!_0x229739){throw new db['Sequelize'][(_0xe081('0x1c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x229739[_0xe081('0x25')]||!_0x229739[_0xe081('0xb')]){throw new db[(_0xe081('0x1b'))]['ValidationError'](_0xe081('0x26'));}_0x4baa60=_0x229739;logger[_0xe081('0xc')](util[_0xe081('0x8')](_0xe081('0x27'),_0x1d4526['id']));return sentiment(_0x4baa60['data1'],_0x4baa60[_0xe081('0xb')],_0x462caa[_0xe081('0x28')],_0xcff1c6[_0xe081('0xf')],_0x462caa['language']);})[_0xe081('0x19')](function(_0x4163d3){logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1d4526['id']));return _0x1d4526[_0xe081('0x18')]({'sentiment':_0x4163d3[_0xe081('0x29')],'sPositive':_0x4163d3[_0xe081('0x2a')][_0xe081('0x2b')],'sNegative':_0x4163d3['SentimentScore'][_0xe081('0x2c')],'sMixed':_0x4163d3[_0xe081('0x2a')][_0xe081('0x2d')],'sNeutral':_0x4163d3['SentimentScore'][_0xe081('0x2e')]});})[_0xe081('0x19')](function(){logger[_0xe081('0xc')](util[_0xe081('0x8')](_0xe081('0x1a'),_0x1d4526['id']));_0x2c2aba();});case _0xe081('0x2f'):return _0x1d4526['update']({'transcribeStatus':_0xe081('0x2f'),'failureReason':_0x4911a0[_0xe081('0x10')]['FailureReason']})[_0xe081('0x19')](function(){logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1d4526['id']));_0x2c2aba();});default:logger['info'](util[_0xe081('0x8')](_0xe081('0x30'),_0x1d4526['id']));break;}}else{return BPromise[_0xe081('0x31')]()['then'](function(){if(!_0x1d4526[_0xe081('0x32')]){throw new db[(_0xe081('0x1b'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x462caa[_0xe081('0x1e')]||!_0x462caa[_0xe081('0x1f')]||!_0x462caa[_0xe081('0x28')]||!_0x462caa['language']||!_0x462caa[_0xe081('0x21')]){throw new db[(_0xe081('0x1b'))]['ValidationError'](_0xe081('0x22'));}if(!_0x1d4526[_0xe081('0xf')]){throw new Error(_0xe081('0x23'));}if(_0x462caa[_0xe081('0x1f')]===_0x2df58f['id']){return _0x2df58f;}else{return db['CloudProvider'][_0xe081('0x24')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4c5065){if(!_0x4c5065){throw new db[(_0xe081('0x1b'))][(_0xe081('0x1c'))](_0xe081('0x33'));}if(!_0x4c5065[_0xe081('0x25')]||!_0x4c5065[_0xe081('0xb')]){throw new db['Sequelize'][(_0xe081('0x1c'))](_0xe081('0x26'));}_0x4baa60=_0x4c5065;logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1d4526['id']));return sentiment(_0x4baa60[_0xe081('0x25')],_0x4baa60[_0xe081('0xb')],_0x462caa[_0xe081('0x28')],_0x1d4526[_0xe081('0xf')],_0x462caa[_0xe081('0x20')]);})[_0xe081('0x19')](function(_0x3f025b){logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1d4526['id']));return _0x1d4526['update']({'sentiment':_0x3f025b['Sentiment'],'sPositive':_0x3f025b[_0xe081('0x2a')][_0xe081('0x2b')],'sNegative':_0x3f025b['SentimentScore'][_0xe081('0x2c')],'sMixed':_0x3f025b[_0xe081('0x2a')][_0xe081('0x2d')],'sNeutral':_0x3f025b[_0xe081('0x2a')]['Neutral'],'transcribeStatus':_0xe081('0x11')});})[_0xe081('0x19')](function(){logger[_0xe081('0xc')](util[_0xe081('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1d4526['id']));_0x2c2aba();});}})['catch'](function(_0x6056fb){if(_0x6056fb){if(!_0x6056fb[_0xe081('0x34')]||_0x6056fb['name']!==_0xe081('0x35')){logger[_0xe081('0x36')](util[_0xe081('0x8')](_0xe081('0x37'),_0x1d4526['id']),util[_0xe081('0x38')](_0x6056fb,{'showHidden':![],'depth':null}));}}_0x2c2aba();});});}function checkTranscribe(){var _0x361ed5;var _0x219032;var _0x3a7e48;return db[_0xe081('0x39')][_0xe081('0x3a')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x186175){if(!_0x186175||!_0x186175[_0xe081('0x17')]){throw new db['Sequelize'][(_0xe081('0x1c'))](_0xe081('0x3b'));}_0x361ed5=_0x186175;return db[_0xe081('0x3c')][_0xe081('0x24')]({'where':{'id':0x1}});})[_0xe081('0x19')](function(_0x1f477d){if(!_0x1f477d){throw new db['Sequelize'][(_0xe081('0x1c'))]('Settings\x20not\x20available');}_0x219032=_0x1f477d;if(!_0x219032[_0xe081('0x5')]||!_0x219032[_0xe081('0x3d')]||!_0x219032[_0xe081('0x3e')]||!_0x219032[_0xe081('0x20')]||!_0x219032[_0xe081('0x21')]){throw new db[(_0xe081('0x1b'))][(_0xe081('0x1c'))](_0xe081('0x3f'));}return db[_0xe081('0x40')][_0xe081('0x24')]({'where':{'id':_0x219032[_0xe081('0x3d')]}});})['then'](function(_0x5579f4){if(!_0x5579f4){throw new db['Sequelize']['ValidationError'](_0xe081('0x33'));}if(!_0x5579f4[_0xe081('0x25')]||!_0x5579f4[_0xe081('0xb')]){throw new db[(_0xe081('0x1b'))][(_0xe081('0x1c'))](_0xe081('0x26'));}_0x3a7e48=_0x5579f4;var _0x31ca25=[];_0x361ed5[_0xe081('0x41')](function(_0x18a254){_0x31ca25['push'](checkTranscribeJob(_0x18a254,_0x219032,_0x3a7e48));});return BPromise[_0xe081('0x42')](_0x31ca25);})['catch'](function(_0x5d9ec3){if(_0x5d9ec3){if(!_0x5d9ec3[_0xe081('0x34')]||_0x5d9ec3[_0xe081('0x34')]!==_0xe081('0x35')){logger[_0xe081('0x36')](util[_0xe081('0x38')](_0x5d9ec3,{'showHidden':![],'depth':null}));}}});}exports[_0xe081('0x43')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};