604677de8276f98d83b8c2545e75982d5e471f43
[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 _0x56c8=['transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','error','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','transcribeName','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Sequelize','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Neutral','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0x56c8,0x12f));var _0x856c=function(_0x2f7dee,_0x27b0b1){_0x2f7dee=_0x2f7dee-0x0;var _0x5c48ee=_0x56c8[_0x2f7dee];return _0x5c48ee;};var _=require(_0x856c('0x0'));var AWS=require(_0x856c('0x1'));var rp=require(_0x856c('0x2'));var util=require(_0x856c('0x3'));var BPromise=require('bluebird');var db=require(_0x856c('0x4'))['db'];var logger=require(_0x856c('0x5'))(_0x856c('0x6'));function getTranscriptionJob(_0xd0f4b3,_0x2a1b07,_0x5888ad,_0x2608a5){return new Promise(function(_0x1922f4,_0x413964){var _0x15a17c=new AWS[(_0x856c('0x7'))]({'accessKeyId':_0x2a1b07,'secretAccessKey':_0xd0f4b3,'region':_0x5888ad});_0x15a17c[_0x856c('0x8')]({'TranscriptionJobName':_0x2608a5},function(_0x48d81b,_0x5064ef){if(_0x48d81b){return _0x413964(_0x48d81b);}else{return _0x1922f4(_0x5064ef);}});});}function sentiment(_0x2822ca,_0x17ac74,_0xa2bd07,_0x4c173b,_0x4b8bbc){return new Promise(function(_0x56217b,_0x619489){var _0x36e8ef=new AWS[(_0x856c('0x9'))]({'accessKeyId':_0x17ac74,'secretAccessKey':_0x2822ca,'region':_0xa2bd07});_0x36e8ef['detectSentiment']({'Text':_0x4c173b,'LanguageCode':_0x4b8bbc[_0x856c('0xa')](0x0,0x2)},function(_0xf65022,_0x4f7d31){if(_0xf65022){return _0x619489(_0xf65022);}else{return _0x56217b(_0x4f7d31);}});});}function checkTranscribeJob(_0x2539a6,_0x117c1a,_0x326656){var _0x28c3d4;return new BPromise(function(_0x3dad74,_0x288d44){logger[_0x856c('0xb')](util[_0x856c('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x2539a6['id'],_0x2539a6[_0x856c('0xd')]));return getTranscriptionJob(_0x326656['data1'],_0x326656[_0x856c('0xe')],_0x117c1a[_0x856c('0xf')],_0x2539a6[_0x856c('0xd')])[_0x856c('0x10')](function(_0x6856e5){logger[_0x856c('0xb')](util[_0x856c('0xc')](_0x856c('0x11'),_0x2539a6['id'],_0x2539a6[_0x856c('0xd')],_0x6856e5[_0x856c('0x12')][_0x856c('0x13')]));if(!_0x2539a6[_0x856c('0x14')]){switch(_0x6856e5[_0x856c('0x12')][_0x856c('0x13')]){case _0x856c('0x15'):var _0x27c7cc={'transcribeStatus':_0x6856e5[_0x856c('0x12')][_0x856c('0x13')],'fileUri':_0x6856e5[_0x856c('0x12')][_0x856c('0x16')][_0x856c('0x17')]};logger[_0x856c('0xb')](util['format']('[RECORDING:%d]\x20Get\x20transcript',_0x2539a6['id']));return rp({'uri':_0x6856e5[_0x856c('0x12')][_0x856c('0x16')][_0x856c('0x17')],'json':!![]})['then'](function(_0x120bc2){logger['info'](util[_0x856c('0xc')](_0x856c('0x18'),_0x2539a6['id']));if(_0x120bc2&&_0x120bc2[_0x856c('0x19')]&&_0x120bc2['results'][_0x856c('0x1a')]&&_0x120bc2[_0x856c('0x19')][_0x856c('0x1a')][_0x856c('0x1b')]){_0x27c7cc[_0x856c('0x14')]='';for(var _0x3b2f35=0x0;_0x3b2f35<_0x120bc2['results'][_0x856c('0x1a')][_0x856c('0x1b')];_0x3b2f35++){_0x27c7cc[_0x856c('0x14')]+=_0x120bc2['results'][_0x856c('0x1a')][_0x3b2f35]['transcript']+'';}}return _0x2539a6[_0x856c('0x1c')](_0x27c7cc);})['then'](function(){logger[_0x856c('0xb')](util[_0x856c('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2539a6['id']));if(!_0x2539a6[_0x856c('0x1d')]){throw new db['Sequelize'][(_0x856c('0x1e'))](_0x856c('0x1f'));}if(!_0x117c1a[_0x856c('0x20')]||!_0x117c1a['sentimentAccountId']||!_0x117c1a[_0x856c('0x21')]||!_0x117c1a[_0x856c('0x22')]||!_0x117c1a[_0x856c('0x23')]){throw new db['Sequelize']['ValidationError'](_0x856c('0x24'));}if(!_0x27c7cc[_0x856c('0x14')]){throw new Error(_0x856c('0x25'));}if(_0x117c1a[_0x856c('0x26')]===_0x326656['id']){return _0x326656;}else{return db[_0x856c('0x27')][_0x856c('0x28')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x856c('0x10')](function(_0x866950){if(!_0x866950){throw new db[(_0x856c('0x29'))][(_0x856c('0x1e'))](_0x856c('0x2a'));}if(!_0x866950[_0x856c('0x2b')]||!_0x866950['data2']){throw new db[(_0x856c('0x29'))][(_0x856c('0x1e'))](_0x856c('0x2c'));}_0x28c3d4=_0x866950;logger['info'](util[_0x856c('0xc')](_0x856c('0x2d'),_0x2539a6['id']));return sentiment(_0x28c3d4['data1'],_0x28c3d4[_0x856c('0xe')],_0x117c1a[_0x856c('0x21')],_0x27c7cc[_0x856c('0x14')],_0x117c1a[_0x856c('0x22')]);})[_0x856c('0x10')](function(_0x592a4c){logger[_0x856c('0xb')](util[_0x856c('0xc')](_0x856c('0x2e'),_0x2539a6['id']));return _0x2539a6[_0x856c('0x1c')]({'sentiment':_0x592a4c[_0x856c('0x2f')],'sPositive':_0x592a4c[_0x856c('0x30')][_0x856c('0x31')],'sNegative':_0x592a4c[_0x856c('0x30')][_0x856c('0x32')],'sMixed':_0x592a4c[_0x856c('0x30')][_0x856c('0x33')],'sNeutral':_0x592a4c[_0x856c('0x30')]['Neutral']});})['then'](function(){logger[_0x856c('0xb')](util['format'](_0x856c('0x34'),_0x2539a6['id']));_0x3dad74();});case _0x856c('0x35'):return _0x2539a6[_0x856c('0x1c')]({'transcribeStatus':_0x856c('0x35'),'failureReason':_0x6856e5[_0x856c('0x12')]['FailureReason']})[_0x856c('0x10')](function(){logger[_0x856c('0xb')](util[_0x856c('0xc')](_0x856c('0x34'),_0x2539a6['id']));_0x3dad74();});default:logger[_0x856c('0xb')](util['format'](_0x856c('0x36'),_0x2539a6['id']));break;}}else{return BPromise[_0x856c('0x37')]()[_0x856c('0x10')](function(){if(!_0x2539a6[_0x856c('0x1d')]){throw new db[(_0x856c('0x29'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x117c1a[_0x856c('0x20')]||!_0x117c1a[_0x856c('0x26')]||!_0x117c1a[_0x856c('0x21')]||!_0x117c1a['language']||!_0x117c1a[_0x856c('0x23')]){throw new db[(_0x856c('0x29'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x2539a6[_0x856c('0x14')]){throw new Error(_0x856c('0x25'));}if(_0x117c1a[_0x856c('0x26')]===_0x326656['id']){return _0x326656;}else{return db[_0x856c('0x27')][_0x856c('0x28')]({'where':{'id':_settings[_0x856c('0x26')]}});}})[_0x856c('0x10')](function(_0x4da144){if(!_0x4da144){throw new db['Sequelize'][(_0x856c('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4da144[_0x856c('0x2b')]||!_0x4da144[_0x856c('0xe')]){throw new db[(_0x856c('0x29'))][(_0x856c('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x28c3d4=_0x4da144;logger[_0x856c('0xb')](util[_0x856c('0xc')](_0x856c('0x2d'),_0x2539a6['id']));return sentiment(_0x28c3d4[_0x856c('0x2b')],_0x28c3d4[_0x856c('0xe')],_0x117c1a[_0x856c('0x21')],_0x2539a6[_0x856c('0x14')],_0x117c1a[_0x856c('0x22')]);})['then'](function(_0x145d20){logger[_0x856c('0xb')](util[_0x856c('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x2539a6['id']));return _0x2539a6[_0x856c('0x1c')]({'sentiment':_0x145d20[_0x856c('0x2f')],'sPositive':_0x145d20[_0x856c('0x30')]['Positive'],'sNegative':_0x145d20[_0x856c('0x30')][_0x856c('0x32')],'sMixed':_0x145d20['SentimentScore'][_0x856c('0x33')],'sNeutral':_0x145d20[_0x856c('0x30')][_0x856c('0x38')],'transcribeStatus':_0x856c('0x15')});})[_0x856c('0x10')](function(){logger[_0x856c('0xb')](util[_0x856c('0xc')](_0x856c('0x34'),_0x2539a6['id']));_0x3dad74();});}})[_0x856c('0x39')](function(_0x2826d7){if(_0x2826d7){if(!_0x2826d7[_0x856c('0x3a')]||_0x2826d7[_0x856c('0x3a')]!==_0x856c('0x3b')){logger['error'](util[_0x856c('0xc')](_0x856c('0x3c'),_0x2539a6['id']),util[_0x856c('0x3d')](_0x2826d7,{'showHidden':![],'depth':null}));}}_0x3dad74();});});}function checkTranscribe(){var _0x9e9f27;var _0x23d403;var _0x24d009;return db['VoiceRecording'][_0x856c('0x3e')]({'where':{'transcribeStatus':_0x856c('0x3f')}})[_0x856c('0x10')](function(_0x28e0b4){if(!_0x28e0b4||!_0x28e0b4['length']){throw new db[(_0x856c('0x29'))]['ValidationError'](_0x856c('0x40'));}_0x9e9f27=_0x28e0b4;return db[_0x856c('0x41')]['findOne']({'where':{'id':0x1}});})['then'](function(_0x30fa12){if(!_0x30fa12){throw new db['Sequelize']['ValidationError'](_0x856c('0x42'));}_0x23d403=_0x30fa12;if(!_0x23d403[_0x856c('0x6')]||!_0x23d403[_0x856c('0x43')]||!_0x23d403[_0x856c('0xf')]||!_0x23d403[_0x856c('0x22')]||!_0x23d403[_0x856c('0x23')]){throw new db[(_0x856c('0x29'))][(_0x856c('0x1e'))](_0x856c('0x44'));}return db[_0x856c('0x27')]['findOne']({'where':{'id':_0x23d403[_0x856c('0x43')]}});})[_0x856c('0x10')](function(_0x4b1955){if(!_0x4b1955){throw new db[(_0x856c('0x29'))]['ValidationError'](_0x856c('0x2a'));}if(!_0x4b1955['data1']||!_0x4b1955[_0x856c('0xe')]){throw new db[(_0x856c('0x29'))][(_0x856c('0x1e'))](_0x856c('0x2c'));}_0x24d009=_0x4b1955;var _0xb4e351=[];_0x9e9f27[_0x856c('0x45')](function(_0x5c38dc){_0xb4e351[_0x856c('0x46')](checkTranscribeJob(_0x5c38dc,_0x23d403,_0x24d009));});return BPromise[_0x856c('0x47')](_0xb4e351);})[_0x856c('0x39')](function(_0x200547){if(_0x200547){if(!_0x200547[_0x856c('0x3a')]||_0x200547[_0x856c('0x3a')]!==_0x856c('0x3b')){logger[_0x856c('0x48')](util[_0x856c('0x3d')](_0x200547,{'showHidden':![],'depth':null}));}}});}exports[_0x856c('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};