Built motion from commit f7863d46.|2.5.41
[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 _0xbcff=['Neutral','FAILED','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','sentiment','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','push','SequelizeValidationError','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','substring','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','fileText','COMPLETED','Transcript','info','[RECORDING:%d]\x20Get\x20transcript','TranscriptFileUri','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','SentimentScore','Positive','Negative','Mixed'];(function(_0x28a246,_0x2fbcef){var _0xaee67f=function(_0x1d4bc7){while(--_0x1d4bc7){_0x28a246['push'](_0x28a246['shift']());}};_0xaee67f(++_0x2fbcef);}(_0xbcff,0x12e));var _0xfbcf=function(_0x435154,_0xdb73c0){_0x435154=_0x435154-0x0;var _0x59bf04=_0xbcff[_0x435154];return _0x59bf04;};var _=require(_0xfbcf('0x0'));var AWS=require(_0xfbcf('0x1'));var rp=require(_0xfbcf('0x2'));var util=require('util');var BPromise=require(_0xfbcf('0x3'));var db=require(_0xfbcf('0x4'))['db'];var logger=require(_0xfbcf('0x5'))('transcribe');function getTranscriptionJob(_0xec50b1,_0x24bf8a,_0x51d140,_0x4b7c0c){return new Promise(function(_0x2d8044,_0x3b30c8){var _0x4b87de=new AWS[(_0xfbcf('0x6'))]({'accessKeyId':_0x24bf8a,'secretAccessKey':_0xec50b1,'region':_0x51d140});_0x4b87de[_0xfbcf('0x7')]({'TranscriptionJobName':_0x4b7c0c},function(_0x520d5f,_0x1481ba){if(_0x520d5f){return _0x3b30c8(_0x520d5f);}else{return _0x2d8044(_0x1481ba);}});});}function sentiment(_0x5d6500,_0x23296d,_0xc63f23,_0x5eb1b8,_0x59fdda){return new Promise(function(_0x307226,_0x3a960d){var _0x1fbe45=new AWS[(_0xfbcf('0x8'))]({'accessKeyId':_0x23296d,'secretAccessKey':_0x5d6500,'region':_0xc63f23});_0x1fbe45['detectSentiment']({'Text':_0x5eb1b8,'LanguageCode':_0x59fdda[_0xfbcf('0x9')](0x0,0x2)},function(_0x26ef99,_0x280145){if(_0x26ef99){return _0x3a960d(_0x26ef99);}else{return _0x307226(_0x280145);}});});}function checkTranscribeJob(_0x3e03b3,_0x223575,_0x195064){var _0x1c7e87;return new BPromise(function(_0x4b9fa0,_0x45bb07){logger['info'](util[_0xfbcf('0xa')](_0xfbcf('0xb'),_0x3e03b3['id'],_0x3e03b3[_0xfbcf('0xc')]));return getTranscriptionJob(_0x195064[_0xfbcf('0xd')],_0x195064[_0xfbcf('0xe')],_0x223575[_0xfbcf('0xf')],_0x3e03b3[_0xfbcf('0xc')])[_0xfbcf('0x10')](function(_0x27f2f1){logger['info'](util[_0xfbcf('0xa')](_0xfbcf('0x11'),_0x3e03b3['id'],_0x3e03b3[_0xfbcf('0xc')],_0x27f2f1[_0xfbcf('0x12')][_0xfbcf('0x13')]));if(!_0x3e03b3[_0xfbcf('0x14')]){switch(_0x27f2f1[_0xfbcf('0x12')][_0xfbcf('0x13')]){case _0xfbcf('0x15'):var _0xef5fcf={'transcribeStatus':_0x27f2f1[_0xfbcf('0x12')]['TranscriptionJobStatus'],'fileUri':_0x27f2f1[_0xfbcf('0x12')][_0xfbcf('0x16')]['TranscriptFileUri']};logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')](_0xfbcf('0x18'),_0x3e03b3['id']));return rp({'uri':_0x27f2f1[_0xfbcf('0x12')][_0xfbcf('0x16')][_0xfbcf('0x19')],'json':!![]})[_0xfbcf('0x10')](function(_0x5b2c76){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x3e03b3['id']));if(_0x5b2c76&&_0x5b2c76[_0xfbcf('0x1a')]&&_0x5b2c76[_0xfbcf('0x1a')]['transcripts']&&_0x5b2c76[_0xfbcf('0x1a')][_0xfbcf('0x1b')][_0xfbcf('0x1c')]){_0xef5fcf[_0xfbcf('0x14')]='';for(var _0x19c85a=0x0;_0x19c85a<_0x5b2c76['results'][_0xfbcf('0x1b')][_0xfbcf('0x1c')];_0x19c85a++){_0xef5fcf[_0xfbcf('0x14')]+=_0x5b2c76['results']['transcripts'][_0x19c85a][_0xfbcf('0x1d')]+'';}}return _0x3e03b3[_0xfbcf('0x1e')](_0xef5fcf);})['then'](function(){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3e03b3['id']));if(!_0x3e03b3[_0xfbcf('0x1f')]){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x223575['sentiment']||!_0x223575[_0xfbcf('0x22')]||!_0x223575[_0xfbcf('0x23')]||!_0x223575[_0xfbcf('0x24')]||!_0x223575[_0xfbcf('0x25')]){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x26'));}if(!_0xef5fcf['fileText']){throw new Error(_0xfbcf('0x27'));}if(_0x223575[_0xfbcf('0x22')]===_0x195064['id']){return _0x195064;}else{return db['CloudProvider'][_0xfbcf('0x28')]({'where':{'id':_settings[_0xfbcf('0x22')]}});}})[_0xfbcf('0x10')](function(_0x44cfb2){if(!_0x44cfb2){throw new db['Sequelize'][(_0xfbcf('0x21'))](_0xfbcf('0x29'));}if(!_0x44cfb2['data1']||!_0x44cfb2[_0xfbcf('0xe')]){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x2a'));}_0x1c7e87=_0x44cfb2;logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')](_0xfbcf('0x2b'),_0x3e03b3['id']));return sentiment(_0x1c7e87[_0xfbcf('0xd')],_0x1c7e87[_0xfbcf('0xe')],_0x223575['sentimentRegion'],_0xef5fcf[_0xfbcf('0x14')],_0x223575['language']);})[_0xfbcf('0x10')](function(_0x151f3f){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x3e03b3['id']));return _0x3e03b3[_0xfbcf('0x1e')]({'sentiment':_0x151f3f['Sentiment'],'sPositive':_0x151f3f[_0xfbcf('0x2c')][_0xfbcf('0x2d')],'sNegative':_0x151f3f[_0xfbcf('0x2c')][_0xfbcf('0x2e')],'sMixed':_0x151f3f[_0xfbcf('0x2c')][_0xfbcf('0x2f')],'sNeutral':_0x151f3f[_0xfbcf('0x2c')][_0xfbcf('0x30')]});})[_0xfbcf('0x10')](function(){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3e03b3['id']));_0x4b9fa0();});case _0xfbcf('0x31'):return _0x3e03b3[_0xfbcf('0x1e')]({'transcribeStatus':_0xfbcf('0x31'),'failureReason':_0x27f2f1[_0xfbcf('0x12')]['FailureReason']})[_0xfbcf('0x10')](function(){logger[_0xfbcf('0x17')](util['format'](_0xfbcf('0x32'),_0x3e03b3['id']));_0x4b9fa0();});default:logger['info'](util['format'](_0xfbcf('0x33'),_0x3e03b3['id']));break;}}else{return BPromise[_0xfbcf('0x34')]()['then'](function(){if(!_0x3e03b3[_0xfbcf('0x1f')]){throw new db['Sequelize'][(_0xfbcf('0x21'))](_0xfbcf('0x35'));}if(!_0x223575[_0xfbcf('0x36')]||!_0x223575[_0xfbcf('0x22')]||!_0x223575[_0xfbcf('0x23')]||!_0x223575[_0xfbcf('0x24')]||!_0x223575[_0xfbcf('0x25')]){throw new db[(_0xfbcf('0x20'))]['ValidationError'](_0xfbcf('0x26'));}if(!_0x3e03b3['fileText']){throw new Error(_0xfbcf('0x27'));}if(_0x223575[_0xfbcf('0x22')]===_0x195064['id']){return _0x195064;}else{return db['CloudProvider'][_0xfbcf('0x28')]({'where':{'id':_settings[_0xfbcf('0x22')]}});}})[_0xfbcf('0x10')](function(_0x5f16f0){if(!_0x5f16f0){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5f16f0['data1']||!_0x5f16f0['data2']){throw new db['Sequelize'][(_0xfbcf('0x21'))](_0xfbcf('0x2a'));}_0x1c7e87=_0x5f16f0;logger['info'](util[_0xfbcf('0xa')](_0xfbcf('0x2b'),_0x3e03b3['id']));return sentiment(_0x1c7e87[_0xfbcf('0xd')],_0x1c7e87[_0xfbcf('0xe')],_0x223575['sentimentRegion'],_0x3e03b3['fileText'],_0x223575[_0xfbcf('0x24')]);})[_0xfbcf('0x10')](function(_0x5b0293){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')](_0xfbcf('0x37'),_0x3e03b3['id']));return _0x3e03b3['update']({'sentiment':_0x5b0293['Sentiment'],'sPositive':_0x5b0293[_0xfbcf('0x2c')]['Positive'],'sNegative':_0x5b0293[_0xfbcf('0x2c')][_0xfbcf('0x2e')],'sMixed':_0x5b0293[_0xfbcf('0x2c')][_0xfbcf('0x2f')],'sNeutral':_0x5b0293[_0xfbcf('0x2c')]['Neutral'],'transcribeStatus':_0xfbcf('0x15')});})[_0xfbcf('0x10')](function(){logger[_0xfbcf('0x17')](util[_0xfbcf('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3e03b3['id']));_0x4b9fa0();});}})[_0xfbcf('0x38')](function(_0x51e732){if(_0x51e732){if(!_0x51e732[_0xfbcf('0x39')]||_0x51e732[_0xfbcf('0x39')]!=='SequelizeValidationError'){logger[_0xfbcf('0x3a')](util[_0xfbcf('0xa')](_0xfbcf('0x3b'),_0x3e03b3['id']),util[_0xfbcf('0x3c')](_0x51e732,{'showHidden':![],'depth':null}));}}_0x4b9fa0();});});}function checkTranscribe(){var _0x47a399;var _0x399ceb;var _0x12814b;return db[_0xfbcf('0x3d')][_0xfbcf('0x3e')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xfbcf('0x10')](function(_0xa2aa9f){if(!_0xa2aa9f||!_0xa2aa9f[_0xfbcf('0x1c')]){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x3f'));}_0x47a399=_0xa2aa9f;return db[_0xfbcf('0x40')][_0xfbcf('0x28')]({'where':{'id':0x1}});})['then'](function(_0x51d8b3){if(!_0x51d8b3){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x41'));}_0x399ceb=_0x51d8b3;if(!_0x399ceb['transcribe']||!_0x399ceb['transcribeAccountId']||!_0x399ceb[_0xfbcf('0xf')]||!_0x399ceb['language']||!_0x399ceb['bucket']){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0xfbcf('0x28')]({'where':{'id':_0x399ceb[_0xfbcf('0x42')]}});})[_0xfbcf('0x10')](function(_0x5092c0){if(!_0x5092c0){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x29'));}if(!_0x5092c0['data1']||!_0x5092c0[_0xfbcf('0xe')]){throw new db[(_0xfbcf('0x20'))][(_0xfbcf('0x21'))](_0xfbcf('0x2a'));}_0x12814b=_0x5092c0;var _0x52b58c=[];_0x47a399['forEach'](function(_0x4b0d3e){_0x52b58c[_0xfbcf('0x43')](checkTranscribeJob(_0x4b0d3e,_0x399ceb,_0x12814b));});return BPromise['all'](_0x52b58c);})[_0xfbcf('0x38')](function(_0x69883e){if(_0x69883e){if(!_0x69883e[_0xfbcf('0x39')]||_0x69883e['name']!==_0xfbcf('0x44')){logger[_0xfbcf('0x3a')](util[_0xfbcf('0x3c')](_0x69883e,{'showHidden':![],'depth':null}));}}});}exports[_0xfbcf('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};