f3a9c901b5b4156a99b445df93fc3dc35cd71bd6
[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 _0xd08f=['forEach','all','catch','error','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','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','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','sentiment','CloudProvider','COMPLETED','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xd08f,0x129));var _0xfd08=function(_0x2c5d4e,_0x6d5975){_0x2c5d4e=_0x2c5d4e-0x0;var _0xe27290=_0xd08f[_0x2c5d4e];return _0xe27290;};var _=require(_0xfd08('0x0'));var AWS=require('aws-sdk');var rp=require(_0xfd08('0x1'));var util=require(_0xfd08('0x2'));var BPromise=require(_0xfd08('0x3'));var db=require(_0xfd08('0x4'))['db'];var logger=require(_0xfd08('0x5'))('transcribe');function getTranscriptionJob(_0x31ea88,_0x315898,_0x42d040,_0x7505bb){return new Promise(function(_0xea1557,_0x3f113d){var _0x2d0cc0=new AWS[(_0xfd08('0x6'))]({'accessKeyId':_0x315898,'secretAccessKey':_0x31ea88,'region':_0x42d040});_0x2d0cc0[_0xfd08('0x7')]({'TranscriptionJobName':_0x7505bb},function(_0x3ab9cc,_0x4cad4b){if(_0x3ab9cc){return _0x3f113d(_0x3ab9cc);}else{return _0xea1557(_0x4cad4b);}});});}function sentiment(_0x327549,_0x34875f,_0x440052,_0x542687,_0x512f98){return new Promise(function(_0x365067,_0x257114){var _0x578aa8=new AWS['Comprehend']({'accessKeyId':_0x34875f,'secretAccessKey':_0x327549,'region':_0x440052});_0x578aa8[_0xfd08('0x8')]({'Text':_0x542687,'LanguageCode':_0x512f98[_0xfd08('0x9')](0x0,0x2)},function(_0x42a398,_0x3e3c01){if(_0x42a398){return _0x257114(_0x42a398);}else{return _0x365067(_0x3e3c01);}});});}function checkTranscribeJob(_0x4f0e3c,_0x35ac9d,_0x20f840){var _0x3c6f8e;return new BPromise(function(_0x183a93,_0x1d6aac){logger[_0xfd08('0xa')](util[_0xfd08('0xb')](_0xfd08('0xc'),_0x4f0e3c['id'],_0x4f0e3c[_0xfd08('0xd')]));return getTranscriptionJob(_0x20f840[_0xfd08('0xe')],_0x20f840[_0xfd08('0xf')],_0x35ac9d[_0xfd08('0x10')],_0x4f0e3c['transcribeName'])[_0xfd08('0x11')](function(_0x3ee205){logger[_0xfd08('0xa')](util[_0xfd08('0xb')](_0xfd08('0x12'),_0x4f0e3c['id'],_0x4f0e3c[_0xfd08('0xd')],_0x3ee205[_0xfd08('0x13')][_0xfd08('0x14')]));if(!_0x4f0e3c['fileText']){switch(_0x3ee205[_0xfd08('0x13')]['TranscriptionJobStatus']){case'COMPLETED':var _0x4b4131={'transcribeStatus':_0x3ee205['TranscriptionJob'][_0xfd08('0x14')],'fileUri':_0x3ee205['TranscriptionJob'][_0xfd08('0x15')][_0xfd08('0x16')]};logger[_0xfd08('0xa')](util['format'](_0xfd08('0x17'),_0x4f0e3c['id']));return rp({'uri':_0x3ee205[_0xfd08('0x13')][_0xfd08('0x15')][_0xfd08('0x16')],'json':!![]})[_0xfd08('0x11')](function(_0x54542f){logger[_0xfd08('0xa')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x4f0e3c['id']));if(_0x54542f&&_0x54542f['results']&&_0x54542f[_0xfd08('0x18')][_0xfd08('0x19')]&&_0x54542f[_0xfd08('0x18')]['transcripts'][_0xfd08('0x1a')]){_0x4b4131[_0xfd08('0x1b')]='';for(var _0x27bb6b=0x0;_0x27bb6b<_0x54542f[_0xfd08('0x18')][_0xfd08('0x19')][_0xfd08('0x1a')];_0x27bb6b++){_0x4b4131[_0xfd08('0x1b')]+=_0x54542f[_0xfd08('0x18')]['transcripts'][_0x27bb6b][_0xfd08('0x1c')]+'';}}return _0x4f0e3c[_0xfd08('0x1d')](_0x4b4131);})[_0xfd08('0x11')](function(){logger['info'](util['format'](_0xfd08('0x1e'),_0x4f0e3c['id']));if(!_0x4f0e3c['tempSentiment']){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x35ac9d['sentiment']||!_0x35ac9d[_0xfd08('0x21')]||!_0x35ac9d['sentimentRegion']||!_0x35ac9d[_0xfd08('0x22')]||!_0x35ac9d[_0xfd08('0x23')]){throw new db['Sequelize'][(_0xfd08('0x20'))](_0xfd08('0x24'));}if(!_0x4b4131[_0xfd08('0x1b')]){throw new Error(_0xfd08('0x25'));}if(_0x35ac9d[_0xfd08('0x21')]===_0x20f840['id']){return _0x20f840;}else{return db['CloudProvider'][_0xfd08('0x26')]({'where':{'id':_settings[_0xfd08('0x21')]}});}})[_0xfd08('0x11')](function(_0x5e4614){if(!_0x5e4614){throw new db['Sequelize'][(_0xfd08('0x20'))](_0xfd08('0x27'));}if(!_0x5e4614['data1']||!_0x5e4614['data2']){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))](_0xfd08('0x28'));}_0x3c6f8e=_0x5e4614;logger['info'](util['format'](_0xfd08('0x29'),_0x4f0e3c['id']));return sentiment(_0x3c6f8e[_0xfd08('0xe')],_0x3c6f8e[_0xfd08('0xf')],_0x35ac9d[_0xfd08('0x2a')],_0x4b4131[_0xfd08('0x1b')],_0x35ac9d[_0xfd08('0x22')]);})[_0xfd08('0x11')](function(_0x14e479){logger[_0xfd08('0xa')](util[_0xfd08('0xb')](_0xfd08('0x2b'),_0x4f0e3c['id']));return _0x4f0e3c[_0xfd08('0x1d')]({'sentiment':_0x14e479[_0xfd08('0x2c')],'sPositive':_0x14e479[_0xfd08('0x2d')]['Positive'],'sNegative':_0x14e479[_0xfd08('0x2d')][_0xfd08('0x2e')],'sMixed':_0x14e479['SentimentScore'][_0xfd08('0x2f')],'sNeutral':_0x14e479['SentimentScore'][_0xfd08('0x30')]});})[_0xfd08('0x11')](function(){logger['info'](util['format'](_0xfd08('0x1e'),_0x4f0e3c['id']));_0x183a93();});case _0xfd08('0x31'):return _0x4f0e3c[_0xfd08('0x1d')]({'transcribeStatus':_0xfd08('0x31'),'failureReason':_0x3ee205['TranscriptionJob'][_0xfd08('0x32')]})[_0xfd08('0x11')](function(){logger[_0xfd08('0xa')](util['format'](_0xfd08('0x1e'),_0x4f0e3c['id']));_0x183a93();});default:logger[_0xfd08('0xa')](util[_0xfd08('0xb')](_0xfd08('0x33'),_0x4f0e3c['id']));break;}}else{return BPromise['resolve']()[_0xfd08('0x11')](function(){if(!_0x4f0e3c[_0xfd08('0x34')]){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))](_0xfd08('0x35'));}if(!_0x35ac9d[_0xfd08('0x36')]||!_0x35ac9d[_0xfd08('0x21')]||!_0x35ac9d['sentimentRegion']||!_0x35ac9d[_0xfd08('0x22')]||!_0x35ac9d['bucket']){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))](_0xfd08('0x24'));}if(!_0x4f0e3c['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x35ac9d[_0xfd08('0x21')]===_0x20f840['id']){return _0x20f840;}else{return db[_0xfd08('0x37')][_0xfd08('0x26')]({'where':{'id':_settings[_0xfd08('0x21')]}});}})[_0xfd08('0x11')](function(_0x233a8f){if(!_0x233a8f){throw new db[(_0xfd08('0x1f'))]['ValidationError'](_0xfd08('0x27'));}if(!_0x233a8f[_0xfd08('0xe')]||!_0x233a8f['data2']){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))](_0xfd08('0x28'));}_0x3c6f8e=_0x233a8f;logger['info'](util[_0xfd08('0xb')](_0xfd08('0x29'),_0x4f0e3c['id']));return sentiment(_0x3c6f8e[_0xfd08('0xe')],_0x3c6f8e[_0xfd08('0xf')],_0x35ac9d[_0xfd08('0x2a')],_0x4f0e3c[_0xfd08('0x1b')],_0x35ac9d[_0xfd08('0x22')]);})['then'](function(_0x211e51){logger[_0xfd08('0xa')](util[_0xfd08('0xb')](_0xfd08('0x2b'),_0x4f0e3c['id']));return _0x4f0e3c['update']({'sentiment':_0x211e51[_0xfd08('0x2c')],'sPositive':_0x211e51[_0xfd08('0x2d')]['Positive'],'sNegative':_0x211e51[_0xfd08('0x2d')][_0xfd08('0x2e')],'sMixed':_0x211e51['SentimentScore'][_0xfd08('0x2f')],'sNeutral':_0x211e51['SentimentScore'][_0xfd08('0x30')],'transcribeStatus':_0xfd08('0x38')});})[_0xfd08('0x11')](function(){logger['info'](util['format'](_0xfd08('0x1e'),_0x4f0e3c['id']));_0x183a93();});}})['catch'](function(_0x393bbe){if(_0x393bbe){if(!_0x393bbe[_0xfd08('0x39')]||_0x393bbe[_0xfd08('0x39')]!==_0xfd08('0x3a')){logger['error'](util['format'](_0xfd08('0x3b'),_0x4f0e3c['id']),util[_0xfd08('0x3c')](_0x393bbe,{'showHidden':![],'depth':null}));}}_0x183a93();});});}function checkTranscribe(){var _0x5e93e3;var _0x2026bf;var _0xfa4d8f;return db['VoiceRecording'][_0xfd08('0x3d')]({'where':{'transcribeStatus':_0xfd08('0x3e')}})[_0xfd08('0x11')](function(_0x3a6a29){if(!_0x3a6a29||!_0x3a6a29[_0xfd08('0x1a')]){throw new db[(_0xfd08('0x1f'))]['ValidationError'](_0xfd08('0x3f'));}_0x5e93e3=_0x3a6a29;return db[_0xfd08('0x40')][_0xfd08('0x26')]({'where':{'id':0x1}});})[_0xfd08('0x11')](function(_0x368f08){if(!_0x368f08){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))]('Settings\x20not\x20available');}_0x2026bf=_0x368f08;if(!_0x2026bf[_0xfd08('0x41')]||!_0x2026bf[_0xfd08('0x42')]||!_0x2026bf[_0xfd08('0x10')]||!_0x2026bf[_0xfd08('0x22')]||!_0x2026bf[_0xfd08('0x23')]){throw new db['Sequelize']['ValidationError'](_0xfd08('0x43'));}return db['CloudProvider'][_0xfd08('0x26')]({'where':{'id':_0x2026bf[_0xfd08('0x42')]}});})['then'](function(_0x518f09){if(!_0x518f09){throw new db['Sequelize'][(_0xfd08('0x20'))](_0xfd08('0x27'));}if(!_0x518f09['data1']||!_0x518f09['data2']){throw new db[(_0xfd08('0x1f'))][(_0xfd08('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0xfa4d8f=_0x518f09;var _0x322b6a=[];_0x5e93e3[_0xfd08('0x44')](function(_0x44f51d){_0x322b6a['push'](checkTranscribeJob(_0x44f51d,_0x2026bf,_0xfa4d8f));});return BPromise[_0xfd08('0x45')](_0x322b6a);})[_0xfd08('0x46')](function(_0x8b594e){if(_0x8b594e){if(!_0x8b594e[_0xfd08('0x39')]||_0x8b594e[_0xfd08('0x39')]!==_0xfd08('0x3a')){logger[_0xfd08('0x47')](util[_0xfd08('0x3c')](_0x8b594e,{'showHidden':![],'depth':null}));}}});}exports[_0xfd08('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};