Built motion from commit efa66e19.|2.6.22
[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 _0x7948=['SequelizeValidationError','error','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','language','bucket','ValidationError','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','findOne','catch','name'];(function(_0x118749,_0x50e848){var _0x20d489=function(_0x3c80a2){while(--_0x3c80a2){_0x118749['push'](_0x118749['shift']());}};_0x20d489(++_0x50e848);}(_0x7948,0x185));var _0x8794=function(_0x3d13bb,_0x262a54){_0x3d13bb=_0x3d13bb-0x0;var _0x4b5a1b=_0x7948[_0x3d13bb];return _0x4b5a1b;};var _=require(_0x8794('0x0'));var AWS=require(_0x8794('0x1'));var rp=require(_0x8794('0x2'));var util=require(_0x8794('0x3'));var BPromise=require(_0x8794('0x4'));var db=require(_0x8794('0x5'))['db'];var logger=require(_0x8794('0x6'))(_0x8794('0x7'));function getTranscriptionJob(_0x347de9,_0x3cfa61,_0x1ccf6c,_0x320430){return new Promise(function(_0x322841,_0x1540b9){var _0x28d12e=new AWS[(_0x8794('0x8'))]({'accessKeyId':_0x3cfa61,'secretAccessKey':_0x347de9,'region':_0x1ccf6c});_0x28d12e[_0x8794('0x9')]({'TranscriptionJobName':_0x320430},function(_0x27f31e,_0x6d7e86){if(_0x27f31e){return _0x1540b9(_0x27f31e);}else{return _0x322841(_0x6d7e86);}});});}function sentiment(_0x28e695,_0x1a8f7f,_0x2305d8,_0x2ddd88,_0x3e7185){return new Promise(function(_0x3d97df,_0x3dc022){var _0x8e854=new AWS[(_0x8794('0xa'))]({'accessKeyId':_0x1a8f7f,'secretAccessKey':_0x28e695,'region':_0x2305d8});_0x8e854[_0x8794('0xb')]({'Text':_0x2ddd88,'LanguageCode':_0x3e7185[_0x8794('0xc')](0x0,0x2)},function(_0x3192f9,_0x51e0be){if(_0x3192f9){return _0x3dc022(_0x3192f9);}else{return _0x3d97df(_0x51e0be);}});});}function checkTranscribeJob(_0x1b97f3,_0x3b1453,_0x1e9dac){var _0x10a723;return new BPromise(function(_0x1ce53e,_0x37847b){logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0xf'),_0x1b97f3['id'],_0x1b97f3[_0x8794('0x10')]));return getTranscriptionJob(_0x1e9dac[_0x8794('0x11')],_0x1e9dac[_0x8794('0x12')],_0x3b1453[_0x8794('0x13')],_0x1b97f3['transcribeName'])[_0x8794('0x14')](function(_0x4f8b21){logger['info'](util[_0x8794('0xe')](_0x8794('0x15'),_0x1b97f3['id'],_0x1b97f3[_0x8794('0x10')],_0x4f8b21['TranscriptionJob'][_0x8794('0x16')]));if(!_0x1b97f3[_0x8794('0x17')]){switch(_0x4f8b21[_0x8794('0x18')]['TranscriptionJobStatus']){case _0x8794('0x19'):var _0x1c17b1={'transcribeStatus':_0x4f8b21[_0x8794('0x18')]['TranscriptionJobStatus'],'fileUri':_0x4f8b21[_0x8794('0x18')][_0x8794('0x1a')][_0x8794('0x1b')]};logger['info'](util[_0x8794('0xe')]('[RECORDING:%d]\x20Get\x20transcript',_0x1b97f3['id']));return rp({'uri':_0x4f8b21[_0x8794('0x18')][_0x8794('0x1a')][_0x8794('0x1b')],'json':!![]})[_0x8794('0x14')](function(_0x22f64b){logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0x1c'),_0x1b97f3['id']));if(_0x22f64b&&_0x22f64b[_0x8794('0x1d')]&&_0x22f64b[_0x8794('0x1d')]['transcripts']&&_0x22f64b[_0x8794('0x1d')]['transcripts'][_0x8794('0x1e')]){_0x1c17b1[_0x8794('0x17')]='';for(var _0x4f0383=0x0;_0x4f0383<_0x22f64b[_0x8794('0x1d')]['transcripts'][_0x8794('0x1e')];_0x4f0383++){_0x1c17b1['fileText']+=_0x22f64b[_0x8794('0x1d')]['transcripts'][_0x4f0383][_0x8794('0x1f')]+'';}}return _0x1b97f3[_0x8794('0x20')](_0x1c17b1);})[_0x8794('0x14')](function(){logger['info'](util['format'](_0x8794('0x21'),_0x1b97f3['id']));if(!_0x1b97f3[_0x8794('0x22')]){throw new db[(_0x8794('0x23'))]['ValidationError'](_0x8794('0x24'));}if(!_0x3b1453['sentiment']||!_0x3b1453['sentimentAccountId']||!_0x3b1453[_0x8794('0x25')]||!_0x3b1453[_0x8794('0x26')]||!_0x3b1453[_0x8794('0x27')]){throw new db[(_0x8794('0x23'))][(_0x8794('0x28'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1c17b1[_0x8794('0x17')]){throw new Error(_0x8794('0x29'));}if(_0x3b1453[_0x8794('0x2a')]===_0x1e9dac['id']){return _0x1e9dac;}else{return db[_0x8794('0x2b')]['findOne']({'where':{'id':_settings[_0x8794('0x2a')]}});}})[_0x8794('0x14')](function(_0x57aaea){if(!_0x57aaea){throw new db['Sequelize'][(_0x8794('0x28'))](_0x8794('0x2c'));}if(!_0x57aaea[_0x8794('0x11')]||!_0x57aaea[_0x8794('0x12')]){throw new db['Sequelize']['ValidationError'](_0x8794('0x2d'));}_0x10a723=_0x57aaea;logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0x2e'),_0x1b97f3['id']));return sentiment(_0x10a723[_0x8794('0x11')],_0x10a723[_0x8794('0x12')],_0x3b1453[_0x8794('0x25')],_0x1c17b1[_0x8794('0x17')],_0x3b1453[_0x8794('0x26')]);})[_0x8794('0x14')](function(_0x35e1a7){logger['info'](util[_0x8794('0xe')](_0x8794('0x2f'),_0x1b97f3['id']));return _0x1b97f3[_0x8794('0x20')]({'sentiment':_0x35e1a7[_0x8794('0x30')],'sPositive':_0x35e1a7['SentimentScore']['Positive'],'sNegative':_0x35e1a7[_0x8794('0x31')][_0x8794('0x32')],'sMixed':_0x35e1a7[_0x8794('0x31')][_0x8794('0x33')],'sNeutral':_0x35e1a7[_0x8794('0x31')][_0x8794('0x34')]});})[_0x8794('0x14')](function(){logger[_0x8794('0xd')](util['format'](_0x8794('0x21'),_0x1b97f3['id']));_0x1ce53e();});case _0x8794('0x35'):return _0x1b97f3[_0x8794('0x20')]({'transcribeStatus':'FAILED','failureReason':_0x4f8b21[_0x8794('0x18')][_0x8794('0x36')]})[_0x8794('0x14')](function(){logger[_0x8794('0xd')](util['format'](_0x8794('0x21'),_0x1b97f3['id']));_0x1ce53e();});default:logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0x37'),_0x1b97f3['id']));break;}}else{return BPromise[_0x8794('0x38')]()['then'](function(){if(!_0x1b97f3[_0x8794('0x22')]){throw new db['Sequelize']['ValidationError'](_0x8794('0x24'));}if(!_0x3b1453[_0x8794('0x39')]||!_0x3b1453[_0x8794('0x2a')]||!_0x3b1453['sentimentRegion']||!_0x3b1453[_0x8794('0x26')]||!_0x3b1453[_0x8794('0x27')]){throw new db[(_0x8794('0x23'))][(_0x8794('0x28'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x1b97f3[_0x8794('0x17')]){throw new Error('Transcript\x20not\x20available');}if(_0x3b1453[_0x8794('0x2a')]===_0x1e9dac['id']){return _0x1e9dac;}else{return db[_0x8794('0x2b')][_0x8794('0x3a')]({'where':{'id':_settings[_0x8794('0x2a')]}});}})[_0x8794('0x14')](function(_0x4d61d1){if(!_0x4d61d1){throw new db[(_0x8794('0x23'))]['ValidationError'](_0x8794('0x2c'));}if(!_0x4d61d1['data1']||!_0x4d61d1[_0x8794('0x12')]){throw new db[(_0x8794('0x23'))]['ValidationError'](_0x8794('0x2d'));}_0x10a723=_0x4d61d1;logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0x2e'),_0x1b97f3['id']));return sentiment(_0x10a723['data1'],_0x10a723['data2'],_0x3b1453[_0x8794('0x25')],_0x1b97f3[_0x8794('0x17')],_0x3b1453[_0x8794('0x26')]);})[_0x8794('0x14')](function(_0x4f8217){logger['info'](util[_0x8794('0xe')](_0x8794('0x2f'),_0x1b97f3['id']));return _0x1b97f3[_0x8794('0x20')]({'sentiment':_0x4f8217[_0x8794('0x30')],'sPositive':_0x4f8217[_0x8794('0x31')]['Positive'],'sNegative':_0x4f8217['SentimentScore'][_0x8794('0x32')],'sMixed':_0x4f8217['SentimentScore'][_0x8794('0x33')],'sNeutral':_0x4f8217[_0x8794('0x31')]['Neutral'],'transcribeStatus':_0x8794('0x19')});})[_0x8794('0x14')](function(){logger[_0x8794('0xd')](util[_0x8794('0xe')](_0x8794('0x21'),_0x1b97f3['id']));_0x1ce53e();});}})[_0x8794('0x3b')](function(_0x4dc99e){if(_0x4dc99e){if(!_0x4dc99e[_0x8794('0x3c')]||_0x4dc99e[_0x8794('0x3c')]!==_0x8794('0x3d')){logger[_0x8794('0x3e')](util[_0x8794('0xe')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x1b97f3['id']),util[_0x8794('0x3f')](_0x4dc99e,{'showHidden':![],'depth':null}));}}_0x1ce53e();});});}function checkTranscribe(){var _0x1f60ab;var _0xe1d2fc;var _0x38432f;return db[_0x8794('0x40')][_0x8794('0x41')]({'where':{'transcribeStatus':_0x8794('0x42')}})[_0x8794('0x14')](function(_0x5310a2){if(!_0x5310a2||!_0x5310a2[_0x8794('0x1e')]){throw new db[(_0x8794('0x23'))][(_0x8794('0x28'))](_0x8794('0x43'));}_0x1f60ab=_0x5310a2;return db[_0x8794('0x44')][_0x8794('0x3a')]({'where':{'id':0x1}});})[_0x8794('0x14')](function(_0xdfb522){if(!_0xdfb522){throw new db[(_0x8794('0x23'))][(_0x8794('0x28'))](_0x8794('0x45'));}_0xe1d2fc=_0xdfb522;if(!_0xe1d2fc[_0x8794('0x7')]||!_0xe1d2fc['transcribeAccountId']||!_0xe1d2fc['transcribeRegion']||!_0xe1d2fc['language']||!_0xe1d2fc[_0x8794('0x27')]){throw new db[(_0x8794('0x23'))][(_0x8794('0x28'))]('Transcribe\x20not\x20configured');}return db[_0x8794('0x2b')]['findOne']({'where':{'id':_0xe1d2fc[_0x8794('0x46')]}});})['then'](function(_0x449668){if(!_0x449668){throw new db['Sequelize'][(_0x8794('0x28'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x449668[_0x8794('0x11')]||!_0x449668[_0x8794('0x12')]){throw new db[(_0x8794('0x23'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x38432f=_0x449668;var _0x6c00de=[];_0x1f60ab[_0x8794('0x47')](function(_0x3f7785){_0x6c00de[_0x8794('0x48')](checkTranscribeJob(_0x3f7785,_0xe1d2fc,_0x38432f));});return BPromise[_0x8794('0x49')](_0x6c00de);})[_0x8794('0x3b')](function(_0x499f01){if(_0x499f01){if(!_0x499f01[_0x8794('0x3c')]||_0x499f01[_0x8794('0x3c')]!==_0x8794('0x3d')){logger[_0x8794('0x3e')](util[_0x8794('0x3f')](_0x499f01,{'showHidden':![],'depth':null}));}}});}exports[_0x8794('0x4a')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};