187f27b6749d37f674bde73de8d4e4667fafb302
[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 _0x6a20=['transcript','update','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Positive','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x6a20,0x78));var _0x06a2=function(_0x50e7c0,_0x433edc){_0x50e7c0=_0x50e7c0-0x0;var _0x14c0ef=_0x6a20[_0x50e7c0];return _0x14c0ef;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0x06a2('0x0'));var util=require(_0x06a2('0x1'));var BPromise=require(_0x06a2('0x2'));var db=require(_0x06a2('0x3'))['db'];var logger=require(_0x06a2('0x4'))(_0x06a2('0x5'));function getTranscriptionJob(_0x49974d,_0xff8e6d,_0x493d5b,_0xe0fb42){return new Promise(function(_0x374527,_0x5d7794){var _0x1c1160=new AWS[(_0x06a2('0x6'))]({'accessKeyId':_0xff8e6d,'secretAccessKey':_0x49974d,'region':_0x493d5b});_0x1c1160['getTranscriptionJob']({'TranscriptionJobName':_0xe0fb42},function(_0x1a83ed,_0x2b258a){if(_0x1a83ed){return _0x5d7794(_0x1a83ed);}else{return _0x374527(_0x2b258a);}});});}function sentiment(_0x3d9e67,_0x4651d1,_0x493102,_0x215f52,_0x5ebb32){return new Promise(function(_0x46e769,_0x34734d){var _0x3165d2=new AWS[(_0x06a2('0x7'))]({'accessKeyId':_0x4651d1,'secretAccessKey':_0x3d9e67,'region':_0x493102});_0x3165d2[_0x06a2('0x8')]({'Text':_0x215f52,'LanguageCode':_0x5ebb32['substring'](0x0,0x2)},function(_0x89178a,_0x354eb8){if(_0x89178a){return _0x34734d(_0x89178a);}else{return _0x46e769(_0x354eb8);}});});}function checkTranscribeJob(_0xfc12ed,_0x2b2ff7,_0x187dca){var _0x1d3ede;return new BPromise(function(_0x463ff6,_0x164193){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0xb'),_0xfc12ed['id'],_0xfc12ed['transcribeName']));return getTranscriptionJob(_0x187dca[_0x06a2('0xc')],_0x187dca[_0x06a2('0xd')],_0x2b2ff7[_0x06a2('0xe')],_0xfc12ed[_0x06a2('0xf')])[_0x06a2('0x10')](function(_0x1201a2){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x11'),_0xfc12ed['id'],_0xfc12ed['transcribeName'],_0x1201a2[_0x06a2('0x12')][_0x06a2('0x13')]));if(!_0xfc12ed[_0x06a2('0x14')]){switch(_0x1201a2['TranscriptionJob'][_0x06a2('0x13')]){case'COMPLETED':var _0x3c1999={'transcribeStatus':_0x1201a2[_0x06a2('0x12')][_0x06a2('0x13')],'fileUri':_0x1201a2['TranscriptionJob'][_0x06a2('0x15')][_0x06a2('0x16')]};logger['info'](util[_0x06a2('0xa')](_0x06a2('0x17'),_0xfc12ed['id']));return rp({'uri':_0x1201a2[_0x06a2('0x12')][_0x06a2('0x15')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x96b090){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x18'),_0xfc12ed['id']));if(_0x96b090&&_0x96b090['results']&&_0x96b090[_0x06a2('0x19')]['transcripts']&&_0x96b090[_0x06a2('0x19')][_0x06a2('0x1a')][_0x06a2('0x1b')]){_0x3c1999[_0x06a2('0x14')]='';for(var _0xd9356=0x0;_0xd9356<_0x96b090[_0x06a2('0x19')]['transcripts'][_0x06a2('0x1b')];_0xd9356++){_0x3c1999[_0x06a2('0x14')]+=_0x96b090['results']['transcripts'][_0xd9356][_0x06a2('0x1c')]+'';}}return _0xfc12ed[_0x06a2('0x1d')](_0x3c1999);})[_0x06a2('0x10')](function(){logger[_0x06a2('0x9')](util[_0x06a2('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xfc12ed['id']));if(!_0xfc12ed['tempSentiment']){throw new db[(_0x06a2('0x1e'))]['ValidationError'](_0x06a2('0x1f'));}if(!_0x2b2ff7[_0x06a2('0x20')]||!_0x2b2ff7[_0x06a2('0x21')]||!_0x2b2ff7[_0x06a2('0x22')]||!_0x2b2ff7[_0x06a2('0x23')]||!_0x2b2ff7[_0x06a2('0x24')]){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))](_0x06a2('0x26'));}if(!_0x3c1999[_0x06a2('0x14')]){throw new Error(_0x06a2('0x27'));}if(_0x2b2ff7[_0x06a2('0x21')]===_0x187dca['id']){return _0x187dca;}else{return db[_0x06a2('0x28')][_0x06a2('0x29')]({'where':{'id':_settings[_0x06a2('0x21')]}});}})[_0x06a2('0x10')](function(_0x578bec){if(!_0x578bec){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))](_0x06a2('0x2a'));}if(!_0x578bec[_0x06a2('0xc')]||!_0x578bec['data2']){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))](_0x06a2('0x2b'));}_0x1d3ede=_0x578bec;logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x2c'),_0xfc12ed['id']));return sentiment(_0x1d3ede[_0x06a2('0xc')],_0x1d3ede[_0x06a2('0xd')],_0x2b2ff7[_0x06a2('0x22')],_0x3c1999['fileText'],_0x2b2ff7[_0x06a2('0x23')]);})[_0x06a2('0x10')](function(_0x279276){logger['info'](util[_0x06a2('0xa')](_0x06a2('0x2d'),_0xfc12ed['id']));return _0xfc12ed[_0x06a2('0x1d')]({'sentiment':_0x279276[_0x06a2('0x2e')],'sPositive':_0x279276[_0x06a2('0x2f')]['Positive'],'sNegative':_0x279276[_0x06a2('0x2f')][_0x06a2('0x30')],'sMixed':_0x279276[_0x06a2('0x2f')][_0x06a2('0x31')],'sNeutral':_0x279276[_0x06a2('0x2f')][_0x06a2('0x32')]});})[_0x06a2('0x10')](function(){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x33'),_0xfc12ed['id']));_0x463ff6();});case _0x06a2('0x34'):return _0xfc12ed['update']({'transcribeStatus':_0x06a2('0x34'),'failureReason':_0x1201a2['TranscriptionJob'][_0x06a2('0x35')]})[_0x06a2('0x10')](function(){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x33'),_0xfc12ed['id']));_0x463ff6();});default:logger['info'](util[_0x06a2('0xa')](_0x06a2('0x36'),_0xfc12ed['id']));break;}}else{return BPromise[_0x06a2('0x37')]()['then'](function(){if(!_0xfc12ed[_0x06a2('0x38')]){throw new db['Sequelize'][(_0x06a2('0x25'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2b2ff7[_0x06a2('0x20')]||!_0x2b2ff7[_0x06a2('0x21')]||!_0x2b2ff7[_0x06a2('0x22')]||!_0x2b2ff7[_0x06a2('0x23')]||!_0x2b2ff7[_0x06a2('0x24')]){throw new db['Sequelize'][(_0x06a2('0x25'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xfc12ed[_0x06a2('0x14')]){throw new Error(_0x06a2('0x27'));}if(_0x2b2ff7[_0x06a2('0x21')]===_0x187dca['id']){return _0x187dca;}else{return db[_0x06a2('0x28')][_0x06a2('0x29')]({'where':{'id':_settings[_0x06a2('0x21')]}});}})['then'](function(_0x5e5c38){if(!_0x5e5c38){throw new db['Sequelize'][(_0x06a2('0x25'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5e5c38[_0x06a2('0xc')]||!_0x5e5c38[_0x06a2('0xd')]){throw new db['Sequelize'][(_0x06a2('0x25'))](_0x06a2('0x2b'));}_0x1d3ede=_0x5e5c38;logger[_0x06a2('0x9')](util['format'](_0x06a2('0x2c'),_0xfc12ed['id']));return sentiment(_0x1d3ede[_0x06a2('0xc')],_0x1d3ede[_0x06a2('0xd')],_0x2b2ff7['sentimentRegion'],_0xfc12ed['fileText'],_0x2b2ff7[_0x06a2('0x23')]);})['then'](function(_0x1646fe){logger[_0x06a2('0x9')](util[_0x06a2('0xa')](_0x06a2('0x2d'),_0xfc12ed['id']));return _0xfc12ed[_0x06a2('0x1d')]({'sentiment':_0x1646fe[_0x06a2('0x2e')],'sPositive':_0x1646fe[_0x06a2('0x2f')][_0x06a2('0x39')],'sNegative':_0x1646fe[_0x06a2('0x2f')][_0x06a2('0x30')],'sMixed':_0x1646fe[_0x06a2('0x2f')][_0x06a2('0x31')],'sNeutral':_0x1646fe['SentimentScore'][_0x06a2('0x32')],'transcribeStatus':_0x06a2('0x3a')});})[_0x06a2('0x10')](function(){logger['info'](util['format'](_0x06a2('0x33'),_0xfc12ed['id']));_0x463ff6();});}})[_0x06a2('0x3b')](function(_0x5f3754){if(_0x5f3754){if(!_0x5f3754[_0x06a2('0x3c')]||_0x5f3754[_0x06a2('0x3c')]!==_0x06a2('0x3d')){logger[_0x06a2('0x3e')](util[_0x06a2('0xa')](_0x06a2('0x3f'),_0xfc12ed['id']),util[_0x06a2('0x40')](_0x5f3754,{'showHidden':![],'depth':null}));}}_0x463ff6();});});}function checkTranscribe(){var _0x2bc13a;var _0x5c874b;var _0x163ed2;return db[_0x06a2('0x41')]['findAll']({'where':{'transcribeStatus':_0x06a2('0x42')}})[_0x06a2('0x10')](function(_0xc49ddb){if(!_0xc49ddb||!_0xc49ddb['length']){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))](_0x06a2('0x43'));}_0x2bc13a=_0xc49ddb;return db['Setting'][_0x06a2('0x29')]({'where':{'id':0x1}});})[_0x06a2('0x10')](function(_0x20689c){if(!_0x20689c){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))]('Settings\x20not\x20available');}_0x5c874b=_0x20689c;if(!_0x5c874b[_0x06a2('0x5')]||!_0x5c874b[_0x06a2('0x44')]||!_0x5c874b[_0x06a2('0xe')]||!_0x5c874b[_0x06a2('0x23')]||!_0x5c874b[_0x06a2('0x24')]){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))](_0x06a2('0x45'));}return db[_0x06a2('0x28')][_0x06a2('0x29')]({'where':{'id':_0x5c874b[_0x06a2('0x44')]}});})['then'](function(_0x1f18ee){if(!_0x1f18ee){throw new db[(_0x06a2('0x1e'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x1f18ee[_0x06a2('0xc')]||!_0x1f18ee[_0x06a2('0xd')]){throw new db[(_0x06a2('0x1e'))][(_0x06a2('0x25'))]('Cloud\x20Provider\x20not\x20configured');}_0x163ed2=_0x1f18ee;var _0x39fb37=[];_0x2bc13a[_0x06a2('0x46')](function(_0x17572a){_0x39fb37[_0x06a2('0x47')](checkTranscribeJob(_0x17572a,_0x5c874b,_0x163ed2));});return BPromise[_0x06a2('0x48')](_0x39fb37);})['catch'](function(_0xfb3d34){if(_0xfb3d34){if(!_0xfb3d34[_0x06a2('0x3c')]||_0xfb3d34[_0x06a2('0x3c')]!==_0x06a2('0x3d')){logger[_0x06a2('0x3e')](util[_0x06a2('0x40')](_0xfb3d34,{'showHidden':![],'depth':null}));}}});}exports[_0x06a2('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};