664ac3ddb6aed07a96c69a87bb74d242c9eeea9c
[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 _0x2d8c=['FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','sentiment','bucket','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20configured','Positive','Negative','Mixed','COMPLETED','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','Sequelize','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Neutral','FAILED'];(function(_0x93fb44,_0x1ff4e6){var _0x575c12=function(_0x2f01fe){while(--_0x2f01fe){_0x93fb44['push'](_0x93fb44['shift']());}};_0x575c12(++_0x1ff4e6);}(_0x2d8c,0xf6));var _0xc2d8=function(_0x1f36bb,_0x8af718){_0x1f36bb=_0x1f36bb-0x0;var _0xaf97fa=_0x2d8c[_0x1f36bb];return _0xaf97fa;};var _=require(_0xc2d8('0x0'));var AWS=require('aws-sdk');var rp=require(_0xc2d8('0x1'));var util=require(_0xc2d8('0x2'));var BPromise=require(_0xc2d8('0x3'));var db=require(_0xc2d8('0x4'))['db'];var logger=require('../../config/logger')(_0xc2d8('0x5'));function getTranscriptionJob(_0x3636d7,_0x5be562,_0x33b113,_0x44b794){return new Promise(function(_0x13c26b,_0x3eb85e){var _0x2ecf71=new AWS[(_0xc2d8('0x6'))]({'accessKeyId':_0x5be562,'secretAccessKey':_0x3636d7,'region':_0x33b113});_0x2ecf71['getTranscriptionJob']({'TranscriptionJobName':_0x44b794},function(_0x55aa27,_0x4a3ba6){if(_0x55aa27){return _0x3eb85e(_0x55aa27);}else{return _0x13c26b(_0x4a3ba6);}});});}function sentiment(_0x1082f6,_0x650315,_0x37e3dc,_0x1a02ba,_0x277940){return new Promise(function(_0xe39a09,_0x2d3dc2){var _0x65b7e7=new AWS['Comprehend']({'accessKeyId':_0x650315,'secretAccessKey':_0x1082f6,'region':_0x37e3dc});_0x65b7e7[_0xc2d8('0x7')]({'Text':_0x1a02ba,'LanguageCode':_0x277940[_0xc2d8('0x8')](0x0,0x2)},function(_0x34fa85,_0x5a0278){if(_0x34fa85){return _0x2d3dc2(_0x34fa85);}else{return _0xe39a09(_0x5a0278);}});});}function checkTranscribeJob(_0x4815ff,_0x36c365,_0x2d9cc5){var _0x31ccc6;return new BPromise(function(_0x25eb61,_0x31f842){logger[_0xc2d8('0x9')](util[_0xc2d8('0xa')](_0xc2d8('0xb'),_0x4815ff['id'],_0x4815ff[_0xc2d8('0xc')]));return getTranscriptionJob(_0x2d9cc5[_0xc2d8('0xd')],_0x2d9cc5['data2'],_0x36c365[_0xc2d8('0xe')],_0x4815ff[_0xc2d8('0xc')])[_0xc2d8('0xf')](function(_0x2f7b68){logger['info'](util[_0xc2d8('0xa')](_0xc2d8('0x10'),_0x4815ff['id'],_0x4815ff[_0xc2d8('0xc')],_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x12')]));if(!_0x4815ff[_0xc2d8('0x13')]){switch(_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x12')]){case'COMPLETED':var _0xb18d34={'transcribeStatus':_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x12')],'fileUri':_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x14')][_0xc2d8('0x15')]};logger[_0xc2d8('0x9')](util['format'](_0xc2d8('0x16'),_0x4815ff['id']));return rp({'uri':_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x14')][_0xc2d8('0x15')],'json':!![]})['then'](function(_0x253ce1){logger['info'](util[_0xc2d8('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x4815ff['id']));if(_0x253ce1&&_0x253ce1[_0xc2d8('0x17')]&&_0x253ce1[_0xc2d8('0x17')]['transcripts']&&_0x253ce1[_0xc2d8('0x17')][_0xc2d8('0x18')]['length']){_0xb18d34[_0xc2d8('0x13')]='';for(var _0x204ce0=0x0;_0x204ce0<_0x253ce1[_0xc2d8('0x17')][_0xc2d8('0x18')][_0xc2d8('0x19')];_0x204ce0++){_0xb18d34[_0xc2d8('0x13')]+=_0x253ce1[_0xc2d8('0x17')][_0xc2d8('0x18')][_0x204ce0][_0xc2d8('0x1a')]+'';}}return _0x4815ff[_0xc2d8('0x1b')](_0xb18d34);})[_0xc2d8('0xf')](function(){logger[_0xc2d8('0x9')](util[_0xc2d8('0xa')](_0xc2d8('0x1c'),_0x4815ff['id']));if(!_0x4815ff[_0xc2d8('0x1d')]){throw new db['Sequelize'][(_0xc2d8('0x1e'))](_0xc2d8('0x1f'));}if(!_0x36c365['sentiment']||!_0x36c365['sentimentAccountId']||!_0x36c365[_0xc2d8('0x20')]||!_0x36c365['language']||!_0x36c365['bucket']){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xb18d34['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x36c365[_0xc2d8('0x22')]===_0x2d9cc5['id']){return _0x2d9cc5;}else{return db[_0xc2d8('0x23')][_0xc2d8('0x24')]({'where':{'id':_settings[_0xc2d8('0x22')]}});}})[_0xc2d8('0xf')](function(_0x297653){if(!_0x297653){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))](_0xc2d8('0x25'));}if(!_0x297653[_0xc2d8('0xd')]||!_0x297653[_0xc2d8('0x26')]){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x31ccc6=_0x297653;logger[_0xc2d8('0x9')](util['format'](_0xc2d8('0x27'),_0x4815ff['id']));return sentiment(_0x31ccc6[_0xc2d8('0xd')],_0x31ccc6['data2'],_0x36c365['sentimentRegion'],_0xb18d34[_0xc2d8('0x13')],_0x36c365[_0xc2d8('0x28')]);})[_0xc2d8('0xf')](function(_0x118e1c){logger[_0xc2d8('0x9')](util[_0xc2d8('0xa')](_0xc2d8('0x29'),_0x4815ff['id']));return _0x4815ff[_0xc2d8('0x1b')]({'sentiment':_0x118e1c[_0xc2d8('0x2a')],'sPositive':_0x118e1c[_0xc2d8('0x2b')]['Positive'],'sNegative':_0x118e1c[_0xc2d8('0x2b')]['Negative'],'sMixed':_0x118e1c[_0xc2d8('0x2b')]['Mixed'],'sNeutral':_0x118e1c['SentimentScore'][_0xc2d8('0x2c')]});})['then'](function(){logger[_0xc2d8('0x9')](util[_0xc2d8('0xa')](_0xc2d8('0x1c'),_0x4815ff['id']));_0x25eb61();});case _0xc2d8('0x2d'):return _0x4815ff['update']({'transcribeStatus':'FAILED','failureReason':_0x2f7b68[_0xc2d8('0x11')][_0xc2d8('0x2e')]})[_0xc2d8('0xf')](function(){logger['info'](util[_0xc2d8('0xa')](_0xc2d8('0x1c'),_0x4815ff['id']));_0x25eb61();});default:logger[_0xc2d8('0x9')](util['format'](_0xc2d8('0x2f'),_0x4815ff['id']));break;}}else{return BPromise['resolve']()[_0xc2d8('0xf')](function(){if(!_0x4815ff[_0xc2d8('0x1d')]){throw new db['Sequelize'][(_0xc2d8('0x1e'))](_0xc2d8('0x1f'));}if(!_0x36c365[_0xc2d8('0x30')]||!_0x36c365[_0xc2d8('0x22')]||!_0x36c365[_0xc2d8('0x20')]||!_0x36c365[_0xc2d8('0x28')]||!_0x36c365[_0xc2d8('0x31')]){throw new db[(_0xc2d8('0x21'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x4815ff['fileText']){throw new Error(_0xc2d8('0x32'));}if(_0x36c365[_0xc2d8('0x22')]===_0x2d9cc5['id']){return _0x2d9cc5;}else{return db[_0xc2d8('0x23')]['findOne']({'where':{'id':_settings[_0xc2d8('0x22')]}});}})[_0xc2d8('0xf')](function(_0x34a0e9){if(!_0x34a0e9){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x34a0e9['data1']||!_0x34a0e9[_0xc2d8('0x26')]){throw new db['Sequelize'][(_0xc2d8('0x1e'))](_0xc2d8('0x33'));}_0x31ccc6=_0x34a0e9;logger[_0xc2d8('0x9')](util[_0xc2d8('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x4815ff['id']));return sentiment(_0x31ccc6[_0xc2d8('0xd')],_0x31ccc6[_0xc2d8('0x26')],_0x36c365[_0xc2d8('0x20')],_0x4815ff['fileText'],_0x36c365[_0xc2d8('0x28')]);})[_0xc2d8('0xf')](function(_0x42c2c7){logger[_0xc2d8('0x9')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4815ff['id']));return _0x4815ff['update']({'sentiment':_0x42c2c7['Sentiment'],'sPositive':_0x42c2c7[_0xc2d8('0x2b')][_0xc2d8('0x34')],'sNegative':_0x42c2c7[_0xc2d8('0x2b')][_0xc2d8('0x35')],'sMixed':_0x42c2c7[_0xc2d8('0x2b')][_0xc2d8('0x36')],'sNeutral':_0x42c2c7['SentimentScore']['Neutral'],'transcribeStatus':_0xc2d8('0x37')});})[_0xc2d8('0xf')](function(){logger[_0xc2d8('0x9')](util['format'](_0xc2d8('0x1c'),_0x4815ff['id']));_0x25eb61();});}})['catch'](function(_0x2136ab){if(_0x2136ab){if(!_0x2136ab[_0xc2d8('0x38')]||_0x2136ab[_0xc2d8('0x38')]!==_0xc2d8('0x39')){logger[_0xc2d8('0x3a')](util['format'](_0xc2d8('0x3b'),_0x4815ff['id']),util[_0xc2d8('0x3c')](_0x2136ab,{'showHidden':![],'depth':null}));}}_0x25eb61();});});}function checkTranscribe(){var _0xfa7b73;var _0x9291c8;var _0x3fe1be;return db[_0xc2d8('0x3d')][_0xc2d8('0x3e')]({'where':{'transcribeStatus':_0xc2d8('0x3f')}})['then'](function(_0x1e7e71){if(!_0x1e7e71||!_0x1e7e71[_0xc2d8('0x19')]){throw new db[(_0xc2d8('0x21'))]['ValidationError'](_0xc2d8('0x40'));}_0xfa7b73=_0x1e7e71;return db[_0xc2d8('0x41')]['findOne']({'where':{'id':0x1}});})[_0xc2d8('0xf')](function(_0x42f4c0){if(!_0x42f4c0){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))](_0xc2d8('0x42'));}_0x9291c8=_0x42f4c0;if(!_0x9291c8[_0xc2d8('0x5')]||!_0x9291c8[_0xc2d8('0x43')]||!_0x9291c8[_0xc2d8('0xe')]||!_0x9291c8['language']||!_0x9291c8['bucket']){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))](_0xc2d8('0x44'));}return db[_0xc2d8('0x23')]['findOne']({'where':{'id':_0x9291c8[_0xc2d8('0x43')]}});})[_0xc2d8('0xf')](function(_0x2f86d2){if(!_0x2f86d2){throw new db[(_0xc2d8('0x21'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x2f86d2[_0xc2d8('0xd')]||!_0x2f86d2[_0xc2d8('0x26')]){throw new db[(_0xc2d8('0x21'))][(_0xc2d8('0x1e'))](_0xc2d8('0x33'));}_0x3fe1be=_0x2f86d2;var _0x1230c9=[];_0xfa7b73[_0xc2d8('0x45')](function(_0x4dded9){_0x1230c9[_0xc2d8('0x46')](checkTranscribeJob(_0x4dded9,_0x9291c8,_0x3fe1be));});return BPromise[_0xc2d8('0x47')](_0x1230c9);})['catch'](function(_0x2878de){if(_0x2878de){if(!_0x2878de[_0xc2d8('0x38')]||_0x2878de['name']!=='SequelizeValidationError'){logger['error'](util[_0xc2d8('0x3c')](_0x2878de,{'showHidden':![],'depth':null}));}}});}exports[_0xc2d8('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};