8943766fcd316cf17730356ba60ab3d899c558f1
[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 _0x8533=['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','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','then','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Transcript\x20not\x20available','CloudProvider','findOne','ValidationError','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','catch','name'];(function(_0x2d8434,_0x43d781){var _0x26b9e4=function(_0x54f5b8){while(--_0x54f5b8){_0x2d8434['push'](_0x2d8434['shift']());}};_0x26b9e4(++_0x43d781);}(_0x8533,0x141));var _0x3853=function(_0x598b6a,_0x2376a2){_0x598b6a=_0x598b6a-0x0;var _0x2c38df=_0x8533[_0x598b6a];return _0x2c38df;};var _=require(_0x3853('0x0'));var AWS=require(_0x3853('0x1'));var rp=require(_0x3853('0x2'));var util=require('util');var BPromise=require(_0x3853('0x3'));var db=require(_0x3853('0x4'))['db'];var logger=require('../../config/logger')(_0x3853('0x5'));function getTranscriptionJob(_0x4d9944,_0x116a07,_0x4fa9de,_0x1f4e98){return new Promise(function(_0x4644ba,_0x630746){var _0x2d95dc=new AWS['TranscribeService']({'accessKeyId':_0x116a07,'secretAccessKey':_0x4d9944,'region':_0x4fa9de});_0x2d95dc[_0x3853('0x6')]({'TranscriptionJobName':_0x1f4e98},function(_0xe1273c,_0x4597d1){if(_0xe1273c){return _0x630746(_0xe1273c);}else{return _0x4644ba(_0x4597d1);}});});}function sentiment(_0x4d8bc1,_0x5cd88c,_0x153baa,_0x1bf72b,_0x291038){return new Promise(function(_0x46bfee,_0x55c43c){var _0x2243d4=new AWS[(_0x3853('0x7'))]({'accessKeyId':_0x5cd88c,'secretAccessKey':_0x4d8bc1,'region':_0x153baa});_0x2243d4[_0x3853('0x8')]({'Text':_0x1bf72b,'LanguageCode':_0x291038[_0x3853('0x9')](0x0,0x2)},function(_0x20a3e3,_0x249273){if(_0x20a3e3){return _0x55c43c(_0x20a3e3);}else{return _0x46bfee(_0x249273);}});});}function checkTranscribeJob(_0x5d1228,_0x1ddbfe,_0x1927d8){var _0x330363;return new BPromise(function(_0x43611c,_0x5eabc7){logger[_0x3853('0xa')](util[_0x3853('0xb')](_0x3853('0xc'),_0x5d1228['id'],_0x5d1228[_0x3853('0xd')]));return getTranscriptionJob(_0x1927d8['data1'],_0x1927d8['data2'],_0x1ddbfe['transcribeRegion'],_0x5d1228[_0x3853('0xd')])[_0x3853('0xe')](function(_0x378431){logger[_0x3853('0xa')](util[_0x3853('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x5d1228['id'],_0x5d1228[_0x3853('0xd')],_0x378431['TranscriptionJob'][_0x3853('0xf')]));if(!_0x5d1228[_0x3853('0x10')]){switch(_0x378431[_0x3853('0x11')][_0x3853('0xf')]){case _0x3853('0x12'):var _0x454e76={'transcribeStatus':_0x378431['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x378431[_0x3853('0x11')]['Transcript'][_0x3853('0x13')]};logger[_0x3853('0xa')](util['format'](_0x3853('0x14'),_0x5d1228['id']));return rp({'uri':_0x378431[_0x3853('0x11')][_0x3853('0x15')][_0x3853('0x13')],'json':!![]})[_0x3853('0xe')](function(_0x54252e){logger[_0x3853('0xa')](util[_0x3853('0xb')](_0x3853('0x16'),_0x5d1228['id']));if(_0x54252e&&_0x54252e[_0x3853('0x17')]&&_0x54252e[_0x3853('0x17')][_0x3853('0x18')]&&_0x54252e[_0x3853('0x17')]['transcripts'][_0x3853('0x19')]){_0x454e76['fileText']='';for(var _0x3cdbab=0x0;_0x3cdbab<_0x54252e['results']['transcripts'][_0x3853('0x19')];_0x3cdbab++){_0x454e76[_0x3853('0x10')]+=_0x54252e[_0x3853('0x17')][_0x3853('0x18')][_0x3cdbab][_0x3853('0x1a')]+'';}}return _0x5d1228['update'](_0x454e76);})[_0x3853('0xe')](function(){logger[_0x3853('0xa')](util['format'](_0x3853('0x1b'),_0x5d1228['id']));if(!_0x5d1228['tempSentiment']){throw new db['Sequelize']['ValidationError'](_0x3853('0x1c'));}if(!_0x1ddbfe[_0x3853('0x1d')]||!_0x1ddbfe[_0x3853('0x1e')]||!_0x1ddbfe['sentimentRegion']||!_0x1ddbfe[_0x3853('0x1f')]||!_0x1ddbfe[_0x3853('0x20')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x454e76[_0x3853('0x10')]){throw new Error(_0x3853('0x21'));}if(_0x1ddbfe[_0x3853('0x1e')]===_0x1927d8['id']){return _0x1927d8;}else{return db[_0x3853('0x22')][_0x3853('0x23')]({'where':{'id':_settings[_0x3853('0x1e')]}});}})[_0x3853('0xe')](function(_0x2bee7b){if(!_0x2bee7b){throw new db['Sequelize'][(_0x3853('0x24'))](_0x3853('0x25'));}if(!_0x2bee7b['data1']||!_0x2bee7b[_0x3853('0x26')]){throw new db['Sequelize'][(_0x3853('0x24'))](_0x3853('0x27'));}_0x330363=_0x2bee7b;logger[_0x3853('0xa')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5d1228['id']));return sentiment(_0x330363[_0x3853('0x28')],_0x330363['data2'],_0x1ddbfe[_0x3853('0x29')],_0x454e76[_0x3853('0x10')],_0x1ddbfe[_0x3853('0x1f')]);})[_0x3853('0xe')](function(_0x5ebb4e){logger[_0x3853('0xa')](util[_0x3853('0xb')](_0x3853('0x2a'),_0x5d1228['id']));return _0x5d1228[_0x3853('0x2b')]({'sentiment':_0x5ebb4e[_0x3853('0x2c')],'sPositive':_0x5ebb4e[_0x3853('0x2d')]['Positive'],'sNegative':_0x5ebb4e[_0x3853('0x2d')][_0x3853('0x2e')],'sMixed':_0x5ebb4e[_0x3853('0x2d')]['Mixed'],'sNeutral':_0x5ebb4e[_0x3853('0x2d')][_0x3853('0x2f')]});})['then'](function(){logger[_0x3853('0xa')](util[_0x3853('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5d1228['id']));_0x43611c();});case _0x3853('0x30'):return _0x5d1228[_0x3853('0x2b')]({'transcribeStatus':_0x3853('0x30'),'failureReason':_0x378431[_0x3853('0x11')][_0x3853('0x31')]})[_0x3853('0xe')](function(){logger[_0x3853('0xa')](util['format'](_0x3853('0x1b'),_0x5d1228['id']));_0x43611c();});default:logger[_0x3853('0xa')](util['format'](_0x3853('0x32'),_0x5d1228['id']));break;}}else{return BPromise[_0x3853('0x33')]()[_0x3853('0xe')](function(){if(!_0x5d1228[_0x3853('0x34')]){throw new db[(_0x3853('0x35'))]['ValidationError'](_0x3853('0x1c'));}if(!_0x1ddbfe[_0x3853('0x1d')]||!_0x1ddbfe[_0x3853('0x1e')]||!_0x1ddbfe[_0x3853('0x29')]||!_0x1ddbfe[_0x3853('0x1f')]||!_0x1ddbfe[_0x3853('0x20')]){throw new db['Sequelize'][(_0x3853('0x24'))](_0x3853('0x36'));}if(!_0x5d1228[_0x3853('0x10')]){throw new Error('Transcript\x20not\x20available');}if(_0x1ddbfe[_0x3853('0x1e')]===_0x1927d8['id']){return _0x1927d8;}else{return db[_0x3853('0x22')][_0x3853('0x23')]({'where':{'id':_settings[_0x3853('0x1e')]}});}})[_0x3853('0xe')](function(_0x5a1d18){if(!_0x5a1d18){throw new db[(_0x3853('0x35'))][(_0x3853('0x24'))](_0x3853('0x25'));}if(!_0x5a1d18[_0x3853('0x28')]||!_0x5a1d18['data2']){throw new db[(_0x3853('0x35'))][(_0x3853('0x24'))](_0x3853('0x27'));}_0x330363=_0x5a1d18;logger[_0x3853('0xa')](util[_0x3853('0xb')](_0x3853('0x37'),_0x5d1228['id']));return sentiment(_0x330363[_0x3853('0x28')],_0x330363[_0x3853('0x26')],_0x1ddbfe[_0x3853('0x29')],_0x5d1228[_0x3853('0x10')],_0x1ddbfe[_0x3853('0x1f')]);})['then'](function(_0xea2e6c){logger[_0x3853('0xa')](util[_0x3853('0xb')](_0x3853('0x2a'),_0x5d1228['id']));return _0x5d1228['update']({'sentiment':_0xea2e6c['Sentiment'],'sPositive':_0xea2e6c[_0x3853('0x2d')][_0x3853('0x38')],'sNegative':_0xea2e6c[_0x3853('0x2d')][_0x3853('0x2e')],'sMixed':_0xea2e6c['SentimentScore']['Mixed'],'sNeutral':_0xea2e6c[_0x3853('0x2d')][_0x3853('0x2f')],'transcribeStatus':'COMPLETED'});})[_0x3853('0xe')](function(){logger[_0x3853('0xa')](util[_0x3853('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5d1228['id']));_0x43611c();});}})[_0x3853('0x39')](function(_0x531e9e){if(_0x531e9e){if(!_0x531e9e[_0x3853('0x3a')]||_0x531e9e[_0x3853('0x3a')]!==_0x3853('0x3b')){logger[_0x3853('0x3c')](util[_0x3853('0xb')](_0x3853('0x3d'),_0x5d1228['id']),util[_0x3853('0x3e')](_0x531e9e,{'showHidden':![],'depth':null}));}}_0x43611c();});});}function checkTranscribe(){var _0x59a854;var _0x14c928;var _0x34db04;return db[_0x3853('0x3f')][_0x3853('0x40')]({'where':{'transcribeStatus':_0x3853('0x41')}})[_0x3853('0xe')](function(_0x2d47d3){if(!_0x2d47d3||!_0x2d47d3['length']){throw new db[(_0x3853('0x35'))][(_0x3853('0x24'))](_0x3853('0x42'));}_0x59a854=_0x2d47d3;return db[_0x3853('0x43')][_0x3853('0x23')]({'where':{'id':0x1}});})['then'](function(_0x2e8ad0){if(!_0x2e8ad0){throw new db['Sequelize'][(_0x3853('0x24'))](_0x3853('0x44'));}_0x14c928=_0x2e8ad0;if(!_0x14c928[_0x3853('0x5')]||!_0x14c928[_0x3853('0x45')]||!_0x14c928[_0x3853('0x46')]||!_0x14c928[_0x3853('0x1f')]||!_0x14c928[_0x3853('0x20')]){throw new db[(_0x3853('0x35'))][(_0x3853('0x24'))](_0x3853('0x47'));}return db[_0x3853('0x22')][_0x3853('0x23')]({'where':{'id':_0x14c928[_0x3853('0x45')]}});})[_0x3853('0xe')](function(_0x2dc19f){if(!_0x2dc19f){throw new db['Sequelize']['ValidationError'](_0x3853('0x25'));}if(!_0x2dc19f[_0x3853('0x28')]||!_0x2dc19f[_0x3853('0x26')]){throw new db[(_0x3853('0x35'))][(_0x3853('0x24'))](_0x3853('0x27'));}_0x34db04=_0x2dc19f;var _0x394aa5=[];_0x59a854[_0x3853('0x48')](function(_0x2ec836){_0x394aa5[_0x3853('0x49')](checkTranscribeJob(_0x2ec836,_0x14c928,_0x34db04));});return BPromise[_0x3853('0x4a')](_0x394aa5);})[_0x3853('0x39')](function(_0x2ab63d){if(_0x2ab63d){if(!_0x2ab63d[_0x3853('0x3a')]||_0x2ab63d[_0x3853('0x3a')]!==_0x3853('0x3b')){logger[_0x3853('0x3c')](util[_0x3853('0x3e')](_0x2ab63d,{'showHidden':![],'depth':null}));}}});}exports[_0x3853('0x4b')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};