e9cc9b13985b130b1ff7d39f7613c82347fb34d2
[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 _0x6835=['Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','findOne','transcribeAccountId','bucket','Transcribe\x20not\x20configured','CloudProvider','push','all','inspect','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','transcripts','results','length','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update'];(function(_0x435020,_0x23fae1){var _0x51a0a9=function(_0x1fcbac){while(--_0x1fcbac){_0x435020['push'](_0x435020['shift']());}};_0x51a0a9(++_0x23fae1);}(_0x6835,0x133));var _0x5683=function(_0x4aca54,_0x3290e2){_0x4aca54=_0x4aca54-0x0;var _0x3d94f9=_0x6835[_0x4aca54];return _0x3d94f9;};var _=require(_0x5683('0x0'));var AWS=require(_0x5683('0x1'));var rp=require(_0x5683('0x2'));var util=require(_0x5683('0x3'));var BPromise=require('bluebird');var db=require(_0x5683('0x4'))['db'];var logger=require(_0x5683('0x5'))(_0x5683('0x6'));function getTranscriptionJob(_0x20ec29,_0x2471bd,_0x1ad016,_0x302d56){return new Promise(function(_0x55cf39,_0x585670){var _0x20e332=new AWS['TranscribeService']({'accessKeyId':_0x2471bd,'secretAccessKey':_0x20ec29,'region':_0x1ad016});_0x20e332[_0x5683('0x7')]({'TranscriptionJobName':_0x302d56},function(_0x2a02e7,_0x156ed1){if(_0x2a02e7){return _0x585670(_0x2a02e7);}else{return _0x55cf39(_0x156ed1);}});});}function sentiment(_0x25cb67,_0x246bcd,_0x128e02,_0x568c30,_0x461fed){return new Promise(function(_0x3d5a3f,_0x13bbd7){var _0x47f58a=new AWS[(_0x5683('0x8'))]({'accessKeyId':_0x246bcd,'secretAccessKey':_0x25cb67,'region':_0x128e02});_0x47f58a['detectSentiment']({'Text':_0x568c30,'LanguageCode':_0x461fed['substring'](0x0,0x2)},function(_0x130a1d,_0x22f1cb){if(_0x130a1d){return _0x13bbd7(_0x130a1d);}else{return _0x3d5a3f(_0x22f1cb);}});});}function checkTranscribeJob(_0x34d91d,_0x1ae398,_0x5a9cf0){var _0x107ec7;return new BPromise(function(_0x2b4c0b,_0x2c6879){logger[_0x5683('0x9')](util['format'](_0x5683('0xa'),_0x34d91d['id'],_0x34d91d['transcribeName']));return getTranscriptionJob(_0x5a9cf0[_0x5683('0xb')],_0x5a9cf0[_0x5683('0xc')],_0x1ae398['transcribeRegion'],_0x34d91d['transcribeName'])[_0x5683('0xd')](function(_0x3527ce){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0xf'),_0x34d91d['id'],_0x34d91d['transcribeName'],_0x3527ce[_0x5683('0x10')][_0x5683('0x11')]));if(!_0x34d91d[_0x5683('0x12')]){switch(_0x3527ce[_0x5683('0x10')][_0x5683('0x11')]){case _0x5683('0x13'):var _0x121dc3={'transcribeStatus':_0x3527ce[_0x5683('0x10')][_0x5683('0x11')],'fileUri':_0x3527ce[_0x5683('0x10')][_0x5683('0x14')][_0x5683('0x15')]};logger[_0x5683('0x9')](util[_0x5683('0xe')]('[RECORDING:%d]\x20Get\x20transcript',_0x34d91d['id']));return rp({'uri':_0x3527ce[_0x5683('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0x5683('0xd')](function(_0x3a9d7f){logger[_0x5683('0x9')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x34d91d['id']));if(_0x3a9d7f&&_0x3a9d7f['results']&&_0x3a9d7f['results'][_0x5683('0x16')]&&_0x3a9d7f[_0x5683('0x17')]['transcripts'][_0x5683('0x18')]){_0x121dc3[_0x5683('0x12')]='';for(var _0x358f9b=0x0;_0x358f9b<_0x3a9d7f[_0x5683('0x17')][_0x5683('0x16')][_0x5683('0x18')];_0x358f9b++){_0x121dc3['fileText']+=_0x3a9d7f[_0x5683('0x17')][_0x5683('0x16')][_0x358f9b]['transcript']+'';}}return _0x34d91d['update'](_0x121dc3);})[_0x5683('0xd')](function(){logger['info'](util[_0x5683('0xe')](_0x5683('0x19'),_0x34d91d['id']));if(!_0x34d91d[_0x5683('0x1a')]){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x1d'));}if(!_0x1ae398['sentiment']||!_0x1ae398[_0x5683('0x1e')]||!_0x1ae398[_0x5683('0x1f')]||!_0x1ae398[_0x5683('0x20')]||!_0x1ae398['bucket']){throw new db[(_0x5683('0x1b'))]['ValidationError'](_0x5683('0x21'));}if(!_0x121dc3[_0x5683('0x12')]){throw new Error('Transcript\x20not\x20available');}if(_0x1ae398[_0x5683('0x1e')]===_0x5a9cf0['id']){return _0x5a9cf0;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x5683('0x1e')]}});}})[_0x5683('0xd')](function(_0x22c3f6){if(!_0x22c3f6){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x22c3f6[_0x5683('0xb')]||!_0x22c3f6[_0x5683('0xc')]){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x22'));}_0x107ec7=_0x22c3f6;logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x23'),_0x34d91d['id']));return sentiment(_0x107ec7[_0x5683('0xb')],_0x107ec7[_0x5683('0xc')],_0x1ae398[_0x5683('0x1f')],_0x121dc3[_0x5683('0x12')],_0x1ae398[_0x5683('0x20')]);})[_0x5683('0xd')](function(_0x296757){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x24'),_0x34d91d['id']));return _0x34d91d[_0x5683('0x25')]({'sentiment':_0x296757[_0x5683('0x26')],'sPositive':_0x296757[_0x5683('0x27')][_0x5683('0x28')],'sNegative':_0x296757[_0x5683('0x27')][_0x5683('0x29')],'sMixed':_0x296757[_0x5683('0x27')][_0x5683('0x2a')],'sNeutral':_0x296757[_0x5683('0x27')][_0x5683('0x2b')]});})[_0x5683('0xd')](function(){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x19'),_0x34d91d['id']));_0x2b4c0b();});case _0x5683('0x2c'):return _0x34d91d[_0x5683('0x25')]({'transcribeStatus':_0x5683('0x2c'),'failureReason':_0x3527ce[_0x5683('0x10')][_0x5683('0x2d')]})['then'](function(){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x19'),_0x34d91d['id']));_0x2b4c0b();});default:logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x2e'),_0x34d91d['id']));break;}}else{return BPromise[_0x5683('0x2f')]()[_0x5683('0xd')](function(){if(!_0x34d91d[_0x5683('0x1a')]){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x1d'));}if(!_0x1ae398[_0x5683('0x30')]||!_0x1ae398[_0x5683('0x1e')]||!_0x1ae398[_0x5683('0x1f')]||!_0x1ae398[_0x5683('0x20')]||!_0x1ae398['bucket']){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x21'));}if(!_0x34d91d[_0x5683('0x12')]){throw new Error(_0x5683('0x31'));}if(_0x1ae398['sentimentAccountId']===_0x5a9cf0['id']){return _0x5a9cf0;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x5683('0x1e')]}});}})[_0x5683('0xd')](function(_0x2990e1){if(!_0x2990e1){throw new db['Sequelize'][(_0x5683('0x1c'))](_0x5683('0x32'));}if(!_0x2990e1[_0x5683('0xb')]||!_0x2990e1[_0x5683('0xc')]){throw new db['Sequelize'][(_0x5683('0x1c'))](_0x5683('0x22'));}_0x107ec7=_0x2990e1;logger[_0x5683('0x9')](util[_0x5683('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x34d91d['id']));return sentiment(_0x107ec7[_0x5683('0xb')],_0x107ec7['data2'],_0x1ae398['sentimentRegion'],_0x34d91d['fileText'],_0x1ae398['language']);})[_0x5683('0xd')](function(_0x50a55){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x24'),_0x34d91d['id']));return _0x34d91d[_0x5683('0x25')]({'sentiment':_0x50a55[_0x5683('0x26')],'sPositive':_0x50a55['SentimentScore'][_0x5683('0x28')],'sNegative':_0x50a55['SentimentScore']['Negative'],'sMixed':_0x50a55[_0x5683('0x27')]['Mixed'],'sNeutral':_0x50a55[_0x5683('0x27')][_0x5683('0x2b')],'transcribeStatus':'COMPLETED'});})[_0x5683('0xd')](function(){logger[_0x5683('0x9')](util[_0x5683('0xe')](_0x5683('0x19'),_0x34d91d['id']));_0x2b4c0b();});}})[_0x5683('0x33')](function(_0x2676f9){if(_0x2676f9){if(!_0x2676f9[_0x5683('0x34')]||_0x2676f9['name']!==_0x5683('0x35')){logger[_0x5683('0x36')](util[_0x5683('0xe')](_0x5683('0x37'),_0x34d91d['id']),util['inspect'](_0x2676f9,{'showHidden':![],'depth':null}));}}_0x2b4c0b();});});}function checkTranscribe(){var _0x1e8c53;var _0x3ffd63;var _0x330ea8;return db[_0x5683('0x38')][_0x5683('0x39')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x5683('0xd')](function(_0x48a9ea){if(!_0x48a9ea||!_0x48a9ea[_0x5683('0x18')]){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x3a'));}_0x1e8c53=_0x48a9ea;return db[_0x5683('0x3b')][_0x5683('0x3c')]({'where':{'id':0x1}});})[_0x5683('0xd')](function(_0x5545a1){if(!_0x5545a1){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))]('Settings\x20not\x20available');}_0x3ffd63=_0x5545a1;if(!_0x3ffd63[_0x5683('0x6')]||!_0x3ffd63[_0x5683('0x3d')]||!_0x3ffd63['transcribeRegion']||!_0x3ffd63[_0x5683('0x20')]||!_0x3ffd63[_0x5683('0x3e')]){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x3f'));}return db[_0x5683('0x40')][_0x5683('0x3c')]({'where':{'id':_0x3ffd63[_0x5683('0x3d')]}});})[_0x5683('0xd')](function(_0x558029){if(!_0x558029){throw new db[(_0x5683('0x1b'))][(_0x5683('0x1c'))](_0x5683('0x32'));}if(!_0x558029[_0x5683('0xb')]||!_0x558029[_0x5683('0xc')]){throw new db['Sequelize'][(_0x5683('0x1c'))](_0x5683('0x22'));}_0x330ea8=_0x558029;var _0x7f2188=[];_0x1e8c53['forEach'](function(_0x1ed48d){_0x7f2188[_0x5683('0x41')](checkTranscribeJob(_0x1ed48d,_0x3ffd63,_0x330ea8));});return BPromise[_0x5683('0x42')](_0x7f2188);})[_0x5683('0x33')](function(_0x5390f5){if(_0x5390f5){if(!_0x5390f5[_0x5683('0x34')]||_0x5390f5['name']!=='SequelizeValidationError'){logger['error'](util[_0x5683('0x43')](_0x5390f5,{'showHidden':![],'depth':null}));}}});}exports[_0x5683('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};