af20f9ad8a58c85cad0ade9654a60164d42b7b60
[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 _0x7e8e=['bucket','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','Sentiment','Negative','SentimentScore','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','language','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Positive','catch','name','error','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','Transcribe\x20not\x20configured','forEach','SequelizeValidationError','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion'];(function(_0x39532d,_0x44d48c){var _0x3efc86=function(_0x2ef3db){while(--_0x2ef3db){_0x39532d['push'](_0x39532d['shift']());}};_0x3efc86(++_0x44d48c);}(_0x7e8e,0xac));var _0xe7e8=function(_0x270a54,_0x307ff6){_0x270a54=_0x270a54-0x0;var _0x4d07d0=_0x7e8e[_0x270a54];return _0x4d07d0;};var _=require(_0xe7e8('0x0'));var AWS=require(_0xe7e8('0x1'));var rp=require('request-promise');var util=require(_0xe7e8('0x2'));var BPromise=require(_0xe7e8('0x3'));var db=require(_0xe7e8('0x4'))['db'];var logger=require(_0xe7e8('0x5'))('transcribe');function getTranscriptionJob(_0x9d79d3,_0x533258,_0x442bee,_0x39d164){return new Promise(function(_0xa272d1,_0x49035e){var _0x2a9335=new AWS[(_0xe7e8('0x6'))]({'accessKeyId':_0x533258,'secretAccessKey':_0x9d79d3,'region':_0x442bee});_0x2a9335['getTranscriptionJob']({'TranscriptionJobName':_0x39d164},function(_0x885f7c,_0x497377){if(_0x885f7c){return _0x49035e(_0x885f7c);}else{return _0xa272d1(_0x497377);}});});}function sentiment(_0x37287c,_0x458515,_0xff9fb7,_0xb32b02,_0xa6bed0){return new Promise(function(_0xf30f09,_0x2e680d){var _0x5e662d=new AWS['Comprehend']({'accessKeyId':_0x458515,'secretAccessKey':_0x37287c,'region':_0xff9fb7});_0x5e662d[_0xe7e8('0x7')]({'Text':_0xb32b02,'LanguageCode':_0xa6bed0[_0xe7e8('0x8')](0x0,0x2)},function(_0x74a87c,_0x517153){if(_0x74a87c){return _0x2e680d(_0x74a87c);}else{return _0xf30f09(_0x517153);}});});}function checkTranscribeJob(_0x57d028,_0x56eeb5,_0x4d0678){var _0x47af2d;return new BPromise(function(_0x5d3585,_0x6eddf2){logger['info'](util[_0xe7e8('0x9')](_0xe7e8('0xa'),_0x57d028['id'],_0x57d028[_0xe7e8('0xb')]));return getTranscriptionJob(_0x4d0678[_0xe7e8('0xc')],_0x4d0678[_0xe7e8('0xd')],_0x56eeb5[_0xe7e8('0xe')],_0x57d028[_0xe7e8('0xb')])[_0xe7e8('0xf')](function(_0x561dc4){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x11'),_0x57d028['id'],_0x57d028['transcribeName'],_0x561dc4[_0xe7e8('0x12')][_0xe7e8('0x13')]));if(!_0x57d028[_0xe7e8('0x14')]){switch(_0x561dc4[_0xe7e8('0x12')][_0xe7e8('0x13')]){case _0xe7e8('0x15'):var _0xc33987={'transcribeStatus':_0x561dc4[_0xe7e8('0x12')][_0xe7e8('0x13')],'fileUri':_0x561dc4[_0xe7e8('0x12')]['Transcript'][_0xe7e8('0x16')]};logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x17'),_0x57d028['id']));return rp({'uri':_0x561dc4[_0xe7e8('0x12')][_0xe7e8('0x18')][_0xe7e8('0x16')],'json':!![]})[_0xe7e8('0xf')](function(_0x4c5ff7){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x19'),_0x57d028['id']));if(_0x4c5ff7&&_0x4c5ff7[_0xe7e8('0x1a')]&&_0x4c5ff7['results'][_0xe7e8('0x1b')]&&_0x4c5ff7[_0xe7e8('0x1a')][_0xe7e8('0x1b')][_0xe7e8('0x1c')]){_0xc33987['fileText']='';for(var _0x3dd61a=0x0;_0x3dd61a<_0x4c5ff7[_0xe7e8('0x1a')]['transcripts'][_0xe7e8('0x1c')];_0x3dd61a++){_0xc33987[_0xe7e8('0x14')]+=_0x4c5ff7[_0xe7e8('0x1a')][_0xe7e8('0x1b')][_0x3dd61a][_0xe7e8('0x1d')]+'';}}return _0x57d028[_0xe7e8('0x1e')](_0xc33987);})['then'](function(){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x1f'),_0x57d028['id']));if(!_0x57d028[_0xe7e8('0x20')]){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x56eeb5[_0xe7e8('0x23')]||!_0x56eeb5[_0xe7e8('0x24')]||!_0x56eeb5[_0xe7e8('0x25')]||!_0x56eeb5['language']||!_0x56eeb5[_0xe7e8('0x26')]){throw new db[(_0xe7e8('0x21'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xc33987[_0xe7e8('0x14')]){throw new Error(_0xe7e8('0x27'));}if(_0x56eeb5[_0xe7e8('0x24')]===_0x4d0678['id']){return _0x4d0678;}else{return db[_0xe7e8('0x28')][_0xe7e8('0x29')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x3bc7fc){if(!_0x3bc7fc){throw new db['Sequelize'][(_0xe7e8('0x22'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3bc7fc[_0xe7e8('0xc')]||!_0x3bc7fc[_0xe7e8('0xd')]){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x2a'));}_0x47af2d=_0x3bc7fc;logger[_0xe7e8('0x10')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x57d028['id']));return sentiment(_0x47af2d['data1'],_0x47af2d[_0xe7e8('0xd')],_0x56eeb5[_0xe7e8('0x25')],_0xc33987[_0xe7e8('0x14')],_0x56eeb5['language']);})[_0xe7e8('0xf')](function(_0x469634){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x57d028['id']));return _0x57d028[_0xe7e8('0x1e')]({'sentiment':_0x469634[_0xe7e8('0x2b')],'sPositive':_0x469634['SentimentScore']['Positive'],'sNegative':_0x469634['SentimentScore'][_0xe7e8('0x2c')],'sMixed':_0x469634[_0xe7e8('0x2d')][_0xe7e8('0x2e')],'sNeutral':_0x469634[_0xe7e8('0x2d')][_0xe7e8('0x2f')]});})[_0xe7e8('0xf')](function(){logger['info'](util[_0xe7e8('0x9')](_0xe7e8('0x1f'),_0x57d028['id']));_0x5d3585();});case _0xe7e8('0x30'):return _0x57d028[_0xe7e8('0x1e')]({'transcribeStatus':_0xe7e8('0x30'),'failureReason':_0x561dc4[_0xe7e8('0x12')][_0xe7e8('0x31')]})[_0xe7e8('0xf')](function(){logger[_0xe7e8('0x10')](util['format'](_0xe7e8('0x1f'),_0x57d028['id']));_0x5d3585();});default:logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x32'),_0x57d028['id']));break;}}else{return BPromise[_0xe7e8('0x33')]()[_0xe7e8('0xf')](function(){if(!_0x57d028[_0xe7e8('0x20')]){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x34'));}if(!_0x56eeb5[_0xe7e8('0x23')]||!_0x56eeb5[_0xe7e8('0x24')]||!_0x56eeb5[_0xe7e8('0x25')]||!_0x56eeb5[_0xe7e8('0x35')]||!_0x56eeb5['bucket']){throw new db['Sequelize'][(_0xe7e8('0x22'))](_0xe7e8('0x36'));}if(!_0x57d028[_0xe7e8('0x14')]){throw new Error('Transcript\x20not\x20available');}if(_0x56eeb5[_0xe7e8('0x24')]===_0x4d0678['id']){return _0x4d0678;}else{return db[_0xe7e8('0x28')][_0xe7e8('0x29')]({'where':{'id':_settings[_0xe7e8('0x24')]}});}})[_0xe7e8('0xf')](function(_0x2a4210){if(!_0x2a4210){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x37'));}if(!_0x2a4210['data1']||!_0x2a4210[_0xe7e8('0xd')]){throw new db['Sequelize'][(_0xe7e8('0x22'))](_0xe7e8('0x2a'));}_0x47af2d=_0x2a4210;logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x38'),_0x57d028['id']));return sentiment(_0x47af2d[_0xe7e8('0xc')],_0x47af2d[_0xe7e8('0xd')],_0x56eeb5['sentimentRegion'],_0x57d028[_0xe7e8('0x14')],_0x56eeb5[_0xe7e8('0x35')]);})['then'](function(_0x1bd517){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')](_0xe7e8('0x39'),_0x57d028['id']));return _0x57d028[_0xe7e8('0x1e')]({'sentiment':_0x1bd517[_0xe7e8('0x2b')],'sPositive':_0x1bd517[_0xe7e8('0x2d')][_0xe7e8('0x3a')],'sNegative':_0x1bd517[_0xe7e8('0x2d')][_0xe7e8('0x2c')],'sMixed':_0x1bd517[_0xe7e8('0x2d')][_0xe7e8('0x2e')],'sNeutral':_0x1bd517[_0xe7e8('0x2d')]['Neutral'],'transcribeStatus':_0xe7e8('0x15')});})[_0xe7e8('0xf')](function(){logger[_0xe7e8('0x10')](util[_0xe7e8('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x57d028['id']));_0x5d3585();});}})[_0xe7e8('0x3b')](function(_0x14f3b2){if(_0x14f3b2){if(!_0x14f3b2[_0xe7e8('0x3c')]||_0x14f3b2[_0xe7e8('0x3c')]!=='SequelizeValidationError'){logger[_0xe7e8('0x3d')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x57d028['id']),util[_0xe7e8('0x3e')](_0x14f3b2,{'showHidden':![],'depth':null}));}}_0x5d3585();});});}function checkTranscribe(){var _0x2e3463;var _0x17a8af;var _0x4fcb76;return db['VoiceRecording'][_0xe7e8('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xe7e8('0xf')](function(_0x67231f){if(!_0x67231f||!_0x67231f['length']){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x40'));}_0x2e3463=_0x67231f;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0xe7e8('0xf')](function(_0x4d04a2){if(!_0x4d04a2){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))]('Settings\x20not\x20available');}_0x17a8af=_0x4d04a2;if(!_0x17a8af['transcribe']||!_0x17a8af[_0xe7e8('0x41')]||!_0x17a8af['transcribeRegion']||!_0x17a8af[_0xe7e8('0x35')]||!_0x17a8af[_0xe7e8('0x26')]){throw new db[(_0xe7e8('0x21'))]['ValidationError'](_0xe7e8('0x42'));}return db[_0xe7e8('0x28')]['findOne']({'where':{'id':_0x17a8af['transcribeAccountId']}});})[_0xe7e8('0xf')](function(_0x1e055a){if(!_0x1e055a){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x37'));}if(!_0x1e055a[_0xe7e8('0xc')]||!_0x1e055a[_0xe7e8('0xd')]){throw new db[(_0xe7e8('0x21'))][(_0xe7e8('0x22'))](_0xe7e8('0x2a'));}_0x4fcb76=_0x1e055a;var _0x5758ea=[];_0x2e3463[_0xe7e8('0x43')](function(_0x4dad7a){_0x5758ea['push'](checkTranscribeJob(_0x4dad7a,_0x17a8af,_0x4fcb76));});return BPromise['all'](_0x5758ea);})[_0xe7e8('0x3b')](function(_0x118d43){if(_0x118d43){if(!_0x118d43[_0xe7e8('0x3c')]||_0x118d43[_0xe7e8('0x3c')]!==_0xe7e8('0x44')){logger[_0xe7e8('0x3d')](util['inspect'](_0x118d43,{'showHidden':![],'depth':null}));}}});}exports[_0xe7e8('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};