Built motion from commit (unavailable).|2.5.23
[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 _0xb8c8=['bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','sentimentRegion','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','SentimentScore','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','Mixed','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','all','catch','SequelizeValidationError','error','start','lodash','aws-sdk','util','bluebird','../../mysqldb','transcribe','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','transcribeName','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0xb8c8,0xb9));var _0x8b8c=function(_0x2aab71,_0x1c621f){_0x2aab71=_0x2aab71-0x0;var _0x273054=_0xb8c8[_0x2aab71];return _0x273054;};var _=require(_0x8b8c('0x0'));var AWS=require(_0x8b8c('0x1'));var rp=require('request-promise');var util=require(_0x8b8c('0x2'));var BPromise=require(_0x8b8c('0x3'));var db=require(_0x8b8c('0x4'))['db'];var logger=require('../../config/logger')(_0x8b8c('0x5'));function getTranscriptionJob(_0x417578,_0x5547d5,_0x4cb893,_0x15e6ca){return new Promise(function(_0x26330c,_0x15af51){var _0x45a86b=new AWS['TranscribeService']({'accessKeyId':_0x5547d5,'secretAccessKey':_0x417578,'region':_0x4cb893});_0x45a86b[_0x8b8c('0x6')]({'TranscriptionJobName':_0x15e6ca},function(_0x42aabb,_0x49ea4b){if(_0x42aabb){return _0x15af51(_0x42aabb);}else{return _0x26330c(_0x49ea4b);}});});}function sentiment(_0x53905a,_0x1f4d3e,_0x67f22a,_0x9d576c,_0x1dffda){return new Promise(function(_0x11d90c,_0x5afc9e){var _0x70fd6d=new AWS[(_0x8b8c('0x7'))]({'accessKeyId':_0x1f4d3e,'secretAccessKey':_0x53905a,'region':_0x67f22a});_0x70fd6d['detectSentiment']({'Text':_0x9d576c,'LanguageCode':_0x1dffda[_0x8b8c('0x8')](0x0,0x2)},function(_0x2d130c,_0x158165){if(_0x2d130c){return _0x5afc9e(_0x2d130c);}else{return _0x11d90c(_0x158165);}});});}function checkTranscribeJob(_0x6ce13,_0x421866,_0x1b6598){var _0x265bfd;return new BPromise(function(_0x1c3bf9,_0x534637){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0xb'),_0x6ce13['id'],_0x6ce13['transcribeName']));return getTranscriptionJob(_0x1b6598[_0x8b8c('0xc')],_0x1b6598[_0x8b8c('0xd')],_0x421866[_0x8b8c('0xe')],_0x6ce13['transcribeName'])['then'](function(_0x2b4f60){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0xf'),_0x6ce13['id'],_0x6ce13[_0x8b8c('0x10')],_0x2b4f60[_0x8b8c('0x11')]['TranscriptionJobStatus']));if(!_0x6ce13['fileText']){switch(_0x2b4f60[_0x8b8c('0x11')][_0x8b8c('0x12')]){case _0x8b8c('0x13'):var _0x1cbe20={'transcribeStatus':_0x2b4f60['TranscriptionJob'][_0x8b8c('0x12')],'fileUri':_0x2b4f60[_0x8b8c('0x11')][_0x8b8c('0x14')][_0x8b8c('0x15')]};logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x16'),_0x6ce13['id']));return rp({'uri':_0x2b4f60[_0x8b8c('0x11')][_0x8b8c('0x14')][_0x8b8c('0x15')],'json':!![]})[_0x8b8c('0x17')](function(_0x624057){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x18'),_0x6ce13['id']));if(_0x624057&&_0x624057['results']&&_0x624057[_0x8b8c('0x19')]['transcripts']&&_0x624057['results'][_0x8b8c('0x1a')][_0x8b8c('0x1b')]){_0x1cbe20[_0x8b8c('0x1c')]='';for(var _0x230e6d=0x0;_0x230e6d<_0x624057[_0x8b8c('0x19')][_0x8b8c('0x1a')][_0x8b8c('0x1b')];_0x230e6d++){_0x1cbe20['fileText']+=_0x624057['results']['transcripts'][_0x230e6d][_0x8b8c('0x1d')]+'';}}return _0x6ce13[_0x8b8c('0x1e')](_0x1cbe20);})['then'](function(){logger[_0x8b8c('0x9')](util['format'](_0x8b8c('0x1f'),_0x6ce13['id']));if(!_0x6ce13[_0x8b8c('0x20')]){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x421866[_0x8b8c('0x23')]||!_0x421866[_0x8b8c('0x24')]||!_0x421866['sentimentRegion']||!_0x421866['language']||!_0x421866[_0x8b8c('0x25')]){throw new db['Sequelize'][(_0x8b8c('0x22'))](_0x8b8c('0x26'));}if(!_0x1cbe20[_0x8b8c('0x1c')]){throw new Error('Transcript\x20not\x20available');}if(_0x421866[_0x8b8c('0x24')]===_0x1b6598['id']){return _0x1b6598;}else{return db[_0x8b8c('0x27')][_0x8b8c('0x28')]({'where':{'id':_settings[_0x8b8c('0x24')]}});}})['then'](function(_0x1768c9){if(!_0x1768c9){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))](_0x8b8c('0x29'));}if(!_0x1768c9[_0x8b8c('0xc')]||!_0x1768c9['data2']){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x265bfd=_0x1768c9;logger[_0x8b8c('0x9')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x6ce13['id']));return sentiment(_0x265bfd[_0x8b8c('0xc')],_0x265bfd[_0x8b8c('0xd')],_0x421866[_0x8b8c('0x2a')],_0x1cbe20['fileText'],_0x421866[_0x8b8c('0x2b')]);})[_0x8b8c('0x17')](function(_0xcd5156){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x2c'),_0x6ce13['id']));return _0x6ce13[_0x8b8c('0x1e')]({'sentiment':_0xcd5156['Sentiment'],'sPositive':_0xcd5156['SentimentScore'][_0x8b8c('0x2d')],'sNegative':_0xcd5156[_0x8b8c('0x2e')][_0x8b8c('0x2f')],'sMixed':_0xcd5156['SentimentScore']['Mixed'],'sNeutral':_0xcd5156[_0x8b8c('0x2e')][_0x8b8c('0x30')]});})[_0x8b8c('0x17')](function(){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x1f'),_0x6ce13['id']));_0x1c3bf9();});case'FAILED':return _0x6ce13[_0x8b8c('0x1e')]({'transcribeStatus':_0x8b8c('0x31'),'failureReason':_0x2b4f60[_0x8b8c('0x11')][_0x8b8c('0x32')]})[_0x8b8c('0x17')](function(){logger[_0x8b8c('0x9')](util['format'](_0x8b8c('0x1f'),_0x6ce13['id']));_0x1c3bf9();});default:logger[_0x8b8c('0x9')](util['format'](_0x8b8c('0x33'),_0x6ce13['id']));break;}}else{return BPromise[_0x8b8c('0x34')]()['then'](function(){if(!_0x6ce13[_0x8b8c('0x20')]){throw new db[(_0x8b8c('0x21'))]['ValidationError'](_0x8b8c('0x35'));}if(!_0x421866[_0x8b8c('0x23')]||!_0x421866[_0x8b8c('0x24')]||!_0x421866['sentimentRegion']||!_0x421866[_0x8b8c('0x2b')]||!_0x421866[_0x8b8c('0x25')]){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x6ce13['fileText']){throw new Error(_0x8b8c('0x36'));}if(_0x421866[_0x8b8c('0x24')]===_0x1b6598['id']){return _0x1b6598;}else{return db[_0x8b8c('0x27')][_0x8b8c('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x8b8c('0x17')](function(_0x2f5e74){if(!_0x2f5e74){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))](_0x8b8c('0x29'));}if(!_0x2f5e74[_0x8b8c('0xc')]||!_0x2f5e74[_0x8b8c('0xd')]){throw new db['Sequelize'][(_0x8b8c('0x22'))](_0x8b8c('0x37'));}_0x265bfd=_0x2f5e74;logger['info'](util[_0x8b8c('0xa')](_0x8b8c('0x38'),_0x6ce13['id']));return sentiment(_0x265bfd['data1'],_0x265bfd[_0x8b8c('0xd')],_0x421866['sentimentRegion'],_0x6ce13['fileText'],_0x421866[_0x8b8c('0x2b')]);})[_0x8b8c('0x17')](function(_0x4186d3){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x2c'),_0x6ce13['id']));return _0x6ce13[_0x8b8c('0x1e')]({'sentiment':_0x4186d3[_0x8b8c('0x39')],'sPositive':_0x4186d3['SentimentScore'][_0x8b8c('0x2d')],'sNegative':_0x4186d3[_0x8b8c('0x2e')][_0x8b8c('0x2f')],'sMixed':_0x4186d3['SentimentScore'][_0x8b8c('0x3a')],'sNeutral':_0x4186d3[_0x8b8c('0x2e')][_0x8b8c('0x30')],'transcribeStatus':_0x8b8c('0x13')});})[_0x8b8c('0x17')](function(){logger[_0x8b8c('0x9')](util[_0x8b8c('0xa')](_0x8b8c('0x1f'),_0x6ce13['id']));_0x1c3bf9();});}})['catch'](function(_0x2c8660){if(_0x2c8660){if(!_0x2c8660[_0x8b8c('0x3b')]||_0x2c8660['name']!=='SequelizeValidationError'){logger['error'](util['format'](_0x8b8c('0x3c'),_0x6ce13['id']),util['inspect'](_0x2c8660,{'showHidden':![],'depth':null}));}}_0x1c3bf9();});});}function checkTranscribe(){var _0x24ce30;var _0xf711cb;var _0x4c9e79;return db[_0x8b8c('0x3d')][_0x8b8c('0x3e')]({'where':{'transcribeStatus':_0x8b8c('0x3f')}})[_0x8b8c('0x17')](function(_0x53eac6){if(!_0x53eac6||!_0x53eac6[_0x8b8c('0x1b')]){throw new db[(_0x8b8c('0x21'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x24ce30=_0x53eac6;return db[_0x8b8c('0x40')][_0x8b8c('0x28')]({'where':{'id':0x1}});})[_0x8b8c('0x17')](function(_0x5ace3b){if(!_0x5ace3b){throw new db[(_0x8b8c('0x21'))]['ValidationError'](_0x8b8c('0x41'));}_0xf711cb=_0x5ace3b;if(!_0xf711cb[_0x8b8c('0x5')]||!_0xf711cb['transcribeAccountId']||!_0xf711cb['transcribeRegion']||!_0xf711cb[_0x8b8c('0x2b')]||!_0xf711cb[_0x8b8c('0x25')]){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x8b8c('0x28')]({'where':{'id':_0xf711cb[_0x8b8c('0x42')]}});})['then'](function(_0x58f1a4){if(!_0x58f1a4){throw new db[(_0x8b8c('0x21'))]['ValidationError'](_0x8b8c('0x29'));}if(!_0x58f1a4[_0x8b8c('0xc')]||!_0x58f1a4[_0x8b8c('0xd')]){throw new db[(_0x8b8c('0x21'))][(_0x8b8c('0x22'))](_0x8b8c('0x37'));}_0x4c9e79=_0x58f1a4;var _0x5d757e=[];_0x24ce30[_0x8b8c('0x43')](function(_0x241494){_0x5d757e[_0x8b8c('0x44')](checkTranscribeJob(_0x241494,_0xf711cb,_0x4c9e79));});return BPromise[_0x8b8c('0x45')](_0x5d757e);})[_0x8b8c('0x46')](function(_0x5d68ca){if(_0x5d68ca){if(!_0x5d68ca[_0x8b8c('0x3b')]||_0x5d68ca[_0x8b8c('0x3b')]!==_0x8b8c('0x47')){logger[_0x8b8c('0x48')](util['inspect'](_0x5d68ca,{'showHidden':![],'depth':null}));}}});}exports[_0x8b8c('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};